如何使用 Google 服务验证 Docker 容器
How to authenticate Docker container with Google Service
Docker 容器运行 Python 服务器并将消息发布到 Google Pubsub
消息服务。
为了让这个容器能够使用 Google Pubsub
服务,我设置了 GOOGLE_APPLICATION_CREDENTIALS
环境变量,将其指向我在创建 Service Account Key
后下载的 service_key.json
文件打开 Google Cloud Console
然后导航到:
API's & Services
> Credentials
> Create Credentials
> Service Account Key
。
需要将service_key.json
文件复制到容器的本地磁盘,否则无法读取。
虽然这种方法有效并且 Docker 容器现在被授权使用 Google Pubsub 服务和 service_key.json
文件凭证,但我认为这不是一个非常安全的解决方案,因为 service_key.json
文件现在与容器本身一起托管在云中。
有没有办法在不将 service_key.json
文件复制到其本地磁盘的情况下使用 Google 服务凭据授权 Docker 容器?
你在做这样的事吗?
docker run ...
--volume=${LOCAL_PATH}/secrets/service_key.json:/secrets/key.json \
--env=GOOGLE_APPLICATION_CREDENTIALS=/service/key.json \
mycontainerimage
NB 重新映射 service_key.json
--> key.json
为清楚起见
这没有解决将密钥安装在主机 运行 容器上的需要,但它确实解决了将密钥 放入 容器中的需要。
只要您可以保护主机 (!),密钥就相当安全。您应该包括一个过程,您也可以通过该过程频繁轮换密钥。这需要在(重新)分发密钥方面做更多工作,但它降低了丢失密钥的风险。
使用密钥,您总是必须保护密钥,同时将其暴露在可能不安全的位置。
如果您的容器 运行 在 Google 云平台计算服务(App Engine、Compute、Kubernetes,运行)上,应用程序默认凭据可以使用资源的服务帐户(没有钥匙)。
对于其他类型的凭据(据我所知不是 Google 服务帐户),您还可以考虑密钥管理服务,包括 Cloud KMS、HashiCorp Vault。
基于那里的文档
https://googleapis.dev/ruby/google-cloud-pubsub/latest/file.AUTHENTICATION.html
将 json 文件的内容设置为该变量
PUBSUB_CREDENTIALS - Path to JSON file, or JSON contents
其他 POST 可能会帮助您解决 multi-line 问题,当您尝试使用 docker 运行 进行设置时(此 post 引用“docker构建”,但同样的想法)
Docker 容器运行 Python 服务器并将消息发布到 Google Pubsub
消息服务。
为了让这个容器能够使用 Google Pubsub
服务,我设置了 GOOGLE_APPLICATION_CREDENTIALS
环境变量,将其指向我在创建 Service Account Key
后下载的 service_key.json
文件打开 Google Cloud Console
然后导航到:
API's & Services
> Credentials
> Create Credentials
> Service Account Key
。
需要将service_key.json
文件复制到容器的本地磁盘,否则无法读取。
虽然这种方法有效并且 Docker 容器现在被授权使用 Google Pubsub 服务和 service_key.json
文件凭证,但我认为这不是一个非常安全的解决方案,因为 service_key.json
文件现在与容器本身一起托管在云中。
有没有办法在不将 service_key.json
文件复制到其本地磁盘的情况下使用 Google 服务凭据授权 Docker 容器?
你在做这样的事吗?
docker run ...
--volume=${LOCAL_PATH}/secrets/service_key.json:/secrets/key.json \
--env=GOOGLE_APPLICATION_CREDENTIALS=/service/key.json \
mycontainerimage
NB 重新映射 service_key.json
--> key.json
为清楚起见
这没有解决将密钥安装在主机 运行 容器上的需要,但它确实解决了将密钥 放入 容器中的需要。
只要您可以保护主机 (!),密钥就相当安全。您应该包括一个过程,您也可以通过该过程频繁轮换密钥。这需要在(重新)分发密钥方面做更多工作,但它降低了丢失密钥的风险。
使用密钥,您总是必须保护密钥,同时将其暴露在可能不安全的位置。
如果您的容器 运行 在 Google 云平台计算服务(App Engine、Compute、Kubernetes,运行)上,应用程序默认凭据可以使用资源的服务帐户(没有钥匙)。
对于其他类型的凭据(据我所知不是 Google 服务帐户),您还可以考虑密钥管理服务,包括 Cloud KMS、HashiCorp Vault。
基于那里的文档
https://googleapis.dev/ruby/google-cloud-pubsub/latest/file.AUTHENTICATION.html
将 json 文件的内容设置为该变量
PUBSUB_CREDENTIALS - Path to JSON file, or JSON contents
其他 POST 可能会帮助您解决 multi-line 问题,当您尝试使用 docker 运行 进行设置时(此 post 引用“docker构建”,但同样的想法)