- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
刚开始使用 Google Apis。在我的 Google Cloud Platform 帐户中,我为全域委托(delegate)创建了一个服务帐户。我为此服务帐户保存了一个 json 格式的私钥文件。
在我的测试应用程序中,我正在创建一个 GoogleCredential 实例:
var credential =
GoogleCredential.FromStream(new FileStream("privatekey.json", FileMode.Open, FileAccess.Read))
.CreateScoped(Scopes);
如何设置我想模拟的用户?使用 p12 私钥时,我可以执行以下操作:
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer("xxx@developer.gserviceaccount.com") //service Account id
{
Scopes = Scopes,
User = "admin@xxx.com" //the user to be impersonated
}.FromCertificate(new X509Certificate2(@"xxx.p12", "notasecret", X509KeyStorageFlags.Exportable)));
但是我如何使用 GoogleCredential 和 json privatkey 文件以“简单的方式”做到这一点?
亲切的问候
最佳答案
好的,我现在通过从 GoogleCredential 和内部类 DefaultCredentialProvider 复制代码来解决它
using (var fs = new FileStream("key.json", FileMode.Open, FileAccess.Read))
{
var credentialParameters =
NewtonsoftJsonSerializer.Instance.Deserialize<JsonCredentialParameters>(fs);
if (credentialParameters.Type != "service_account"
|| string.IsNullOrEmpty(credentialParameters.ClientEmail)
|| string.IsNullOrEmpty(credentialParameters.PrivateKey))
throw new InvalidOperationException("JSON data does not represent a valid service account credential.");
return new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(credentialParameters.ClientEmail)
{
Scopes = Scopes,
User = _adminUser //the user to be impersonated
}.FromPrivateKey(credentialParameters.PrivateKey));
}
如果有人(可能是 peleyal)有更好的想法直接通过 GoogleCredential 进行操作,请随时给我提示;)
关于c# - 由 json 私钥文件(ServiceAccount)创建的 GoogleCredential - 如何将用户设置为模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38496919/
我对此的理解doc page是,我可以使用 Pod 配置服务帐户,并希望也可以进行部署,这样我就可以访问 Kubernetes 1.6+ 中的 k8s API。为了不更改或使用默认帐户,我想创建服务帐
我正在尝试创建一个没有 secret 或只有我指定的 secret 的服务帐户,而无论怎样,kubelet 似乎总是附加默认 secret 。 服务帐户定义 apiVersion: v1 automo
我正在尝试授予我的服务帐户 foo 权限以获取集群上的节点列表(通过 kubectl get nodes)。我创建了一个 clusterrole 和一个具有这些权限的角色绑定(bind): apiVe
定义 ServiceAccount 时,您告诉 Kubernetes 您要授予访问权限的 apiGroups、资源和动词。: apiVersion: v1 kind: ServiceAccount .
我已经阅读了文档,也看过示例,但我不知道为什么要在我的 pod 中添加 serviceAccount ? 来自 Kubernetes (https://github.com/kubernetes/ku
我想为具有上下文的服务帐户创建一个角色。 我的目标是能够运行kubectl get pods与服务帐户的上下文。 为此,我需要: 创建服务帐号 创建角色 创建绑定(bind)角色 创建上下文 我创建了
有谁知道是否有一种方法可以备份和还原Kubernetes中始终具有相同 token 的Serviceaccount?我们经常使用服务帐户 token (例如,当它们在Openshift中充当oauth
我必须将参数化的 Secrets 添加到默认的 ServiceAccount。我试图将默认的 ServiceAccount 作为对象添加到模板中,但这似乎没有任何作用。 或者我应该创建一个新的 SA,
我试图让 Kubernetes 在一些运行 CoreOS 的本地机器上运行。我正在松散地关注 this guide .一切似乎都已启动并正在运行,我可以通过 kubectl 连接到 api。但是,当我
我有服务帐号:myservice $ kubectl get serviceaccount NAME SECRETS AGE default 1 15d my
我们将 ServiceAccounts 用于 RBAC,因此有多个 SA 在起作用,以允许我们通过 RoleBindings 适本地调整访问。 我们还使用私有(private)注册表,因此可以使用 i
使用以下命令为 Jenkins 创建服务帐户后: kubectl -n jenkins create sa jenkins kubectl create clusterrolebinding jenk
我的自定义命名空间中有以下定义: apiVersion: v1 kind: ServiceAccount metadata: name: test-sa --- kind: Role apiVer
我正在尝试关注 this tutorial设置 nginx-ingress Controller 。 好像是在RBAC完全集成到k8s之前写的。当我到达运行 nginx-controller.yaml
我有下面的 terraform 脚本,用于创建一个新的服务帐户并使其成为所有者。脚本创建服务帐户,但会在分配角色时抛出错误 resource "google_service_account" "pci
我在我的 values.yaml 中添加了这个,希望在我执行 helm 安装时创建 serviceAccount,但那没有用,我是不是遗漏了什么? helm 版本 v3.9.0 kubernetes
我下载了 Kubernetes 用于与 Jenkins 集成并创建了一个 Serviceaccount,但没有自动创建 key 。 以前记得在创建Serviceaccount时自动创建了一个Secre
我正在尝试使用 ClusterRoleBinding 授予 Kubernetes ServiceAccount 集群管理员角色: apiVersion: v1 kind: ServiceAccount
在 kubernetes 中,有没有办法找到 RoleBinding/ClusterRoleBinding与 serviceAccount 相关而不遍历所有绑定(bind)? 这在尝试解决与 Pod
我在 Azure 上有一个 kubernetes 集群,我创建了 2 个命名空间和 2 个服务帐户,因为我有两个团队在该集群上部署。我想为每个团队提供我创建的服务帐户自己的 kubeconfig 文件
我是一名优秀的程序员,十分优秀!