python-3.x - 在 Docker 镜像中安全地存储哈希

标签 python-3.x security docker encryption

我正在使用 Docker 构建一系列应用程序,并希望安全地存储我的 api key 、数据库访问 key 等。为了使我的应用程序更安全,我将我的配置文件存储在密码保护、压缩、卷设置为只读。我可以使用 ZipFile python 包来访问它以读取配置,包括使用密码。

但是,出于显而易见的原因,我不想将密码显式存储在图像中。我玩过passlib为密码生成哈希值并进行比较。虽然我可以将散列存储在图像中的文件中,但生成我想做的散列而不将值存储在图像的图层中。

这样做是个好习惯吗? Dockerfile我想到的是如下所示:

FROM my_custom_python_image:3.6

WORKDIR /app

COPY . /app

RUN python -m pip install -r requirements.txt

RUN python create_hash.py --token 'mysecret' >> myhash.txt

# The rest of the file here

create_hash.py看起来像:
from passlib.hash import pbkdf2_sha256
import argparse

# Logic to get my argparse token flag 

hash = pbkdf2_sha256.encrypt(args.token, rounds=200000, salt_size=16)
print(hash)

如果我的 Dockerfile不存储在图像中并且文件系统是只读的,是我放入--token的值存储?如果是的话,这里有什么好的解决方法?同样,最终目标是使用 context.verify(user_token, hash)通过user_tokenZipFile并且不在任何地方明确存储密码

最佳答案

您应该将这些值作为运行时部署的一部分传递,而不是构建时间。

它使您的应用程序更灵活(因为它可以在不同的环境中使用,只需更改参数)并且更安全,因为 key 根本不存在。

在部署期间安全地传递值更多地取决于部署的环境和功能

关于python-3.x - 在 Docker 镜像中安全地存储哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215343/

相关文章:

python - 将列表的相似元素合并到一个新列表中

Android M - 类似钥匙串(keychain)的用户名/密码存储

docker - 如何使用 docker-compose 在 docker/container 之外公开容器端口?

docker - 简单的 flask 服务在 docker 容器外不响应

python - 如何有效地使用 CountVectorizer 获取目录中所有文件的 ngram 计数?

python - 将类型 Int64Index 转换为 Python 中的整数索引

python - 如何从字符串的排列列表中分离元素?

security - AWS 限制从云端到负载均衡器的访问

asp.net - 我应该为 ASP.NET 使用什么帐户?

Docker添加当前目录中的每个文件