我正试图找到一种方法来访问秘密管理器版本(服务accountkey文件)到托管在本地的应用程序。这个链接有一个关于如何通过c#通过秘密管理器客户端API访问它的示例,但这里的问题是它需要有一个ADC,这在那些服务器上是不可能的。我找不到任何地方,但是否SecretManager客户端API支持API密钥?如果没有,我还有什么选择?也有工作负载身份联合服务,但没有。net客户端API可用
//Uses ADC
SecretManagerServiceClient client = SecretManagerServiceClient.Create();
也有一个SecretManagerServiceClientBuilder
,但没有关于如何使用它的文档
要使用ADC,您不需要在服务器上安装gcloud SDK(回复您的评论)。环境变量GOOGLE_APPLICATION_CREDENTIALS
需要设置为value,其值为业务帐号密钥文件的绝对路径。这就是全部,库将自动检测此env var并使用该文件作为凭据。
如果你不放这个文件,如果你的应用程序不在Google Cloud上运行,库会查找"知名位置"。这个位置是用google auth application-default login
命令创建的用户凭证文件的标准位置。
如果您仔细阅读了,具有env变量的ADC使用服务帐户凭据,并且已知位置使用用户证书。您在个人计算机/工作站中使用用户凭据。在生产环境和应用程序中,你使用"应用标识","服务标识",因此是一个服务帐户。
服务帐户密钥文件是为:为运行在GCP之外的应用程序提供服务身份,并对其进行认证以与GCP交互而制作的。然而,该文件包含一个秘密,您需要谨慎地保护它,并在您的进程中尽快旋转该文件。