如何在非交互模式下使用用户帐户向 google-cloud-sdk 进行身份验证
How to authenticate to google-cloud-sdk using user account in non-interactive mode
当我使用 service-account.json 进行身份验证时,我无法访问任何项目,即命令 'gcloud projects list' 结果为
Listed 0 items.
使用命令 'gcloud config set project my-project' 设置 gcloud 项目导致:
WARNING: You do not appear to have access to project [my-project] or it does not exist.
但是这个项目存在于我的服务中-account.json
我正在尝试获取我的 GKE 集群凭据以创建 kubeconfig 条目。
'gcloud container clusters get-credentials my-cluster --zone=us-central1-a'
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/my-project/zones/us-central1-a/clusters/my -cluster".
当我使用 gcloud init 登录 GCP 并使用用户帐户登录时,所有这些步骤都获得了成功的结果。但是我应该如何在不打开浏览器的情况下授权用户帐户。我不能使用“--console-only”标志,因为它仍然需要复制粘贴 url 并打开浏览器。我想仅使用脚本自动执行对用户帐户进行身份验证的完整过程
注意:my-cluster GKE集群是在my-project下创建的,是我创建的。
我怀疑(!?)您的服务帐户权限不足(通过角色授予)。
要列出项目 (gcloud projects list
),服务帐户列表中的(每个项目)必须有(至少)resourcemanager.projects.get
个。参见:
https://cloud.google.com/resource-manager/docs/access-control-proj#permissions_and_roles
要检索集群权限,它必须具有 container.clusters.get
(参见 full list)。
一个兼具两者的好角色是roles/container.clusterAdmin
)
服务帐户具有挑战性。它们既是资源(粒子)又是身份(波),并且根据上下文表现不同。
作为资源,服务帐户由项目创建(并拥有),并且可以在任何 项目(不仅仅是所有者)中被授予权限。
作为身份,服务帐户可以被授予角色,将权限聚合到一种方法。我认为您可能缺少这一步。
Google的IAM documentation还不错。
当我使用 service-account.json 进行身份验证时,我无法访问任何项目,即命令 'gcloud projects list' 结果为
Listed 0 items.
使用命令 'gcloud config set project my-project' 设置 gcloud 项目导致:
WARNING: You do not appear to have access to project [my-project] or it does not exist.
但是这个项目存在于我的服务中-account.json 我正在尝试获取我的 GKE 集群凭据以创建 kubeconfig 条目。 'gcloud container clusters get-credentials my-cluster --zone=us-central1-a'
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/my-project/zones/us-central1-a/clusters/my -cluster".
当我使用 gcloud init 登录 GCP 并使用用户帐户登录时,所有这些步骤都获得了成功的结果。但是我应该如何在不打开浏览器的情况下授权用户帐户。我不能使用“--console-only”标志,因为它仍然需要复制粘贴 url 并打开浏览器。我想仅使用脚本自动执行对用户帐户进行身份验证的完整过程
注意:my-cluster GKE集群是在my-project下创建的,是我创建的。
我怀疑(!?)您的服务帐户权限不足(通过角色授予)。
要列出项目 (gcloud projects list
),服务帐户列表中的(每个项目)必须有(至少)resourcemanager.projects.get
个。参见:
https://cloud.google.com/resource-manager/docs/access-control-proj#permissions_and_roles
要检索集群权限,它必须具有 container.clusters.get
(参见 full list)。
一个兼具两者的好角色是roles/container.clusterAdmin
)
服务帐户具有挑战性。它们既是资源(粒子)又是身份(波),并且根据上下文表现不同。
作为资源,服务帐户由项目创建(并拥有),并且可以在任何 项目(不仅仅是所有者)中被授予权限。
作为身份,服务帐户可以被授予角色,将权限聚合到一种方法。我认为您可能缺少这一步。
Google的IAM documentation还不错。