将政策分析写入 Cloud Storage

本页面介绍如何异步分析 Identity and Access Management (IAM) 政策并将结果写入 Cloud Storage。此功能基本等同于分析 IAM 政策,不同之处在于分析结果会写入 Cloud Storage 存储分区

准备工作

启用 Cloud Asset API。

启用 API

您必须在将用于发送查询的项目或组织中启用该 API。该资源不必与将查询范围限定到同一资源。

所需的角色和权限

运行政策分析并将结果导出到 Cloud Storage 需要以下角色和权限。

所需 IAM 角色

如需获取分析政策并将结果导出到 BigQuery 所需的权限,请让管理员向您授予查询范围(项目、文件夹或组织)的下列 IAM 角色。

  • Cloud Asset Viewer (roles/cloudasset.viewer)
  • Storage Object Creator (roles/storage.objectCreator)
  • 如需分析使用自定义 IAM 角色的政策,请执行以下操作:Role Viewer (roles/iam.roleViewer)
  • 如需使用 Google Cloud CLI 分析政策,请执行以下操作:Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)

如需详细了解如何授予角色,请参阅管理访问权限

这些预定义角色包含分析政策并将结果导出到 BigQuery 所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • storage.objects.create
  • 如需分析使用自定义 IAM 角色的政策,请执行以下操作: iam.roles.get
  • 如需使用 Google Cloud CLI 分析政策,请执行以下操作: serviceusage.services.use

您也可以使用自定义角色或其他预定义角色来获取这些权限。

所需的 Google Workspace 权限

如果您希望查看主帐号是否因其在 Google Workspace 群组中的成员身份而拥有特定角色或权限,则需要 groups.read Google Workspace 权限。此权限包含在 Groups Reader Admin 角色以及更强大的角色(例如 Groups Admin 或 Super Admin 角色)中。如需了解详情,请参阅分配特定管理员角色

调用 AnalyzeIamPolicyLongrunning

使用 AnalyzeIamPolicyLongrunning 方法,您可以发出分析请求,并在指定的 Cloud Storage 存储分区中获取结果。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定到的资源类型。系统仅会分析附加到此资源及其后代的 IAM 允许政策。使用值 projectfolderorganization
  • RESOURCE_ID:您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织的 ID。系统只会分析附加到此资源及其后代的 IAM 允许政策。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 均为数字,如 123456789012
  • PRINCIPAL:您要分析其访问权限的主帐号,格式为 PRINCIPAL_TYPE:ID,例如 user:my-user@example.com。如需查看主帐号类型的完整列表,请参阅主标识符
  • PERMISSIONS:您要检查的权限的英文逗号分隔列表,例如 compute.instances.get,compute.instances.start。如果您列出了多项权限,Policy Analyzer 将检查所列的任何权限。
  • STORAGE_OBJECT_URI:您要将分析结果导出到的 Cloud Storage 对象的唯一资源标识符,格式为 gs://BUCKET_NAME/OBJECT_NAME,例如 gs://my-bucket/analysis.json

执行 gcloud assetanalyze-iam-policy-longrunning 命令:

Linux、macOS 或 Cloud Shell

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS' \
    --gcs-output-path=STORAGE_OBJECT_URI

Windows (PowerShell)

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS' `
    --gcs-output-path=STORAGE_OBJECT_URI

Windows (cmd.exe)

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS' ^
    --gcs-output-path=STORAGE_OBJECT_URI

您应该会收到类似如下所示的响应:

Analyze IAM Policy in progress.
Use [gcloud asset operations describe projects/my-project/operations/AnalyzeIamPolicyLongrunning/1195028485971902504711950280359719028666] to check the status of the operation.

REST

如需分析 IAM 允许政策并将结果导出到 Cloud Storage,请使用 Cloud Asset Inventory API 的 analyzeIamPolicyLongrunning 方法。

在使用任何请求数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定到的资源类型。系统仅会分析附加到此资源及其后代的 IAM 允许政策。使用值 projectsfoldersorganizations
  • RESOURCE_ID:您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织的 ID。系统只会分析附加到此资源及其后代的 IAM 允许政策。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 均为数字,如 123456789012
  • FULL_RESOURCE_NAME:可选。您要分析其访问权限的资源的完整资源名称。如需查看完整的资源名称格式列表,请参阅资源名称格式
  • PRINCIPAL:可选。 您要分析其访问权限的主帐号,格式为 PRINCIPAL_TYPE:ID,例如 user:my-user@example.com。如需查看主帐号类型的完整列表,请参阅主标识符
  • PERMISSION_1PERMISSION_2... PERMISSION_N:可选。您要检查的权限,例如 compute.instances.get。如果您列出了多项权限,Policy Analyzer 将检查所列的任何权限。
  • STORAGE_OBJECT_URI:您要将分析结果导出到的 Cloud Storage 对象的唯一资源标识符,格式为 gs://BUCKET_NAME/OBJECT_NAME,例如 gs://my-bucket/analysis.json

HTTP 方法和网址:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicyLongrunning

请求 JSON 正文:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    },
    "outputConfig": {
      "gcsDestination": {
        "uri": "STORAGE_OBJECT_URI"
      }
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您应该会收到类似以下内容的 JSON 响应:

{
  "name": "projects/my-project/operations/AnalyzeIamPolicyLongrunning/1206385342502762515812063858425027606003",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.asset.v1.AnalyzeIamPolicyLongrunningMetadata",
    "createTime": "2022-04-12T21:31:10.753173929Z"
  }
}

查看 IAM 政策分析结果

如需查看 IAM 政策分析结果,请执行以下操作:

  1. 在控制台中,转到浏览器页面。

    转到浏览器

  2. 打开分析写入的新文件。

结果列出了 {identity, role(s)/permission(s), resource} 的元组以及生成这些元组的 IAM 政策。