Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 在GKE中使用工作负载标识访问服务帐户密钥json_.net Core_Google Cloud Platform_Google Cloud Firestore_Google Kubernetes Engine - Fatal编程技术网

.net core 在GKE中使用工作负载标识访问服务帐户密钥json

.net core 在GKE中使用工作负载标识访问服务帐户密钥json,.net-core,google-cloud-platform,google-cloud-firestore,google-kubernetes-engine,.net Core,Google Cloud Platform,Google Cloud Firestore,Google Kubernetes Engine,我们正在尝试解决一个问题,用工作负载标识替换机密。下面是更多详细信息 我们正在通过部署在google kubernetes引擎中的点网核心web api访问firestore和pubsub。我们正在为appsettings json使用一个秘密,它拥有所有的服务帐户密钥,这个秘密被装载到部署吊舱中的一个路径和代码中,我们通过使用secret json的卷装载路径作为配置提供程序注入appsettings来访问配置。我们使用json服务帐户密钥创建firestore构建器和pubsub通道凭据,如

我们正在尝试解决一个问题,用工作负载标识替换机密。下面是更多详细信息

我们正在通过部署在google kubernetes引擎中的点网核心web api访问firestore和pubsub。我们正在为appsettings json使用一个秘密,它拥有所有的服务帐户密钥,这个秘密被装载到部署吊舱中的一个路径和代码中,我们通过使用secret json的卷装载路径作为配置提供程序注入appsettings来访问配置。我们使用json服务帐户密钥创建firestore构建器和pubsub通道凭据,如下所示

使用服务帐户json密钥的API代码如下所示:

Pubsub

_香奈儿信条= GoogleCredential.FromJson(_pubSubSAJsoKey).ToChannelCredentials()

Firestore

_firestoreDb=新的FirestoreDbBuilder { ProjectId=ProjectId, JsonCredentials=fireStoreServiceAccountJsonKey }.Build()

访问Program.cs中的秘密配置:

公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>

现在我们必须切换到Workload identity,但我们不确定如何在Workload identity中处理多个服务帐户,并且在代码中我们需要服务帐户的json密钥,因此如何从Workload identity中检索密钥

提前谢谢

我绝对不是.Net开发人员,但我可以在工作负载标识方面提供帮助

首先是一些概念。GKE上的工作负载标识创建一个拦截器。当客户端库(googleauth、PubSub或其他)尝试访问以获取凭据时,将拦截请求并根据定义的服务帐户生成凭据

因此,您必须使用。不要指定任何服务帐户密钥文件,让库根据环境上下文自动查找正确的凭据

如果您查看,您永远不会看到使用服务帐户密钥文件的身份验证,它使用ADC。同样的事情


这是用于代码中的身份验证。现在,如何处理几个服务帐户

在上,您可以看到如何在命名空间上创建KSA以及如何将此KSA与GSA绑定。因此,您只需在一个命名空间上定义几个KSA,然后,。

我绝对不是.Net开发人员,但我可以在工作负载标识方面提供帮助

首先是一些概念。GKE上的工作负载标识创建一个拦截器。当客户端库(googleauth、PubSub或其他)尝试访问以获取凭据时,将拦截请求并根据定义的服务帐户生成凭据

因此,您必须使用。不要指定任何服务帐户密钥文件,让库根据环境上下文自动查找正确的凭据

如果您查看,您永远不会看到使用服务帐户密钥文件的身份验证,它使用ADC。同样的事情


这是用于代码中的身份验证。现在,如何处理几个服务帐户


在上,您可以看到如何在命名空间上创建KSA以及如何将此KSA与GSA绑定。因此,您只需在一个名称空间上定义几个KSA,然后,。

谢谢您的回答,我会尝试一下,但它似乎回答了我的问题。谢谢您的回答,我会尝试一下,但它似乎回答了我的问题。
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                {
                    config.AddJsonFile("**/secrets/api.secrets.json**").Build();
                });
                webBuilder.UseStartup<Startup>();
            });
    volumeMounts:
    - name: appsettingssecret
      mountPath: /secrets
      readOnly: true
  volumes:
  - name: appsettingssecret
    secret:
      secretName: appsettingssecret