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

Pri*_*yan 1 java google-cloud-platform google-secret-manager

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

我正在使用这个 Maven 依赖项

  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-secretmanager</artifactId>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

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

提前致谢。

set*_*rgo 6

与大多数 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"
Run Code Online (Sandbox Code Playgroud)

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