gcloud 对 add-iam-policy-binding 的混淆

Jon*_*ier 11 google-cloud-platform gcloud

遵循 gcloud 文档


gcloud iam 服务帐户

将 IAM 策略绑定添加到IAM 服务账户

https://cloud.google.com/sdk/gcloud/reference/iam/service-accounts/add-iam-policy-binding

示例部分

要将“roles/editor”角色的 IAM 策略绑定添加到服务账户“test-proj1@example.domain.com”,请运行:

gcloud iam service-accounts add-iam-policy-binding \
 test-proj1@example.domain.com \
 --member='serviceAccount:test-proj1@example.domain.com' \
 --role='roles/editor'
Run Code Online (Sandbox Code Playgroud)

gcloud 项目 add-iam-policy-binding

为项目添加 IAM 策略绑定

https://cloud.google.com/sdk/gcloud/reference/projects/add-iam-policy-binding

示例部分

要将“roles/editor”角色的 IAM 策略绑定添加到服务账户“test-proj1@example.domain.com”,请运行:

gcloud projects add-iam-policy-binding \
 test-proj1@example.domain.com \
 --member='serviceAccount:test-proj1@example.domain.com' \
 --role='roles/editor'
Run Code Online (Sandbox Code Playgroud)

 gcloud 组织 add-iam-policy-binding

为组织添加 IAM 策略绑定

https://cloud.google.com/sdk/gcloud/reference/organizations/add-iam-policy-binding

示例部分

要将“roles/editor”角色的 IAM 策略绑定添加到服务账户“test-proj1@example.domain.com”,请运行:

gcloud organizations add-iam-policy-binding \
 test-proj1@example.domain.com \
 --member='serviceAccount:test-proj1@example.domain.com' \
 --role='roles/editor'
Run Code Online (Sandbox Code Playgroud)

有谁知道这 3 个命令实际上是否相同?

在此先感谢您的帮助。

乔纳森。

gui*_*ere 16

你必须像这样阅读命令

gcloud <resourceType> add-iam-policy-binding <resourceName> --member=<accountToGrantOnTheResource> --role=<roleToGrantOnTheResource>
Run Code Online (Sandbox Code Playgroud)

混乱来自服务帐户的二元性(我保证没有量子的东西!)。服务帐户可以是身份和资源。

您可以授予某人作为服务帐户的编辑者和另一个人作为服务帐户的查看者 -> 您的第一个示例,您授予服务帐户自身的编辑者权限。例如,它将能够更新自己的描述。

在您的其他 2 个示例中,您授予您的服务帐户(作为身份)作为资源项目(项目的所有资源,如果属于该项目的服务帐户本身)和组织的编辑者。

我希望它有帮助!

  • 谷歌的文档是如此令人困惑,你的答案中的二元性一词消除了我的困惑。感谢您的精彩解释! (2认同)