在 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(首选)。
我使用 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
:
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(首选)。