在 java 中使用 google-cloud-secretmanager 客户端库访问多个 google 云项目的 Secret Manager

Access Secret Manager of multiple google cloud projects using google-cloud-secretmanager client library in java

我使用 GCP Secret Manager 通过 google-cloud-secretmanager 客户端库 (Java) 存储密码。客户端库需要环境变量中 gcp 项目的服务帐户密钥 (json) 文件路径。我可以为单个项目做到这一点,但是当我尝试访问多个 GCP 项目的秘密管理器时,我不知道如何在环境变量中为不同的项目设置密钥。在环境中设置密钥时需要帮助,或者有没有办法使用 java 代码进行设置。

我正在使用这个 Maven 依赖项

  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-secretmanager</artifactId>
  </dependency>

https://cloud.google.com/secret-manager/docs/reference/libraries

提前致谢。

与大多数 Google 云服务一样,Google Secret Manager 支持跨项目权限。您可以通过向服务帐户应用 IAM 权限来授予您的服务帐户访问其他项目中的机密的权限。即使服务帐户位于 project-a,它仍然可以被授予访问 project-b:

中的 Secret Manager 机密的权限
gcloud secrets add-iam-policy-binding "my-secret" \
  --project "project-b"
  --member "serviceAccount:my-service-account@project-a.iam.gserviceaccount.com"

顺便说一句,客户端库不要求 JSON 服务帐户密钥的路径。它接受一个,但您可以通过多个路径提供身份验证,包括 Application Default Credentials(首选)。