プロジェクト、フォルダ、組織に対するロールの推奨事項を確認して適用する

このページでは、プロジェクト、フォルダ、組織に対するロールの推奨事項を表示、確認、適用する方法について説明します。ロールの推奨事項により、プリンシパルが実際に必要な権限のみを持つようにすることで、最小権限の原則を徹底できます。

始める前に

  • Enable the IAM and Recommender APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  • ロールに関する推奨事項について理解する。

  • ロールの推奨事項のベスト プラクティスを確認する。

  • 省略可: 基本ロール以外のロールとカスタムロールに関するロールの推奨事項を表示、管理する場合は、Security Command Center の Premium ティアまたは Enterprise ティアが組織レベルまたはプロジェクト レベルで有効になっていることを確認してください。詳細については、お支払いについてをご覧ください。

  • 認証を設定する。

    Select the tab for how you plan to use the samples on this page:

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要な IAM のロール

このセクションでは、ロールの推奨事項が機能するために必要な IAM のロールと権限について説明します。

推奨事項を表示する

ロールの推奨事項を表示するために必要な権限を取得するには、推奨事項を表示するリソース(プロジェクト、フォルダ、組織)に対して次の IAM ロールを付与するように管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、ロールの推奨事項の表示に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

ロールの推奨事項を表示するには、次の権限が必要です。

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyInsights.get
  • recommender.iamPolicyInsights.list
  • recommender.iamPolicyLateralMovementInsights.get
  • recommender.iamPolicyLateralMovementInsights.list
  • Google Cloud コンソールで推奨事項を表示するには、resourcemanager.RESOURCE.getIamPolicy を使用します。ここで、RESOURCE は推奨事項を表示するリソースタイプ(projectsfoldersorganizations)です。

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

推奨事項の適用と拒否

ロールの推奨事項を表示、適用、拒否するために必要な権限を取得するには、推奨事項を管理するリソース(プロジェクト、フォルダ、または組織)に対して次の IAM ロールを付与するように管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、ロールの推奨事項の表示、適用、拒否に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

ロールの推奨事項を表示、適用、拒否するには、次の権限が必要です。

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyInsights.get
  • recommender.iamPolicyInsights.list
  • recommender.iamPolicyLateralMovementInsights.get
  • recommender.iamPolicyLateralMovementInsights.list
  • recommender.iamPolicyRecommendations.update
  • resourcemanager.RESOURCE.getIamPolicy。ここで、RESOURCE は推奨事項を管理するリソースタイプ(projectsfolders、または organizations)です。
  • resourcemanager.RESOURCE.setIamPolicy。ここで、RESOURCE は推奨事項を管理するリソースタイプ(projectsfolders、または organizations)です。

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

推奨事項の確認と適用

推奨事項を確認して適用する最も簡単な方法は、Google Cloud コンソールを使用することです。また、推奨事項を適用するときにカスタムロールを自動的に作成する場合は、 Google Cloud コンソールを使用する必要があります。

また、推奨事項を確認して適用するには、Google Cloud CLI と Recommender API を使用します。

コンソール

  1. Google Cloud コンソールで、[IAM] ページに移動します。

    IAM に移動

  2. プロジェクト、フォルダ、または組織を選択します。

  3. プロジェクトにアクセスできるプリンシパルのリストで、[セキュリティ分析情報] 列を見つけます。

    この列には、プリンシパルに付与された各ロールのセキュリティ関連の分析情報が表示されます。これらの分析情報には、リソースに対するプリンシパルのアクセス パターンが示されます。たとえば、一部の分析情報では、過剰な権限、すなわちプリンシパルが必要としない権限がハイライト表示されます。他の分析情報では、ラテラル ムーブメント機能を持つサービス アカウントがハイライト表示されます。

    分析情報に対処できる推奨事項がある場合、Google Cloud コンソールに アイコン(利用可能な推奨事項)が表示されます。

  4. 確認する推奨事項がある場合は、推奨されるロールの置き換え アイコンをクリックすると、推奨事項の詳細が表示されます。

    ロールの置き換えが推奨されている場合、ロールの推奨事項は、適用可能な事前定義ロール群を必ず提案します。

    場合によっては、ロールの推奨事項はプロジェクト レベルで新しいカスタムロールを作成することも提案します。カスタムロールの推奨事項がある場合は、 Google Cloud コンソールにデフォルトで表示されます。事前定義ロールの推奨事項に切り替えるには、[おすすめの事前定義ロールを見る] をクリックします。

  5. 推奨事項をよく確認し、プリンシパルによる Google Cloud リソースへのアクセス権がどのように変わるかを確認してください。サービス エージェントへの推奨事項を除き、推奨事項によってプリンシパルのアクセスレベルが向上することはありません。詳細については、ロール推奨事項の生成方法をご覧ください。

    Console で推奨事項を確認する方法については、このページの推奨事項の確認をご覧ください。

  6. (省略可)カスタムロールを作成する推奨事項の場合は、必要に応じて、タイトル説明IDロールのリリース ステージを更新します。

    カスタムロールに権限を追加する必要がある場合は、[権限を追加] をクリックします。

    カスタムロールから権限を削除する必要がある場合は、削除する各権限のチェックボックスをオフにします。

  7. 推奨事項に基づいて対処します。

    推奨事項を適用するには、[適用] または [作成して適用] をクリックします。90 日以内に変更したい場合は、推奨事項の履歴を使用して選択を元に戻してください。

    推奨事項を閉じるには、[閉じる] をクリックして選択した内容を確認します。レコメンデーションが有効である限りは、非表示にしたレコメンデーションを復元できます。

  8. 前の手順を繰り返し、すべての推奨事項を確認します。

gcloud

推奨事項を確認する:

推奨事項を表示するには、gcloud recommender recommendations list コマンドを実行します。

gcloud recommender recommendations list \
    --location=global \
    --recommender=google.iam.policy.Recommender \
    --RESOURCE_TYPE=RESOURCE_ID \
    --format=json

次の値を置き換えてください。

  • RESOURCE_TYPE: 推奨事項を一覧表示する対象のリソースタイプ。値 projectfolder、または organization を使用します。
  • RESOURCE_ID: 推奨事項を一覧表示する Google Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。

レスポンスは次の例のようになります。この例では、サービス アカウントは過去 90 日間に Compute Admin ロール(roles/compute.admin)の権限を使用していません。そのため、ロールの推奨事項により、次のロールは取り消しが提案されます。

[
  {
    "associatedInsights": [
      {
        "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/279ef748-408f-44db-9a4a-1ff8865b9839"
      }
    ],
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilter": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:id-1234567890@example-project.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/compute.admin"
              },
              "resource": "//cloudresourcemanager.googleapis.com/projects/example-project",
              "resourceType": "cloudresourcemanager.googleapis.com/Project"
            }
          ]
        }
      ]
    },
    "description": "This role has not been used during the observation window.",
    "recommenderSubtype": "REMOVE_ROLE",
    "etag": "\"770237e2c0decf40\"",
    "lastRefreshTime": "2020-01-09T06:06:17Z",
    "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 708
        }
      }
    },
    "priority": "P4",
    "stateInfo": {
      "state": "ACTIVE"
    }
  }
]

推奨事項を慎重に確認し、それによってプリンシパルの Google Cloud リソースへのアクセスがどのように変化するかを見極めてください。gcloud CLI から推奨事項を確認する方法については、このページの推奨事項を確認するをご覧ください。

推奨事項を適用するには:

  1. gcloud recommender recommendations mark-claimed コマンドを使用して、推奨事項の状態を CLAIMED, に変更します。これにより、推奨事項を適用している間は変更できなくなります。

    gcloud recommender recommendations mark-claimed \
        RECOMMENDATION_ID \
        --location=global \
        --recommender=google.iam.policy.Recommender \
        --RESOURCE_TYPE=RESOURCE_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    次の値を置き換えてください。

    • RECOMMENDATION_ID: レコメンデーションの一意の識別子。この値は、レコメンデーションの name フィールドの最後に表示されます。上記の例では、ID は fb927dc1-9695-4436-0000-f0f285007c0f です。
    • RESOURCE_TYPE: 推奨事項を管理する対象のリソースタイプ。値 projectfolder、または organization を使用します。
    • RESOURCE_ID: 推奨事項を管理する対象の Google Cloudプロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
    • FORMAT: レスポンスの形式。json または yaml を使用してください。
    • ETAG: レコメンデーションの etag フィールドの値("dd0686e7136a4cbb" など)。この値には引用符を含めることができます。
    • STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータを含むカンマで区切られた Key-Value ペア。たとえば、--state-metadata=reviewedBy=alice,priority=high です。メタデータにより、レコメンデーションの stateInfo.stateMetadata フィールドが置き換わります。

    コマンドが成功した場合、レスポンスは次の例のように CLAIMED ステータスにレコメンデーションを表示します。この例では、わかりやすくするためにほとんどのフィールドを省略しています。

    [
      {
        "description": "This role has not been used during the observation window.",
        "recommenderSubtype": "REMOVE_ROLE",
        "etag": "\"df7308cca9719dcc\"",
        "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
        "stateInfo": {
          "state": "CLAIMED",
          "stateMetadata": {
            "reviewedBy": "alice",
            "priority": "high"
          }
        }
      }
    ]
  2. プロジェクトの許可ポリシーを取得して、推奨事項が反映されるように許可ポリシーを変更して設定します。

  3. レコメンデーションを適用できた場合はレコメンデーションのステータスを SUCCEEDED に更新し、レコメンデーションを適用できない場合は FAILED に更新します。

    gcloud recommender recommendations COMMAND \
        RECOMMENDATION_ID \
        --location=global \
        --recommender=google.iam.policy.Recommender \
        --RESOURCE_TYPE=RESOURCE_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    次の値を置き換えてください。

    • COMMAND: レコメンデーションを適用できた場合は mark-succeeded を使用し、レコメンデーションを適用できなかった場合は mark-failed を使用します。
    • RECOMMENDATION_ID: レコメンデーションの一意の識別子。この値は、レコメンデーションの name フィールドの最後に表示されます。上記の例では、ID は fb927dc1-9695-4436-0000-f0f285007c0f です。
    • RESOURCE_TYPE: 推奨事項を管理する対象のリソースタイプ。値 projectfolder、または organization を使用します。
    • RESOURCE_ID: 推奨事項を管理する対象の Google Cloudプロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
    • FORMAT: レスポンスの形式。json または yaml を使用してください。
    • ETAG: レコメンデーションの etag フィールドの値("dd0686e7136a4cbb" など)。この値には引用符を含めることができます。
    • STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータを含むカンマで区切られた Key-Value ペア。たとえば、--state-metadata=reviewedBy=alice,priority=high です。メタデータにより、レコメンデーションの stateInfo.stateMetadata フィールドが置き換わります。

    たとえば、レコメンデーションを「完了」に設定した場合、レスポンスにより SUCCEEDED ステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。

    [
      {
        "description": "This role has not been used during the observation window.",
        "recommenderSubtype": "REMOVE_ROLE",
        "etag": "\"dd0686e7136a4cbb\"",
        "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
        "stateInfo": {
          "state": "SUCCEEDED",
          "stateMetadata": {
            "reviewedBy": "alice",
            "priority": "high"
          }
        }
      }
    ]

REST

推奨事項を確認する:

プロジェクト、フォルダ、または組織で利用可能なすべての推奨事項を一覧表示するには、Recommender API の recommendations.list メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • RESOURCE_TYPE: 推奨事項を管理するリソースタイプ。値 projectsfolders、または organizations を使用します。
  • RESOURCE_ID: 推奨事項を管理するGoogle Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • PAGE_SIZE: 省略可。このリクエストから返される結果の最大数。指定しなかった場合、サーバーが結果数を決定します。推奨事項の数がページサイズより大きい場合、レスポンスにページ設定トークンが含まれます。このトークンを使用して、結果の次のページを取得できます。
  • PAGE_TOKEN: 省略可。以前のレスポンスでこのメソッドから返されたページ設定トークン。指定すると、前のリクエストが終了した時点から推奨事項のリストが開始します。
  • FILTER: 省略可。返される推奨事項を制限するフィルタ式。stateInfo.state フィールドに基づいて推奨事項をフィルタできます。たとえば、stateInfo.state:"DISMISSED"stateInfo.state:"FAILED" です。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。

HTTP メソッドと URL:

GET https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスは次の例のようになります。この例では、プロジェクト example-project のサービス アカウントは過去 90 日間に Compute 管理者ロール(roles/compute.admin)の権限を使用していません。そのため、Recommender により、次のロールの取り消しが提案されます。

{
  "recommendations": [
    "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2020-01-09T06:06:17Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 708
        }
      }
    },
    "priority": "P4",
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilter": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:id-1234567890@example-project.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/compute.admin"
              },
              "resource": "//cloudresourcemanager.googleapis.com/projects/example-project",
              "resourceType": "cloudresourcemanager.googleapis.com/Project"
            }
          ]
        }
      ]
    },
    "stateInfo": {
      "state": "ACTIVE"
    }
    "etag": "\"770237e2c0decf40\"",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/279ef748-408f-44db-9a4a-1ff8865b9839"
      }
  ]
}

推奨事項を慎重に確認し、それによってプリンシパルの Google Cloud リソースへのアクセスがどのように変化するかを見極めてください。REST API から推奨事項を確認する方法については、このページの推奨事項を確認するをご覧ください。

推奨事項を適用するには、次の手順を行います。

  1. レコメンデーションを CLAIMED とマークします。

    推奨事項を CLAIMED としてマークし、適用中に推奨事項を変更できないようにするには、Recommender API の recommendations.markClaimed メソッドを使用します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • RESOURCE_TYPE: 推奨事項を管理するリソースタイプ。値 projectsfolders、または organizations を使用します。
    • RESOURCE_ID: 推奨事項を管理するGoogle Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
    • RECOMMENDATION_ID: 推奨事項の一意の識別子。この値は、レコメンデーションの name フィールドの最後に表示されます。たとえば、name フィールドが projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f の場合、レコメンデーション ID は fb927dc1-9695-4436-0000-f0f285007c0f です。
    • ETAG: レコメンデーションの etag フィールドの値("dd0686e7136a4cbb" など)。バックスラッシュを使用して引用符をエスケープします(例: "\"df7308cca9719dcc\"")。
    • STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータと Key-Value ペアを含むオブジェクト。例: {"reviewedBy": "alice", "priority": "high"}メタデータにより、レコメンデーションの stateInfo.stateMetadata フィールドが置き換わります。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。

    HTTP メソッドと URL:

    POST https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed

    リクエストの本文(JSON):

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    レスポンスでは、次の例のように CLAIMED ステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。

    {
      "description": "This role has not been used during the observation window.",
      "stateInfo": {
        "state": "CLAIMED",
        "stateMetadata": {
          "reviewedBy": "alice",
          "priority": "high"
        }
      },
      "etag": "\"dd0686e7136a4cbb\"",
      "recommenderSubtype": "REMOVE_ROLE"
    }
    

  2. プロジェクトの許可ポリシーを取得して、推奨事項が反映されるように許可ポリシーを変更します。

  3. レコメンデーションを適用できた場合はレコメンデーションのステータスを SUCCEEDED に更新し、レコメンデーションを適用できない場合は FAILED に更新します。

    SUCCEEDED

    推奨事項を SUCCEEDED としてマークして、適用可能であることを示すには、Recommender API の recommendations.markSucceeded メソッドを使用します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • RESOURCE_TYPE: 推奨事項を管理するリソースタイプ。値 projectsfolders、または organizations を使用します。
    • RESOURCE_ID: 推奨事項を管理するGoogle Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
    • RECOMMENDATION_ID: 推奨事項の一意の識別子。この値は、レコメンデーションの name フィールドの最後に表示されます。たとえば、name フィールドが projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f の場合、レコメンデーション ID は fb927dc1-9695-4436-0000-f0f285007c0f です。
    • ETAG: レコメンデーションの etag フィールドの値("dd0686e7136a4cbb" など)。バックスラッシュを使用して引用符をエスケープします(例: "\"df7308cca9719dcc\"")。
    • STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータと Key-Value ペアを含むオブジェクト。例: {"reviewedBy": "alice", "priority": "high"}メタデータにより、レコメンデーションの stateInfo.stateMetadata フィールドが置き換わります。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。

    HTTP メソッドと URL:

    POST https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded

    リクエストの本文(JSON):

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    レスポンスでは、次の例のように SUCCEEDED ステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。

    {
      "description": "This role has not been used during the observation window.",
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "reviewedBy": "alice",
          "priority": "high"
        }
      },
      "etag": "\"dd0686e7136a4cbb\"",
      "recommenderSubtype": "REMOVE_ROLE"
    }
    

    FAILED

    推奨事項を適用できなかったことを示す FAILED とマークするには、Recommender API の recommendations.markFailed メソッドを使用します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • RESOURCE_TYPE: 推奨事項を管理するリソースタイプ。値 projectsfolders、または organizations を使用します。
    • RESOURCE_ID: 推奨事項を管理するGoogle Cloud プロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
    • RECOMMENDATION_ID: 推奨事項の一意の識別子。この値は、レコメンデーションの name フィールドの最後に表示されます。たとえば、name フィールドが projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f の場合、レコメンデーション ID は fb927dc1-9695-4436-0000-f0f285007c0f です。
    • ETAG: レコメンデーションの etag フィールドの値("dd0686e7136a4cbb" など)。バックスラッシュを使用して引用符をエスケープします(例: "\"df7308cca9719dcc\"")。
    • STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータと Key-Value ペアを含むオブジェクト。例: {"reviewedBy": "alice", "priority": "high"}メタデータにより、レコメンデーションの stateInfo.stateMetadata フィールドが置き換わります。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。

    HTTP メソッドと URL:

    POST https://recommender.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed

    リクエストの本文(JSON):

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    レスポンスでは、次の例のように FAILED ステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。

    {
      "description": "This role has not been used during the observation window.",
      "stateInfo": {
        "state": "FAILED",
        "stateMetadata": {
          "reviewedBy": "alice",
          "priority": "high"
        }
      },
      "etag": "\"dd0686e7136a4cbb\"",
      "recommenderSubtype": "REMOVE_ROLE"
    }
    

推奨事項について

各推奨事項には、それが作られた理由の理解に役立つ情報が含まれます。

Console

推奨事項が作られた理由を理解できるように、Google Cloud コンソールには、推奨事項に関連付けられたポリシーの分析情報によって報告されたプリンシパルの権限の使用状況が表示されます。たとえば、次のようなリストが表示されます。

推奨事項の適用による影響を容易に把握するため、Google Cloud コンソールでは、権限のリストを色と記号で分類して表示します。このリストは、推奨事項を適用した場合にプリンシパルの権限がどのように変化するかを示しています。たとえば、次のようなリストが表示されます。

それぞれの色と記号に関連付けられている権限の種類は次のとおりです。

  • グレー、記号なし: プリンシパルの現在のロールと推奨されるロールの両方に含まれる権限。

  • 赤、マイナス記号付き: プリンシパルの現在のロールに含まれている権限のうち、過去 90 日間に使用されなかったため推奨ロールに含まれない権限。

  • 緑、プラス記号: プリンシパルの現在のロールにはなく、推奨ロールには含まれる権限。この種類の権限は、サービス エージェントへの推奨事項にのみ表示されます。

  • 青色、機械学習アイコン付き: プリンシパルの現在のロールと推奨ロールの両方にある権限のうち、プリンシパルが過去 90 日間にその権限を使用したからではなく、機械学習を通じて今後必要になると判断されたために推奨事項に含まれている権限。

一部の推奨事項は、ラテラル ムーブメントの分析情報にも関連付けられています。ラテラル ムーブメントの分析情報により、あるプロジェクトのサービス アカウントが別のプロジェクトのサービス アカウントの権限を借用することを許可するロールが特定されます。推奨事項がラテラル ムーブメントの分析情報に関連付けられている場合、 Google Cloud コンソールには次のように表示されます。

  • サービス アカウントの元のプロジェクト: 権限を借用したサービス アカウントが作成されたプロジェクト。

  • このプロジェクトで権限借用されるサービス アカウント: 現在のプロジェクト内で、借用権限を持つサービス アカウントが権限を借用できるサービス アカウントすべてのリスト。

gcloud

推奨事項のフィールドの詳細については、Recommendation リファレンスをご覧ください。

この推奨事項のベースとなる権限の使用状況を確認するには、推奨事項に関連付けられたポリシー分析情報を表示します。これらの分析情報は associatedInsights フィールドにリストされています。推奨事項に関連付けられたポリシー分析情報を表示するには、次のようにします。

  • associatedInsights フィールドのどの分析情報がポリシーの分析情報であるかを特定します。ポリシー分析情報の分析情報のタイプは google.iam.policy.insight です。このタイプは、insight フィールドの insightTypes の後に表示されます。
  • ポリシー分析情報の ID をコピーします。ID は、insight フィールドの insights/ より後の部分です。上の例では、分析情報 ID は 279ef748-408f-44db-9a4a-1ff8865b9839 です。
  • コピーした分析情報 ID を使用して、手順どおりに操作を行い、ポリシーの分析情報を取得します。

一部の推奨事項はラテラル ムーブメントの分析情報にも関連付けられています。これにより、プロジェクトのサービス アカウントに別のプロジェクトのサービス アカウントの権限借用を許可するロールを確認できます。これらの分析情報も associatedInsights フィールドにリストされています。推奨事項に関連付けられたラテラル ムーブメントの分析情報を表示するには、次のようにします。

  • associatedInsights フィールド内のどの分析情報が、ラテラル ムーブメントの分析情報であるかを確認します。ラテラル ムーブメントの分析情報のタイプは google.iam.policy.LateralMovementInsight です。このタイプは、insight フィールドの insightTypes の後に表示されます。
  • ポリシー分析情報の ID をコピーします。ID は、insight フィールドの insights/ より後の部分です。上の例では、分析情報 ID は 279ef748-408f-44db-9a4a-1ff8865b9839 です。
  • コピーした分析情報 ID を使用して、手順どおりに操作を行い、ラテラル ムーブメントの分析情報を取得します。

REST

推奨事項のフィールドの詳細については、Recommendation リファレンスをご覧ください。

この推奨事項のベースとなる権限の使用状況を確認するには、推奨事項に関連付けられたポリシー分析情報を表示します。これらの分析情報は associatedInsights フィールドにリストされています。推奨事項に関連付けられたポリシー分析情報を表示するには、次のようにします。

  1. associatedInsights フィールドのどの分析情報がポリシーの分析情報であるかを特定します。ポリシー分析情報の分析情報のタイプは google.iam.policy.insight です。このタイプは、insight フィールドの insightTypes の後に表示されます。
  2. ポリシー分析情報の ID をコピーします。ID は、insight フィールドの insights/ より後の部分です。たとえば、insight フィールドが projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/279ef748-408f-44db-9a4a-1ff8865b9839 の場合、分析情報 ID は 279ef748-408f-44db-9a4a-1ff8865b9839 です。
  3. コピーした分析情報 ID を使用して、手順どおりに操作を行い、ポリシーの分析情報を取得します。

一部の推奨事項はラテラル ムーブメントの分析情報にも関連付けられています。これにより、プロジェクトのサービス アカウントに別のプロジェクトのサービス アカウントの権限借用を許可するロールを確認できます。これらの分析情報も associatedInsights フィールドにリストされています。推奨事項に関連付けられたラテラル ムーブメントの分析情報を表示するには、次のようにします。

  1. associatedInsights フィールド内のどの分析情報が、ラテラル ムーブメントの分析情報であるかを確認します。ラテラル ムーブメントの分析情報のタイプは google.iam.policy.LateralMovementInsight です。このタイプは、insight フィールドの insightTypes の後に表示されます。
  2. ポリシー分析情報の ID をコピーします。ID は、insight フィールドの insights/ より後の部分です。たとえば、insight フィールドが projects/123456789012/locations/global/insightTypes/google.iam.policy.LateralMovementInsight/insights/13088eec-9573-415f-81a7-46e1a260e860 の場合、分析情報 ID は 13088eec-9573-415f-81a7-46e1a260e860 です。
  3. コピーした分析情報 ID を使用して、手順どおりに操作を行い、ラテラル ムーブメントの分析情報を取得します。

変更を表示する / 元に戻す / 復元する

プロジェクト レベルのロール バインディングに対する推奨事項を適用または拒否すると、その操作が推奨事項履歴に表示されます。

推奨事項の履歴を表示するには:

  1. Google Cloud コンソールで、[IAM] ページに移動します。

    IAM に移動

  2. プロジェクト、フォルダ、または組織を選択します。

  3. 画面上部の [推奨事項の履歴] をクリックします。

    Google Cloud コンソールに、ロールの推奨事項に対する以前のアクションの一覧が表示されます。

  4. 推奨事項の詳細を表示するには、 展開矢印をクリックします。

    Google Cloud コンソールには、アクションを実行したプリンシパルを含む、実行されたアクションの詳細が表示されます。

  5. (省略可)必要に応じて、レコメンデーションの変更の取り消しや、レコメンデーションを復元して、レコメンデーションを元に戻すことができます。

    以前に適用した推奨事項の変更を元に戻すには、[元に戻す] をクリックします。 Google Cloud コンソールは、プリンシパルのロールへの変更を元に戻します。Google Cloud コンソールに推奨事項が表示されなくなります。

    閉じたレコメンデーションを復元するには、[復元] をクリックします。推奨事項は、Google Cloud コンソールの IAM ページに表示されます。ロールや権限は変更されません。

次のステップ