Skip to main content
 首页 » 编程设计

python之如何使用 Google Service 验证 Docker 容器

2024年08月13日35softidea

Docker 容器运行 Python 服务器并将消息发布到 Google Pubsub 消息服务。

为了让这个容器能够使用 Google Pubsub 服务,我设置了 GOOGLE_APPLICATION_CREDENTIALS 环境变量,将其指向 service_key.json 文件我通过打开 Google Cloud Console 创建了一个 Service Account Key 然后导航到:

下载了

API 和服务 > Credentials > Create Credentials > Service Account Key。

service_key.json 文件需要复制到容器的本地磁盘,否则将无法读取。

虽然这种方法有效并且 Docker 容器现在被授权使用带有 service_key.json 文件凭据的 Google Pubsub 服务,但我认为这不是一个非常安全的解决方案,因为 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 

注意 重新映射 service_key.json --> key.json 以明确意图

这没有解决将 key 挂载到运行容器的主机上的需要,但它确实解决了将 key 放入容器中的需要。

只要您可以保护主机 (!), key 就相当安全。您应该包括一个过程,您也可以通过该过程频繁轮换 key 。这需要在(重新)分发 key 方面做更多工作,但它降低了丢失 key 的风险。

使用 key 时,您总是需要保护 key ,同时将其暴露在可能不安全的位置。

如果您的容器在 Google Cloud Platform 计算服务(App Engine、Compute、Kubernetes、Run)上运行,应用程序默认凭据可以使用资源的服务帐户(无 key )。

对于其他类型的凭据(据我所知不是 Google 服务帐户),您还可以考虑使用 key 管理服务,包括 Cloud KMS、HashiCorp Vault。