【问题标题】:How can i list all resources across my whole GCP estate that have a specific role?如何列出整个 GCP 资产中具有特定角色的所有资源?
【发布时间】:2020-01-29 11:58:29
【问题描述】:

我可以使用以下命令识别项目中所有具有 Owner 角色的资源;

gcloud projects get-iam-policy <PROJECTID> --flatten="bindings[].members" --format="table(bindings.members)" --filter="bindings.role:roles/owner"

要在所有项目中运行此命令,我认为这可能有效,但它没有...

for i in $(gcloud projects list | awk '{print $1}' | awk 'NR>1'); do echo PROJECT: $i && echo "--" && gcloud projects get-iam-policy --project=$i --flatten="bindings[].members" --format="table(bindings.members)" --filter="bindings.role:roles/owner"

有什么建议吗?

【问题讨论】:

  • 您的命令将列出在项目级别分配角色的 IAM 成员。在 Google Cloud 中,IAM 成员也可以分配给 Cloud Storage、KMS 等资源。您需要检查项目/文件夹/组织中的每个资源。所有者角色也可以分配给属于其他人“拥有”的另一个项目的资源。总之,没有简单的方法可以实现您的目标。

标签: google-cloud-platform google-iam google-cloud-iam


【解决方案1】:

我终于想通了(我没有关闭循环 - 只是需要;在最后完成)

我想我会分享这个以防其他人将来需要它:

for i in $(gcloud projects list | awk '{print $1}' | awk 'NR>1'); do echo PROJECT: $i && echo "--" && gcloud projects get-iam-policy $i --flatten="bindings[].members" --format="table(bindings.members)" --filter="bindings.role:roles/owner"; done

【讨论】:

    【解决方案2】:

    你在正确的轨道上。我使用朋友提供的以下脚本来打印某个电子邮件或服务帐户具有特定角色的所有项目。

    确实执行需要很多时间,但它完成了,我只是测试了它。

    for i in $(gcloud projects list | sed 's/|/ /' | awk '{if (NR!=1) 打印 $1}');如果 gcloud 项目 get-iam-policy "$i" --flatten="bindings[].members" --format="table(bindings.members)" --filter="bindings.role:roles/owner" | grep -q '[USER_OR_SERVICE_ACCOUNT]';然后回显“$i”;菲;完成 2> /dev/null

    希望这会有所帮助。

    【讨论】:

    • 只是好奇,我假设您确实将参数替换为电子邮件或服务帐户,对吗?我忘了在我的主要信息中提到它。很高兴你把它整理好了,我回答的那个确实对我有用。
    【解决方案3】:

    您可以使用 search-all-iam-policies 搜索在您的组织内的文件夹或项目上设置的所有 IAM 策略。

    要找出谁拥有所有者角色:

    gcloud asset search-all-iam-policies --scope=organizations/123 --query="policy:roles/owner"
    

    要了解 Amy 是否具有 Owner 角色:

    gcloud asset search-all-iam-policies --scope=organizations/123 --query="policy:(roles/owner amy@bar.com)"
    

    要查看是否有任何 gmail 帐户具有所有者角色:

    gcloud asset search-all-iam-policies --scope=organizations/123 --query="policy:(roles/owner *gmail*)"
    

    您可以将范围更改为文件夹或项目。您必须对范围具有 cloudasset.assets.searchAllIamPolicies 权限,该范围包含在以下角色中:

    • roles/cloudasset.viewer
    • roles/cloudasset.owner
    • 角色/查看者
    • 角色/编辑
    • 角色/所有者

    文档:https://cloud.google.com/asset-inventory/docs/searching-iam-policies

    支持的资源类型:https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types

    【讨论】:

      猜你喜欢
      • 2019-10-17
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多