alp*_*ric 3 python docker google-cloud-platform google-cloud-pubsub
Docker容器运行Python服务器并将消息发布到Google Pubsub消息服务。
为了使该容器能够使用Google Pubsub服务,我设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,将其指向service_key.json我在创建后下载的文件,方法是Service Account Key打开Google Cloud Console然后导航到:
API's & Services> Credentials> Create Credentials> Service Account Key。
该service_key.json文件需要复制到容器的本地磁盘,否则将无法读取它。
虽然这种方法有效,并且 Docker 容器现在被授权使用具有service_key.json文件凭据的 Google Pubsub 服务,但我认为这不是一个非常安全的解决方案,因为文件service_key.json现在与容器本身一起托管在云上。
有没有办法使用 Google 服务凭据授权 Docker 容器,而无需将service_key.json文件复制到其本地磁盘?
你在做这样的事情吗?
docker run ...
--volume=${LOCAL_PATH}/secrets/service_key.json:/secrets/key.json \
--env=GOOGLE_APPLICATION_CREDENTIALS=/service/key.json \
mycontainerimage
Run Code Online (Sandbox Code Playgroud)
NB重新映射service_key.json-->key.json为了清楚地表达意图
这并没有解决将密钥安装在运行容器的主机上的需要,但它确实解决了将密钥放入容器中的需要。
只要您能够保护主机(!),密钥就会相当安全。您应该包括一个经常轮换密钥的过程。这需要在(重新)分发密钥方面进行更多工作,但它降低了丢失密钥的风险。
使用密钥时,您始终必须保护密钥,同时将其暴露在可能不安全的位置。
如果您的容器在 Google Cloud Platform 计算服务(App Engine、Compute、Kubernetes、Run)上运行,则应用程序默认凭据可以使用资源的服务帐户(无密钥)。
对于其他类型的凭据(据我所知,不是 Google 服务帐户),您还可以考虑密钥管理服务,包括 Cloud KMS、HashiCorp Vault。
| 归档时间: |
|
| 查看次数: |
4205 次 |
| 最近记录: |