本地部署应用访问Google Cloud Secret Manager的方案咨询
Secret Manager API是否支持API Key
Google Cloud Secret Manager 所有访问都需要经过IAM身份校验,不支持直接使用API Key访问,API Key仅适用于部分无需身份校验的公开Google Cloud API,无法满足Secret Manager的访问权限要求。
本地无ADC环境的可选访问方案
方案1:使用服务账号密钥通过SecretManagerServiceClientBuilder直接初始化客户端
这是最适配你场景的方案,无需配置全局ADC,直接在代码中指定服务账号凭证即可,使用示例如下:
using Google.Cloud.SecretManager.V1; using Google.Apis.Auth.OAuth2; // 构造Secret Manager客户端 var client = new SecretManagerServiceClientBuilder { // 传入服务账号密钥JSON文件路径,也可以用GoogleCredential.FromJson()直接传入密钥JSON内容 Credential = GoogleCredential.FromFile("./your-service-account-key.json") .CreateScoped(SecretManagerService.Scope.CloudPlatform) }.Build(); // 调用API示例:读取最新版本的Secret内容 var secretVersion = new SecretVersionName("你的GCP项目ID", "目标Secret名称", "latest"); var secretResponse = client.AccessSecretVersion(secretVersion); string secretContent = secretResponse.Payload.Data.ToStringUtf8();
方案2:调用Workload Identity Federation的REST接口获取凭证
目前.NET没有封装好的Workload Identity Federation客户端SDK,你可以直接调用对应的REST接口获取短期访问凭证,再用凭证初始化Secret Manager客户端,无需在本地持久化存储服务账号密钥,安全性更高,适合生产环境使用。
方案3:通过自定义凭证提供器构造客户端
如果你的本地环境有自定义的凭证分发机制,可以实现ICredential接口自定义凭证逻辑,传入SecretManagerServiceClientBuilder完成客户端初始化。
内容的提问来源于stack exchange,提问作者Prany
相关产品推荐
相关产品推荐

