无法将存储管理员角色添加到 GCP 服务帐户

Can't add Storage Admin role to GCP service account

我正在查看 GCP 控制面板中的 IAM 服务帐户选项卡。我正在编辑服务帐户。我单击“授予访问权限”,输入我正在创建的服务帐户的电子邮件并尝试添加存储管理员。

但是,列表中没有这个选项。

此外,通过 CLI 执行此操作的看似等效的尝试失败了:

gcloud projects add-iam-policy-binding my-project-id \
  --member='serviceAccount:github-actions@my-project-id.iam.gserviceaccount.com' \
  --role='projects/my-project-id/roles/storage.admin'

ERROR: Policy modification failed. For a binding with condition, run "gcloud alpha iam policies lint-condition" to identify issues in condition.
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Role (projects/my-project-id/roles/storage.admin) does not exist in the resource's hierarchy.

很明显,我不明白应该如何为服务帐户授予角色。

不清楚你在做什么。两个重要的概念。服务帐户既可以是身份,也可以是资源。您正在将服务帐户作为屏幕截图中的资源进行管理。您的 CLI 命令正在将资源作为项目中的身份分级角色进行管理。

您的 CLI 命令在项目中指定了一个 custom 角色。您是创建自定义角色还是尝试使用现有的 Google Cloud IAM 角色?

您很可能想这样做:

gcloud projects add-iam-policy-binding my-project-id \
  --member='serviceAccount:github-actions@my-project-id.iam.gserviceaccount.com' \
  --role='roles/storage.admin'

请注意 角色名称 指定方式的不同。

创建服务帐户后,您可以转到 IAM 页面添加存储管理员角色。

  1. 转到 IAM 页面
  2. 单击添加
  3. 输入新主体(输入您创建的服务帐户)
  4. Select 期望的角色。 (在您的案例存储管理员中)。
  5. 保存

如果您仍想使用创建服务帐户窗格添加角色,请不要使用存储搜索,而是向下滚动到 所有角色 > 将鼠标悬停在 云存储 > Select 存储管理员.

您还可以使用云执行 John Hanley 提到的操作 Shell。