在 Docker 中为多个项目配置“GOOGLE_APPLICATION_CREDENTIALS”

问题描述 投票:0回答:1

我正在开发一个包含三个 Google Cloud 项目(A、B 和 C)的项目,每个项目都部署了云功能。我已经在 Docker 容器中设置了

GOOGLE_APPLICATION_CREDENTIALS
,但我不确定如何配置它以访问所有三个项目的函数(和数据库)而不使用单独的密钥。

有没有办法实现此设置并处理同一 Docker 环境中多个项目的身份验证,而不依赖于每个项目的单独密钥?任何见解或最佳实践将不胜感激!

docker google-cloud-platform google-cloud-functions
1个回答
0
投票

正如 @DazWilkin 提到的,服务帐户和工作负载身份联合是生产环境的最佳解决方案。

仅使用服务帐户

1。可以创建一个服务帐户并授予访问所有三种云服务(A、B 和 C)所需的权限。然后,可以向服务帐户授予其单独项目中每个函数所需的适当角色(例如 Roles/cloud Functions.invoker 和 Roles/cloud sql.client)或 IAM 策略。您可以使用 gcloud CLI 或 Google Cloud Console 来执行此操作。请参阅 Mike Elsmore 的 cloudquery blog 了解更多详细信息。

2。接下来,使用 Google Cloud Secret Manager 等专用工具将服务帐户密钥文件安全地存储在 Docker 容器内。它将支持安全的秘密管理。

3. 利用 Docker 容器中的服务帐户凭据来验证身份并获取对项目功能的访问权限。您可以将秘密安装在容器内或使用环境变量来访问积分。

请参阅此官方doc,了解有关服务帐户身份验证角色的更多信息,并参阅此官方doc,了解授予服务帐户对项目的访问权限

同时使用服务帐户和工作负载身份联合 :

如果您的容器在 GCP 上运行并且有权访问工作负载身份,则设置服务帐户和 IAM 策略是自动的。请参阅类似的 GCP 社区问题e,为 2 个 google 项目使用 kubernetes 配置工作负载身份联合,了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.