问题标签 [gcp-iam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1791 浏览

google-cloud-platform - 如何以编程方式为 Google Cloud 项目启用身份和访问管理 (IAM) API?

我想使用 project.getIamPolicy 和 setIamPolicy,但它给了我 403 并显示错误消息“身份和访问管理 (IAM) API 之前未在项目中使用或已被禁用。通过访问https://启用它" _
我不想在每次创建项目时从控制台手动启用(每个项目的身份和访问管理 (IAM) API 或其他此类 API)。
我想自动化整个过程,所以,这是一个障碍。
有人可以帮忙吗,有解决方法吗?

0 投票
1 回答
53 浏览

firebase - 部署计划的云功能需要哪些服务帐户角色?

为了部署我的 Firebase 项目,我设置了一个具有以下角色的服务帐户:

  • 云功能管理员
  • Firebase 管理员
  • 服务帐号用户

它适用于由 Firestore 或 HTTPS 触发的托管和云功能,但它会因按计划执行功能而失败。

我还需要什么额外的角色?

编辑:唯一相关的输出消息是:

编辑:附加测试:在我的机器上使用我登录的 CLI 进行部署时,我看到这条附加消息,使用服务帐户部署时缺少该消息:

编辑:通过按照@Dharmaraj 的建议添加日志,我可以看到缺少的权限:

因此,当添加“Cloud Scheduler Admin”时,它可以工作!

我被误导了,因为我已经将此角色设置为服务帐户但在另一个项目中,并且它不会传播!以牺牲一个美好的下午为代价的教训。

0 投票
1 回答
77 浏览

google-cloud-platform - 实例创建失败:必需的“compute.images.useReadOnly”

我创建了一个专门的 GCP 项目,其中包含我想与其他组织的人分享的图像。我在整个项目中为这些人提供了一个自定义角色,具有以下权限:

但是人们报告说他们收到以下错误:

我不明白为什么他们在项目的所有图像上都拥有特定图像的权限。

我错过了什么?

0 投票
0 回答
77 浏览

google-cloud-platform - 如何列出 GCP 服务帐户所属的所有组?

我有一个 GSA:my-gsa@myproject.iam.gserviceaccount.com

GCP 支持群组已经有一段时间了,所以我将 GSA 添加到了一堆群组中。

如何轻松查看 GSA 所属的组?

如果这是一个 google用户帐户,我可以转到 G Suite 控制台并查看用户的组成员身份。这是一个 GSA,它不会像那样出现在 G Suite 控制台中。

理想情况下,我可以在一些 Web 控制台页面或 gcloud 中看到这一点。此 gcloud 命令将向我显示组的成员:https ://cloud.google.com/sdk/gcloud/reference/beta/identity/groups/memberships/list 。对于 GSA 而不是谷歌用户帐户,我该如何做相反的事情?

编辑

不是解决方案,而是搜索所有组的脚本。仍然认为必须有一个 API 调用才能将其作为一个步骤。我认为该groups.memberships.searchTransitiveGroups()方法仅用于查看嵌套组成员身份。

0 投票
2 回答
326 浏览

google-cloud-platform - Terraform google_project_iam_binding 从 IAM 主体中删除 GCP 计算引擎默认服务帐户

问题

Terraform GCP google_service_account 和 google_project_iam_binding 资源,用于roles/editor在 IAM 主体中附加已删除的 Google API 服务代理和 GCP 默认计算引擎默认服务帐户。由于 IAM 主体中的删除,无法删除/创建 GKE 集群,尽管它仍保留在 IAM 服务账户中。

这里的问题是它从 IAM 主体中消失了(我写了“已删除”),并且 Compute Engine 默认服务帐户遭到破坏,因此不再能够管理 Compute Engine,包括 GKE 集群/节点。

问题

我相信这是一个 Terraform 错误,但请帮助了解我是否遗漏了可以防止该问题的东西。

还请告知是否有办法将 Compute Engine 默认服务帐户恢复到具有 Editor 角色的 IAM 委托人中。

环境

.terraform.lock.hcl

复制步骤

在不同的 GCP 项目中测试了两次,问题以相同的方式重现。

开始

在 GCP 项目中,启动时未启用 Compute Engine,因此没有 Compute Engine 默认服务帐号。

在此处输入图像描述

在此处输入图像描述

启用计算引擎 API。

在此处输入图像描述

Compute Engine 默认服务帐号已创建并出现在 IAM 委托人和 IAM 服务帐号中。

在此处输入图像描述

在此处输入图像描述

Terraform 应用

应用 terraform 脚本以创建具有 IAM 绑定的服务账户。

Terraform已从 IAM 委托人中删除了 Compute Engine 默认服务帐号

应用 terraform 后,立即验证 IAM 委托人,并且已在 IAM 委托人视图中删除了 Compute Engine 默认服务帐号。

在此处输入图像描述

正如@JohnHanley 所建议的那样,单击包括 Google 提供的角色授予以取消隐藏 Google 管理的服务帐户。原始 Compute Engine 默认服务帐号1079157603081-compute@developer.gserviceaccount.com已进入 IAM 委托人视图。

在此处输入图像描述

gcloud projects get-iam-policy命令不显示 Compute Engine 默认服务帐号1079157603081-compute@developer.gserviceaccount.com

服务帐户仍保留在 IAM 服务帐户菜单中。

在此处输入代码

创建 GKE

启用 Kubernetes Engine API,并创建 GKE 集群。此时,Compute Engine 默认服务帐号的影响并没有阻碍 GKE 的创建。这可能是因为最终的一致性。

在此处输入图像描述

在此处输入图像描述

地形破坏

运行 terraform 销毁。

问题

无法删除 GKE

删除 IAM 委托人中的 Compute Engine 默认服务帐号的影响已开始。

在此处输入图像描述

无法删除 GKE 集群并出现错误。

Google Compute Engine:“projects/1079157603081/zones/us-central1-c/instanceGroups/gke-cluster-1-default-pool-b54fa6be-grp”需要“compute.instanceGroups.update”权限。

在此处输入图像描述

无法创建 GKE

尝试创建另一个 GKE 集群。

在此处输入图像描述

无法再创建 GKE 集群。这是原始问题GCP GKE - Google Compute Engine:并非所有在 IGM 中运行的实例都遇到了导致此故障排除的问题。

在此处输入图像描述

集群 2
Google Compute Engine:并非所有实例都在 18.798524988 秒后在 IGM 中运行。预期 3,运行 0,过渡 3。当前错误:[PERMISSIONS_ERROR]:实例“gke-cluster-2-default-pool-36522bb7-0vkl”创建失败:“projects/1079157603081/”需要“compute.instances.create”权限zone/us-central1-c/instances/gke-cluster-2-default-pool-36522bb7-0vkl'(当作为'1079157603081@cloudservices.gserviceaccount.com'时);[PERMISSIONS_ERROR]:实例“gke-cluster-2-default-pool-36522bb7-0vkl”创建失败:“projects/1079157603081/zones/us-central1-c/disks/gke-”所需的“compute.disks.create”权限cluster-2-default-pool-36522bb7-0vkl'(当充当'1079157603081@cloudservices.gserviceaccount.com'时);[PERMISSIONS_ERROR]:实例' gke-cluster-2-default-pool-36522bb7-0vkl' 创建失败:'projects/1079157603081/zones/us-central1-c/disks/gke-cluster-2-default- 所需的 'compute.disks.setLabels' 权限pool-36522bb7-0vkl'(当充当'1079157603081@cloudservices.gserviceaccount.com'时);[PERMISSIONS_ERROR]:实例“gke-cluster-2-default-pool-36522bb7-0vkl”创建失败:“projects/1079157603081/regions/us-central1/subnetworks/default”所需的“compute.subnetworks.use”权限(当充当“1079157603081@cloudservices.gserviceaccount.com”);[PERMISSIONS_ERROR]:实例“gke-cluster-2-default-pool-36522bb7-0vkl”创建失败:“projects/1079157603081/regions/us-central1/subnetworks/default”所需的“compute.subnetworks.useExternalIp”权限

在此处输入图像描述


尝试修复

尝试了这些措施,但没有运气。

将角色/编辑重新分配给服务帐号

应用取消删除服务帐号

他们没有将 Compute Engine 默认服务帐号带回 IAM 委托人。

在此处输入图像描述

禁用 Compute Engine API

尝试禁用 Compute Engine API,但由于无法删除 GKE 节点,因此无法禁用。

手动添加服务帐号

手动添加了Compute Engine账号1079157603081-compute@developer.gserviceaccount.com”,添加了IAM角色/编辑器,命令输出中没有出现gcloud projects get-iam-policy,但是仍然无法删除GKE集群。

在此处输入图像描述

GKE 的另一个服务帐号

创建了另一个具有 compute.admin 角色的服务帐户,并使用它来创建/删除 GKE 集群。但是,一旦 Compute Engine 默认服务帐户遭到破坏,请继续使用GCP GKE - Google Compute Engine:并非所有实例都在 IGM 中运行问题。


达到的目标

将 Compute Engine 默认服务帐号重新加入 IAM 主体,如下面的快照所示,并能够管理 Compute Engine 和 GKE 节点。

在此处输入图像描述

0 投票
1 回答
40 浏览

google-cloud-platform - 如何在没有域范围委派的情况下管理 google 组和修改用户属性?

我想让 GSA 直接访问以修改 Google用户。我找不到关于此的当前文档,所以假设现在不可能?

看起来这仅适用于与组合作: https ://workspaceupdates.googleblog.com/2020/08/new-api-cloud-identity-groups-google.html 在此处输入图像描述

我需要授予 GSA 访问权限以读取组成员身份并修改用户属性。

现在我:

使用 GSA 模拟 G Suite 用户并修改用户属性,如下所示:

需要域范围的委派来修改用户属性吗?还是现在也支持?

0 投票
2 回答
54 浏览

mysql - 无法使用 CLI 从服务帐户访问 CloudSQL MYSQL5.7

我有 MYSQL_5_7 的简单 cloudsql 实例,启用了 enable_iam_authentication 标志。

我添加了服务帐户或 IAM 用户,并希望使用 mysql 客户端访问实例。

我正在使用 cloudsql 身份验证代理:

./cloud_sql_proxy -instances=watchful-pier-333707:us-central1:test-002=tcp:3306 --enable_iam_login

使用以下命令访问数据库: mysql -u root -p --host 127.0.0.1

使用内置用户 root 我可以成功访问该实例。

当我尝试使用以下命令使用 IAM 用户/服务帐户访问数据库时,我收到“在'读取授权数据包'时丢失与 MySQL 服务器的连接,系统错误:0”。

mysql -u <user_name> -p --host 127.0.0.1 user_name 是我可以在用户列表中看到的添加用户

遵循本文档 -

任何人都可以请帮忙。提前致谢!

0 投票
1 回答
23 浏览

google-cloud-platform - Google Cloud Platform 服务帐户密钥保留和客户端连接

问题描述

我试图弄清楚如果从服务帐户中撤消该密钥,是否会终止从服务帐户密钥到 BigQuery 的活动连接。

例子

假设我有这个运行,很明显源代码显示它只使用该服务帐户创建一个连接,并且是在启动时。如果在这种情况下使用的 GCP 服务帐户密钥被撤销,此应用程序连接是否也会终止?由于应用程序在服务帐户密钥有效时进行了身份验证,它会保持连接吗?

0 投票
1 回答
48 浏览

google-cloud-platform - GCP 权限:访问范围和自定义 IAM 服务账户角色

我有一个使用自定义服务帐户的 Kotlin 应用程序,需要查询由 Google 电子表格支持的 BigQuery 表。查询表需要“https://www.googleapis.com/auth/drive”访问范围,但据我了解,自定义服务帐户不能附加访问范围。最好的前进方式是什么?我可以向自定义 SA 添加一些权限集来模拟访问范围吗?

我得到的错误是:

0 投票
1 回答
38 浏览

google-cloud-platform - 部署 Google Cloud Function 时无法获取机密

我的 Google Cloud Function 部署失败,这就是我在日志中得到的全部信息:

无法获取环境变量“xxx”的秘密“projects/xxx/secrets/xxx/versions/latest”。实例启动现在将中止。

我已确保 Cloud Function 的运行时帐户具有该Secret Manager Secret Accessor角色。

我已经尝试Secret Manager Secret Accessor从 Cloud Build Settings 页面启用,但它仍然无法正常工作。

我应该授予哪些委托人什么角色才能让它发挥作用?