如何使用我的 gpg 密钥解密 docker 容器中的文件而不将其保存在图像中?
How do I use my gpg key to decrypt a file in a docker container without saving it in the image?
我正在使用气流和 dockerOperator 连接到 docker 守护进程并启动容器。
作为我的管道的一部分,此容器需要使用 gpg 解密文件。
如果我在 docker 构建期间复制 gpg 密钥,那么它将永远与图像分开,这感觉不安全吗?
我调查了是否可以将密钥放入环境变量并以这种方式传递它,即通过 dockers -e VAR:VAL
语法。我能想到的唯一其他方法是将我的本地 .gnupg
文件挂载到容器中并使用它,但这仅在我在本地计算机上时有效。我希望能够在某个阶段迁移到 ECS 或 kubernetes。
你说得对,在 docker 构建期间添加密钥是不安全的。
环境变量是一种有效的方法。如果您以后使用 kubernetes,您可以安全地将您的密钥作为 secret 保存在 kubernetes 中。部署时,您可以通过 env 向容器提供秘密。
您还可以通过使用卷从 kubernetes 秘密提供秘密作为文件,并在本地安装卷并提供密钥文件。
这些是 kubernetes 秘密的官方文档:https://kubernetes.io/docs/concepts/configuration/secret/
我对ECS不熟悉,但肯定有类似的方法。
我正在使用气流和 dockerOperator 连接到 docker 守护进程并启动容器。
作为我的管道的一部分,此容器需要使用 gpg 解密文件。
如果我在 docker 构建期间复制 gpg 密钥,那么它将永远与图像分开,这感觉不安全吗?
我调查了是否可以将密钥放入环境变量并以这种方式传递它,即通过 dockers -e VAR:VAL
语法。我能想到的唯一其他方法是将我的本地 .gnupg
文件挂载到容器中并使用它,但这仅在我在本地计算机上时有效。我希望能够在某个阶段迁移到 ECS 或 kubernetes。
你说得对,在 docker 构建期间添加密钥是不安全的。
环境变量是一种有效的方法。如果您以后使用 kubernetes,您可以安全地将您的密钥作为 secret 保存在 kubernetes 中。部署时,您可以通过 env 向容器提供秘密。
您还可以通过使用卷从 kubernetes 秘密提供秘密作为文件,并在本地安装卷并提供密钥文件。
这些是 kubernetes 秘密的官方文档:https://kubernetes.io/docs/concepts/configuration/secret/
我对ECS不熟悉,但肯定有类似的方法。