如何列出与 gcp 服务帐户关联的角色?
How do I list the roles associated with a gcp service account?
在 google 云 gui 控制台中,我转到 "IAM & admin" > "Service accounts" 并创建了一个名为 "my-service-account" 的具有查看者角色的服务帐户。
然后我 运行 这个命令:
gcloud iam service-accounts get-iam-policy my-service-account@mydomain.iam.gserviceaccount.com
并看到了这个输出:
etag: ACAB
根据文档,这意味着此服务帐户没有关联的策略。所以我给它分配了一个 "role" ,它不包含在它的 "policy".
中
如何列出与服务帐户关联的角色?
编辑:
感谢对这个问题的出色回答,我现在可以遍历所有项目并得到我想要的东西。因此,根据这些 cmd 工具的版本,这应该列出所有项目中单个服务帐户的所有角色绑定:
gcloud projects list | \
awk '{print }' | \
xargs -I % sh -c "echo ""; echo project:% && \
gcloud projects get-iam-policy % \
--flatten='bindings[].members' \
--format='table(bindings.role)' \
--filter='bindings.members:YOU-SERVICE-ACCOUNT@blah.com' \
;"
在 Google Cloud 中,您有针对项目和服务帐户的 IAM 策略。
通过项目的 IAM 策略,您可以定义谁可以对 Google 云项目中的资源执行特定操作。
将“查看者”角色添加到您的服务帐户,您修改了项目策略(即您的服务帐户可以在项目中执行的操作)
另一方面,服务帐户的 IAM 策略用于控制谁拥有所有权以及谁可以访问服务帐户及其设置。
这是您使用发布的命令检索的内容,但您没有获得任何内容,因为您获得的是服务帐户的策略而不是项目的策略。
为了获取将包含成员及其相应角色的项目的 IAM 策略,您可以 运行 the following command:
gcloud projects get-iam-policy PROJECT_ID
您可以在以下链接中找到有关服务帐户的更多信息:
https://cloud.google.com/iam/docs/service-accounts
https://cloud.google.com/iam/docs/granting-roles-to-service-accounts
要过滤特定的服务帐户,可以使用以下 gcloud 命令:
gcloud projects get-iam-policy <YOUR GCLOUD PROJECT> \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:<YOUR SERVICE ACCOUNT>"
给出不错的输出:
ROLE
roles/cloudtrace.agent
roles/servicemanagement.serviceController
roles/viewer
当然可以调整格式参数以满足您的特定需求。
您可以使用此命令列出分配给服务帐户的资源和角色:
gcloud beta asset search-all-iam-policies --scope=organizations/123 --query="policy:456@cloudservices.gserviceaccount.com" | egrep "role:|resource:|gserviceaccount"
只要您对范围具有 cloudasset.assets.searchAllIamPolicies 权限,就可以将范围更改为文件夹或项目。
更多详情:
在 google 云 gui 控制台中,我转到 "IAM & admin" > "Service accounts" 并创建了一个名为 "my-service-account" 的具有查看者角色的服务帐户。
然后我 运行 这个命令:
gcloud iam service-accounts get-iam-policy my-service-account@mydomain.iam.gserviceaccount.com
并看到了这个输出:
etag: ACAB
根据文档,这意味着此服务帐户没有关联的策略。所以我给它分配了一个 "role" ,它不包含在它的 "policy".
中如何列出与服务帐户关联的角色?
编辑: 感谢对这个问题的出色回答,我现在可以遍历所有项目并得到我想要的东西。因此,根据这些 cmd 工具的版本,这应该列出所有项目中单个服务帐户的所有角色绑定:
gcloud projects list | \
awk '{print }' | \
xargs -I % sh -c "echo ""; echo project:% && \
gcloud projects get-iam-policy % \
--flatten='bindings[].members' \
--format='table(bindings.role)' \
--filter='bindings.members:YOU-SERVICE-ACCOUNT@blah.com' \
;"
在 Google Cloud 中,您有针对项目和服务帐户的 IAM 策略。
通过项目的 IAM 策略,您可以定义谁可以对 Google 云项目中的资源执行特定操作。 将“查看者”角色添加到您的服务帐户,您修改了项目策略(即您的服务帐户可以在项目中执行的操作)
另一方面,服务帐户的 IAM 策略用于控制谁拥有所有权以及谁可以访问服务帐户及其设置。 这是您使用发布的命令检索的内容,但您没有获得任何内容,因为您获得的是服务帐户的策略而不是项目的策略。
为了获取将包含成员及其相应角色的项目的 IAM 策略,您可以 运行 the following command:
gcloud projects get-iam-policy PROJECT_ID
您可以在以下链接中找到有关服务帐户的更多信息:
https://cloud.google.com/iam/docs/service-accounts
https://cloud.google.com/iam/docs/granting-roles-to-service-accounts
要过滤特定的服务帐户,可以使用以下 gcloud 命令:
gcloud projects get-iam-policy <YOUR GCLOUD PROJECT> \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:<YOUR SERVICE ACCOUNT>"
给出不错的输出:
ROLE
roles/cloudtrace.agent
roles/servicemanagement.serviceController
roles/viewer
当然可以调整格式参数以满足您的特定需求。
您可以使用此命令列出分配给服务帐户的资源和角色:
gcloud beta asset search-all-iam-policies --scope=organizations/123 --query="policy:456@cloudservices.gserviceaccount.com" | egrep "role:|resource:|gserviceaccount"
只要您对范围具有 cloudasset.assets.searchAllIamPolicies 权限,就可以将范围更改为文件夹或项目。
更多详情: