【问题标题】:How to get GCP "iampolicy" information in .CSV format with project ID?如何使用项目 ID 获取 .CSV 格式的 GCP“iampolicy”信息?
【发布时间】:2020-10-29 00:48:04
【问题描述】:

我不擅长编程。我正在尝试从 GCP 云帐户生成 csv 报告。我需要有关帐户中创建的项目数量及其所有者、IAM 角色和成员等信息。

我确实尝试过使用 bash 脚本并收到了 json 格式的输出。

代码

#!/bin/bash
for project in  $(gcloud projects list --format="value(projectId)")
do
  echo "ProjectId:  $project"
  iampolicy=$(gcloud projects get-iam-policy "$project" --format json")
  echo "$iampolicy"
  printf '%s\n' $iampolicy | paste -sd ',' >> file.csv
done 

输出

ProjectId:  test-project1-xyz
{
  "bindings": [
    {
      "members": [
        "user:123@gmail.com"
      ],
      "role": "roles/owner"
    }
  ],
  "etag": "xyz=",
  "version": 1
}

目前我在 file.csv 文件中得到相同的 json 输出数据。

预期输出

文件.csv

Project ID  Members-Email   Role
xyz         xyz              xyz

谁能帮我解决这个问题?提前感谢您的支持。

【问题讨论】:

    标签: bash google-cloud-platform gcloud


    【解决方案1】:

    也许:

    #!/bin/bash
    echo "ID,Name,Member,Role"
    gcloud projects list --format="csv[no-heading](projectId,name)" |\
    while IFS="," read -r ID NAME
    do
      POLICY=$(\
        gcloud projects get-iam-policy ${ID} \
        --flatten="bindings[].members[]" \
        --format="csv[no-heading](bindings.members,bindings.role)")
      # Prefix ${PROJECT} to each line in the policy
      for LINE in ${POLICY}
      do
        echo ${ID},${NAME},${LINE}
      done
    done
    

    【讨论】:

      【解决方案2】:

      也许:

      #!/bin/bash
      echo "Project-ID,Member,Role"
      for PROJECT in  $(gcloud projects list --format="value(projectId)")
      do
        POLICY=$(\
          gcloud projects get-iam-policy ${PROJECT} \
          --flatten="bindings[].members[]" \
          --format="csv[no-heading](bindings.members,bindings.role)")
        # Prefix ${PROJECT} to each line in the policy
        for LINE in ${POLICY}
        do
          echo ${PROJECT},${LINE}
        done
      done
      

      我忘记了Member(type:email)的拆分方式

      【讨论】:

        【解决方案3】:

        如果您对包含所有项目的组织拥有 cloudasset.assets.searchAllIamPolicies 权限,则可以使用一个命令实现目标:

        $ gcloud asset search-all-iam-policies \
        --query='resource:cloudresourcemanager.googleapis.com/projects' \
        --flatten=policy.bindings[].members[] \
        --format='csv(resource, policy.bindings.role, policy.bindings.members)' \
        --scope=organizations/123
        

        使用您的组织编号而不是 123。

        您可以在另一个帖子中找到更多详细信息: How to list, find, or search iam policies across services (APIs), resource types, and projects in google cloud platform (GCP)?

        【讨论】:

          【解决方案4】:
          #!/bin/bash
          
          > project_data.csv
          
          gcloud projects list --format="value(projectId, name, createTime.date(tz=LOCAL))" >whole_project_details.txt
          
          
          
          echo project_id, project_name, project_time >project_data.csv
          
          while read project_details
          
          do
          
          project_id=`echo $project_details | awk '{print $1}'`
          
          project_name=`echo  $project_details | awk '{print $2}'`
          
          project_time=`echo $project_details | awk '{print $3}'`
          
          echo $project_id, $project_name, $project_time >> project_data.csv
          
          done < whole_project_details.txt
          

          这将以 CSV 格式提供 GCP 项目的详细信息、项目 ID、项目名称和日期/时间

          【讨论】:

            猜你喜欢
            • 2019-07-13
            • 1970-01-01
            • 2023-04-02
            • 1970-01-01
            • 1970-01-01
            • 2014-03-01
            • 1970-01-01
            • 2023-04-03
            • 1970-01-01
            相关资源
            最近更新 更多