查看 Cloud Storage 存储分区的政策数据分析

本页面介绍如何管理存储桶级政策数据分析,这些数据分析是基于机器学习的 Cloud Storage 存储桶权限使用发现结果。政策数据分析可帮助您确定哪些用户不需要某些主帐号的权限。

本页面重点介绍存储分区的政策数据分析。Recommender 还提供项目、文件夹和组织的政策数据分析

存储分区级政策数据分析有时会与角色建议相关联。角色建议可以推荐您可以采取的措施,以解决存储桶级政策数据分析所发现的问题。

准备工作

所需的角色

如需获取管理存储桶级政策数据分析所需的权限,请让管理员针对您要管理其数据分析的项目拥有以下 IAM 角色:

  • 如需查看存储桶级政策数据分析,请执行以下操作: IAM Recommender Viewer (roles/recommender.iamViewer)
  • 如需修改存储桶级政策数据分析,请执行以下操作: IAM Recommender Admin (roles/recommender.iamAdmin)

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

这些预定义角色包含管理存储桶级政策数据分析所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

  • 如需查看存储桶级政策数据分析,请执行以下操作:
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
  • 如需修改存储桶级政策数据分析,请执行以下操作: recommender.iamPolicyInsights.update

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

列出存储桶级政策数据分析

如需列出项目的所有存储桶级政策数据分析,请使用以下方法之一:

gcloud

使用 gcloud recommender insights list 命令查看项目的所有存储桶级政策数据分析。

在运行命令之前,请先替换以下值:

  • PROJECT_ID:您要为其列出数据分析的项目的 ID。
  • LOCATION:您要列出其数据分析的存储分区的位置。
gcloud recommender insights list --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION\
    --filter="insightSubtype:PERMISSIONS_USAGE_STORAGE_BUCKET"

输出列出了指定位置中项目的所有存储桶级政策数据分析。例如:

INSIGHT_ID                            CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME     SEVERITY  INSIGHT_SUBTYPE                   DESCRIPTION
00dd7eb5-15c2-4fb3-a9b2-1a85f842462b  SECURITY  ACTIVE         2022-05-24T07:00:00Z  CRITICAL  PERMISSIONS_USAGE_STORAGE_BUCKET  2 of the permissions in this role binding were used in the past 90 days.
04307297-f57c-416d-9323-38abac450db0  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       PERMISSIONS_USAGE_STORAGE_BUCKET  2 of the permissions in this role binding were used in the past 90 days.
04845da5-74ba-46b4-a0f3-47d83095c261  SECURITY  ACTIVE         2022-05-24T07:00:00Z  CRITICAL  PERMISSIONS_USAGE_STORAGE_BUCKET  1 of the permissions in this role binding were used in the past 90 days.
0a39f643-d7a8-4c11-b490-fecd74290fb5  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       PERMISSIONS_USAGE_STORAGE_BUCKET  2 of the permissions in this role binding were used in the past 90 days.
0a4cee48-777b-4dea-a2b0-702b70da4b6f  SECURITY  ACTIVE         2022-05-24T07:00:00Z  CRITICAL  PERMISSIONS_USAGE_STORAGE_BUCKET  0 of the permissions in this role binding were used in the past 90 days.
0b2d147c-b26e-4afe-8fab-449c6e793750  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       PERMISSIONS_USAGE_STORAGE_BUCKET  0 of the permissions in this role binding were used in the past 90 days.
0b5eacc5-ba9a-45f6-aea2-bcdc33ce2a2d  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       PERMISSIONS_USAGE_STORAGE_BUCKET  1 of the permissions in this role binding were used in the past 90 days.
0bb3032d-721c-44e8-b464-5293f235281c  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       PERMISSIONS_USAGE_STORAGE_BUCKET  3 of the permissions in this role binding were used in the past 90 days.

REST

Recommender API 的 insights.list 方法可列出项目的所有存储桶级政策数据分析。

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

  • PROJECT_ID:您要为其列出数据分析的项目的 ID。
  • LOCATION:您要列出其数据分析的存储分区的位置。

HTTP 方法和网址:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights?filter=insightSubtype%20%3D%20PERMISSIONS_USAGE_STORAGE_BUCKET

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

响应会列出项目在指定位置的所有存储桶级政策数据分析。例如:

{
  "insights": [
    {
      "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b",
      "description": "2 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/storage.legacyBucketReader",
        "member": "allUsers",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [
          {
            "permission": "storage.buckets.get"
          },
          {
            "permission": "storage.objects.list"
          }
        ],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "3"
      },
      "lastRefreshTime": "2022-05-24T07:00:00Z",
      "observationPeriod": "7772400s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883"
        }
      ],
      "targetResources": [
        "//storage.googleapis.com/bucket-1"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET",
      "etag": "\"2a8784e529b80aea\"",
      "severity": "CRITICAL"
    },
    {
      "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/04307297-f57c-416d-9323-38abac450db0",
      "description": "2 of the permissions in this role binding were used in the past 90 days.",
      "content": {
        "role": "roles/storage.legacyBucketReader",
        "member": "projectViewer:my-project",
        "condition": {
          "expression": "",
          "title": "",
          "description": "",
          "location": ""
        },
        "exercisedPermissions": [
          {
            "permission": "storage.buckets.get"
          },
          {
            "permission": "storage.objects.list"
          }
        ],
        "inferredPermissions": [],
        "currentTotalPermissionsCount": "3"
      },
      "lastRefreshTime": "2022-05-24T07:00:00Z",
      "observationPeriod": "7772400s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "associatedRecommendations": [
        {
          "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/f3198e63-7f76-462e-a980-8e6370ff32d6"
        }
      ],
      "targetResources": [
        "//storage.googleapis.com/bucket-2"
      ],
      "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET",
      "etag": "\"5b60b935f27caf2c\"",
      "severity": "LOW"
    }
  ]
}

如需详细了解数据分析的组成部分,请参阅本页面上的查看存储桶级政策数据分析

获取单一存储桶级政策数据分析

如需获取有关单一数据分析的更多信息(包括数据分析的说明、状态及其关联的任何建议),请使用以下方法之一:

gcloud

使用带有数据分析 ID 的 gcloud recommender insights describe 命令查看单项数据分析的相关信息。

  • INSIGHT_ID:您要查看的数据分析的 ID。如需查找此 ID,请列出项目中的数据分析
  • PROJECT_ID:您要管理数据分析的项目的 ID。
  • LOCATION:您要获取其数据分析的存储桶的位置。
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION

输出会显示详细数据分析。例如,以下数据分析表明所有用户 (allUsers) 对存储桶 bucket-1 具有 Storage Legacy Bucket Reader 角色 (roles/storage.legacyBucketReader),但此角色在过去 90 天内仅使用了该角色中的两项权限:

associatedRecommendations:
- recommendation: projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '3'
  exercisedPermissions:
  - permission: storage.buckets.get
  - permission: storage.objects.list
  inferredPermissions: []
  member: allUsers
  role: roles/storage.legacyBucketReader
description: 2 of the permissions in this role binding were used in the past 90 days.
etag: '"2a8784e529b80aea"'
insightSubtype: PERMISSIONS_USAGE_STORAGE_BUCKET
lastRefreshTime: '2022-05-24T07:00:00Z'
name: projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b
observationPeriod: 7772400s
severity: CRITICAL
stateInfo:
  state: ACTIVE
targetResources:
- //storage.googleapis.com/bucket-1

如需详细了解数据分析的组成部分,请参阅本页面上的查看存储桶级政策数据分析

REST

Recommender API 的 insights.get 方法可获取单一数据分析。

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

  • PROJECT_ID:您要为其管理数据分析的项目的 ID。
  • LOCATION:您要获取其数据分析的存储桶的位置。
  • INSIGHT_ID:您要查看的数据分析的 ID。如果您不知道数据分析 ID,可在项目中列出数据分析进行查找。数据分析的 ID 是数据分析的 name 字段中 insights/ 之后的所有内容。

HTTP 方法和网址:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

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

响应包含数据分析。例如,以下数据分析表明所有用户 (allUsers) 对存储桶 bucket-1 具有 Storage Legacy Bucket Reader 角色 (roles/storage.legacyBucketReader),但此角色在过去 90 天内仅使用了该角色中的两项权限:

{
  "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b",
  "description": "2 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/storage.legacyBucketReader",
    "member": "allUsers",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [
      {
        "permission": "storage.buckets.get"
      },
      {
        "permission": "storage.objects.list"
      }
    ],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "3"
  },
  "lastRefreshTime": "2022-05-24T07:00:00Z",
  "observationPeriod": "7772400s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883"
    }
  ],
  "targetResources": [
    "//storage.googleapis.com/bucket-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET",
  "etag": "\"2a8784e529b80aea\"",
  "severity": "CRITICAL"
}

如需详细了解数据分析的组成部分,请参阅本页面上的查看存储桶级政策数据分析

查看存储桶级政策数据分析

获得单个数据分析后,您可以查看其内容,以了解其突出显示的资源使用的模式。

数据分析的内容由其子类型确定。存储分区级政策数据分析 (google.iam.policy.Insight) 数据分析具有 PERMISSIONS_USAGE_STORAGE_BUCKET 子类型。

PERMISSIONS_USAGE_STORAGE_BUCKET 数据分析包含以下组成部分(不一定遵循以下顺序):

  • associatedRecommendations:与数据分析相关联的任何建议的标识符。如果没有与数据分析相关联的建议,则此字段为空。
  • category:IAM 数据分析的类别始终为 SECURITY
  • content:报告主帐号使用特定角色的权限的情况。此字段包含以下组成部分:

    • condition:关联到向主帐号授予该角色的绑定的任何条件。如果没有条件,则此字段将包含空条件。
    • exercisedPermissions:主帐号在观察期间使用的角色权限。
    • inferredPermissions:Recommender 通过机器学习根据主帐号实际使用的权限来确定的主帐号可能需要的角色权限。
    • member:已分析其权限使用情况的主帐号。
    • role:已分析其权限使用情况的角色。
  • description:直观易懂的数据分析摘要。
  • etag:数据分析的当前状态的唯一标识符。每次数据分析发生更改时,系统都会分配新的 etag 值。

    要更改数据分析的状态,您必须提供现有数据分析的 etag。使用 etag 有助于确保仅在上次检索数据分析后没有任何更改的情况下执行所有操作。

  • insightSubtype:数据分析子类型。
  • lastRefreshTime:上次刷新数据分析的日期,它表示用于生成数据分析的数据的新鲜度。
  • name:数据分析的名称,格式如下:

    projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID

    占位符具有以下值:

    • PROJECT_ID:生成数据分析的项目的 ID。
    • LOCATION:数据分析所针对的存储桶的位置。
    • INSIGHT_ID:数据分析的唯一 ID。
  • observationPeriod:生成数据分析的时间段。用于生成数据分析的源数据结束于 lastRefreshTime,在 lastRefreshTimeobservationPeriod 开始。
  • stateInfo:数据分析被提出后,会经历多次状态转换:

    • ACTIVE:数据分析已生成,但尚未执行任何操作,或执行的操作并未更新数据分析状态。当底层数据发生更改时,系统会更新活跃数据分析。
    • ACCEPTED:已根据数据分析执行某种操作。如果关联的建议标记为 CLAIMEDSUCCEEDEDFAILED,或数据分析被直接接受,则表示数据分析已被接收。如果数据分析处于 ACCEPTED 状态,则数据分析内容无法更改。标记为已接受的数据分析会保留 90 天。
  • targetResources:数据分析所在存储桶的完整资源名称。例如 //storage.googleapis.com/my-bucket

将存储桶级政策数据分析标记为 ACCEPTED

如果您根据有效数据分析执行操作,则可以将该数据分析标记为 ACCEPTEDACCEPTED 状态会通知 Recommender API 您已根据此数据分析执行操作,这有助于优化您的建议。

标记为 ACCEPTED 后,已接受的数据分析将保留 90 天。

gcloud

使用带有数据分析 ID 的 gcloud recommender insights mark-accepted 命令将数据分析标记为 ACCEPTED

  • INSIGHT_ID:您要查看的数据分析的 ID。如需查找此 ID,请列出项目中的数据分析
  • PROJECT_ID:您要管理数据分析的项目的 ID。
  • LOCATION:您要将其数据分析标记为 ACCEPTED 的存储桶的位置。
  • ETAG:数据分析版本的标识符。如需获取 etag,请执行以下操作:

    1. 使用 gcloud recommender insights describe 命令获取数据分析
    2. 在输出中查找并复制 etag 值,包括引号。例如 "d3cdec23cc712bd0"
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.policy.Insight \
    --project=PROJECT_ID \
    --location=LOCATION \
    --etag=ETAG

输出显示数据分析,现在状态为 ACCEPTED

associatedRecommendations:
- recommendation: projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '3'
  exercisedPermissions:
  - permission: storage.buckets.get
  - permission: storage.objects.list
  inferredPermissions: []
  member: allUsers
  role: roles/storage.legacyBucketReader
description: 2 of the permissions in this role binding were used in the past 90 days.
etag: '"0187c0362e4bcea7"'
insightSubtype: PERMISSIONS_USAGE_STORAGE_BUCKET
lastRefreshTime: '2022-05-24T07:00:00Z'
name: projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b
observationPeriod: 7772400s
severity: CRITICAL
stateInfo:
  state: ACCEPTED
targetResources:
- //storage.googleapis.com/bucket-1

如需详细了解数据分析的状态信息,请参阅本页面上的查看存储桶级政策数据分析

REST

Recommender API 的 insights.markAccepted 方法可将数据分析标记为 ACCEPTED

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

  • PROJECT_ID:您要为其管理数据分析的项目的 ID。
  • LOCATION:您要将其数据分析标记为 ACCEPTED 的存储桶的位置。
  • INSIGHT_ID:您要查看的数据分析的 ID。如果您不知道数据分析 ID,可在项目中列出数据分析进行查找。数据分析的 ID 是数据分析的 name 字段中 insights/ 之后的所有内容。
  • ETAG:数据分析版本的标识符。如需获取 etag,请执行以下操作:
    1. 使用 insights.get 方法获取数据分析
    2. 查找并复制响应中的 etag 值。

HTTP 方法和网址:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID:markAccepted

请求 JSON 正文:

{
  "etag": "ETAG"
}

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

响应包含数据分析,其状态现在为 ACCEPTED

{
  "name": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/00dd7eb5-15c2-4fb3-a9b2-1a85f842462b",
  "description": "2 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/storage.legacyBucketReader",
    "member": "allUsers",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [
      {
        "permission": "storage.buckets.get"
      },
      {
        "permission": "storage.objects.list"
      }
    ],
    "inferredPermissions": [],
    "currentTotalPermissionsCount": "3"
  },
  "lastRefreshTime": "2022-05-24T07:00:00Z",
  "observationPeriod": "7772400s",
  "stateInfo": {
    "state": "ACCEPTED"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/4a31a9d4-5132-4616-8a1f-fb07fad01883"
    }
  ],
  "targetResources": [
    "//storage.googleapis.com/bucket-1"
  ],
  "insightSubtype": "PERMISSIONS_USAGE_STORAGE_BUCKET",
  "etag": "\"9a5485cdc1f05b58\"",
  "severity": "CRITICAL"
}

如需详细了解数据分析的状态信息,请参阅本页面上的查看存储桶级政策数据分析

后续步骤