You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Maven集成Google Secret Manager如何通过代码使用密钥文件认证

Java Maven项目集成Google Secret Manager代码级认证方案

服务账号密钥文件存储建议

  • 本地开发阶段:将service-account-file.json存放在项目src/main/resources/目录下,必须把该文件名加入.gitignore规则,严禁将密钥文件提交到代码版本库,避免凭证泄露。
  • 部署到GCP自有服务场景:不需要本地存储密钥文件,直接给运行实例(云服务器、容器集群、Serverless服务等)绑定对应权限的服务账号,Google官方SDK会自动获取临时访问凭证,安全风险最低。
  • 部署到非GCP环境场景:将密钥文件存放在服务器非Web对外可访问的安全目录,通过服务器级环境变量、独立配置中心注入文件绝对路径,不要把密钥文件打包进项目构建产物(Jar/War包)中。

纯Java代码实现认证(等效GOOGLE_APPLICATION_CREDENTIALS环境变量配置效果)

首先在项目pom.xml中引入Google Secret Manager官方SDK依赖:

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

不需要在操作系统层面配置GOOGLE_APPLICATION_CREDENTIALS全局环境变量,直接通过SDK提供的凭证加载类手动读取密钥文件,构建带认证信息的客户端实例即可,实现代码如下:

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
import com.google.cloud.secretmanager.v1.SecretManagerServiceSettings;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SecretManagerClientFactory {

    public static SecretManagerServiceClient buildClient() throws IOException {
        GoogleCredentials credentials;
        // 本地开发场景:读取resources目录下的密钥文件
        try (InputStream credentialStream = SecretManagerClientFactory.class
                .getClassLoader()
                .getResourceAsStream("service-account-file.json")) {
            credentials = GoogleCredentials.fromStream(credentialStream);
        }

        // 非GCP生产环境场景:替换上面的流读取逻辑,读取服务器安全目录下的密钥文件即可
        // try (InputStream credentialStream = new FileInputStream("/data/secure/service-account-file.json")) {
        //     credentials = GoogleCredentials.fromStream(credentialStream);
        // }

        SecretManagerServiceSettings serviceSettings = SecretManagerServiceSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
                .build();
        return SecretManagerServiceClient.create(serviceSettings);
    }
}

提示:如果服务部署在GCP生态内,不需要手动加载密钥文件,直接调用SecretManagerServiceClient.create()即可自动完成认证,全程无需管理静态密钥文件。

内容的提问来源于stack exchange,提问作者Kaustubh Dwivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:48:10