0

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

我正在使用这个 Maven 依赖项

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

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

提前致谢。

4

1 回答 1

4

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

gcloud secrets add-iam-policy-binding "my-secret" \
  --project "project-b"
  --member "serviceAccount:my-service-account@project-a.iam.gserviceaccount.com"

顺便说一句,客户端库不需要JSON服务帐户密钥的路径。它接受一个,但您可以通过多个路径提供身份验证,包括应用程序默认凭据(首选)。

于 2020-12-02T14:45:33.690 回答