Google Cloud Recommender

このドキュメントでは、 Google CloudRecommender を Google Security Operations と構成して統合するためのガイダンスを提供します。

前提条件

統合を構成する前に、前提条件の手順をすべて完了してください。

IAM ロールを作成して構成する

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

    IAM ロールに移動

  2. [ロールを作成] をクリックして、統合に必要な権限を持つカスタムロールを作成します。

  3. 新しいカスタムロールの場合は、タイトル説明、一意の ID を指定します。

  4. [ロールのリリース段階] を [一般提供] に設定します。

  5. 作成したロールに次の権限を付与します。

    • iam.roles.create
    • iam.roles.delete
    • iam.roles.get
    • iam.roles.list
    • iam.roles.undelete
    • iam.roles.update
    • iam.serviceAccounts.create
    • iam.serviceAccounts.delete
    • iam.serviceAccounts.disable
    • iam.serviceAccounts.enable
    • iam.serviceAccounts.get
    • iam.serviceAccounts.getIamPolicy
    • iam.serviceAccounts.list
    • iam.serviceAccounts.setIamPolicy
    • iam.serviceAccounts.undelete
    • iam.serviceAccounts.update
    • recommender.iamPolicyInsights.get
    • recommender.iamPolicyInsights.list
    • recommender.iamPolicyLateralMovementInsights.get
    • recommender.iamPolicyLateralMovementInsights.list
    • recommender.iamPolicyRecommendations.get
    • recommender.iamPolicyRecommendations.list
    • recommender.iamPolicyRecommendations.update
    • recommender.iamServiceAccountInsights.get
    • recommender.iamServiceAccountInsights.list
    • recommender.locations.get
    • recommender.locations.list
    • resourcemanager.folders.get
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
    • resourcemanager.organizations.get
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy
    • resourcemanager.projects.get
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.list
    • resourcemanager.projects.setIamPolicy
    • securitycenter.assets.list
    • securitycenter.findings.group
    • securitycenter.findings.list
    • securitycenter.findings.listFindingPropertyNames
    • securitycenter.findings.setMute
    • securitycenter.findings.setState
    • securitycenter.sources.get
    • securitycenter.sources.list
    • securitycenter.userinterfacemetadata.get
  6. [作成] をクリックします。

サービス アカウントを作成する

  1. サービス アカウントを作成するには、サービス アカウントの作成の手順に沿って操作します。

  2. サービス アカウントを作成したら、JSON ファイルとしてダウンロードします。統合パラメータを構成するときに、ダウンロードした JSON ファイルの内容を指定する必要があります。

Google Cloud Recommender を Google SecOps と統合する

Google SecOps SOAR で統合を構成する手順の詳細については、統合を構成するをご覧ください。

統合の入力

統合を構成するには、次のパラメータを使用します。

パラメータ
API Root 必須

Google Cloud Recommender サービスの API ルート。

デフォルト値は https://recommender.googleapis.com/v1/ です

Organization ID 省略可

Google CloudRecommender 統合で使用する組織 ID。

User's Service Account 必須

Google Cloud Recommender サービス アカウントのコンテンツ。

サービス アカウントの作成時にダウンロードしたサービス アカウントの JSON ファイルの内容をすべて提供してください。

Verify SSL 省略可

オンにすると、 Google Cloud Recommender サーバーへの接続用の SSL 証明書が有効であるかどうかが検証されます。

デフォルトでオンになっています。

操作

IAM の推奨事項を適用する

指定された入力に基づいて IAM の推奨事項を適用します。

このアクションは google.iam.policy.Recommender の推奨事項でのみ機能します。

エンティティ

このアクションはエンティティに対しては実行されません。

アクション入力

アクションを構成するには、次のパラメータを使用します。

パラメータ
IAM Recommendations JSON 必須

推奨事項の JSON 結果。

JSON 結果は、推奨事項を一覧表示アクションまたは推奨事項を取得アクションからプレースホルダとして指定できます。

アクションの出力

アクションの出力タイプ
ケースウォールのアタッチメント なし
ケースのウォールのリンク なし
ケースウォール テーブル なし
拡充テーブル なし
エンティティのインサイト なし
インサイト なし
JSON の結果 利用可能
OOTB ウィジェット なし
スクリプトの結果 利用可能
スクリプトの結果
スクリプトの結果名
is_success True/False
JSON の結果
{
  "applied_recommendations": [
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/217d3019-bae5-4a52-9968-787fdd546a53",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 610
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/compute.instanceAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/compute.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/compute.admin",
          "addedRoles": [
            "roles/compute.instanceAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"892d57ee41baa03e\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    },
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 19
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "user:USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/storage.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/storage.admin",
          "addedRoles": [
            "roles/storage.objectAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"af7635ffeb512998\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    }
  ],
  "failed_recommendations": []
}
ケースウォール

このアクションでは、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully applied provided IAM recommendations. アクションが成功しました。
Successfully applied provided IAM recommendation, but some of the recommendations were not applied. アクションが成功しました。
No provided IAM recommendations were applied. 最適化案を適用できませんでした。
Error executing action ACTION_NAME. アクションがエラーを返しました。

推奨事項を取得する

Google Cloud Recommender サービスから特定の推奨事項を取得します。

エンティティ

このアクションはエンティティに対しては実行されません。

アクション入力

アクションを構成するには、次のパラメータを使用します。

パラメータ
Recommendation name 必須

返す推奨事項の名前を指定します。

このアクションは、カンマ区切りの文字列として複数の値を受け入れます。

期待される入力の例:

    projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7
    

アクションの出力

アクションの出力タイプ
ケースウォールのアタッチメント なし
ケースのウォールのリンク なし
ケースウォール テーブル なし
拡充テーブル なし
エンティティのインサイト なし
インサイト なし
JSON の結果 利用可能
OOTB ウィジェット なし
スクリプトの結果 利用可能
スクリプトの結果
スクリプトの結果名
is_success True/False
JSON の結果
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
ケースウォール

このアクションでは、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully found recommendation in the Google Cloud Recommender service. アクションが成功しました。
No recommendations were found in the Google Cloud Recommender service. データを利用できません。
Error executing action ACTION_NAME アクションがエラーを返しました。

推奨事項の一覧表示

Google Cloud Recommender サービスで利用可能な推奨事項を一覧表示します。

エンティティ

このアクションはエンティティに対しては実行されません。

アクション入力

アクションを構成するには、次のパラメータを使用します。

パラメータ
Recommendation Filter 省略可

推奨事項を取得するフィルタを指定します。

パラメータは、次のいずれかの形式の文字列にする必要があります。

  • PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID
  • //cloudresourcemanager.googleapis.com/ PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID

値が指定されていない場合、アクションは構成されたサービス アカウントからプロジェクト ID を取得します。

Recommendation Location 必須

最適化案を取得する Google Cloud ロケーションを指定します。

デフォルトは、global です。

Recommendation State 省略可

返す推奨事項の状態を指定します。

デフォルトは、Not Specified です。

次の値があります。

  • Not Specified
  • Active
  • Dismissed
Recommendation Priority 省略可

返す推奨事項の優先度を指定します。複数の値は、カンマ区切りの文字列として指定できます。

Recommender Subtype 省略可

返される Recommender サブタイプを指定します。

デフォルトは、Not Specified です。

次の値があります。

  • Not Specified
  • REMOVE_ROLE
  • REPLACE_ROLE
Max Records To Return 省略可

返すレコードの数を指定します。値が指定されていない場合、アクションはデフォルトで 50 件のレコードを返します。

アクションの出力

アクションの出力タイプ
ケースウォールのアタッチメント なし
ケースのウォールのリンク なし
ケースウォール テーブル 利用可能
拡充テーブル なし
エンティティのインサイト なし
インサイト なし
JSON の結果 利用可能
OOTB ウィジェット なし
スクリプトの結果 利用可能
スクリプトの結果
スクリプトの結果名
is_success True/False
JSON の結果
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/i/locations/global/insightTypes/"
      }
    ],
    "priority": "P4"
  },
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 5
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                "/iamPolicy/bindings/*/role": "roles/chroniclesm.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects",
        "member": "user:USER_ID@example.com",
        "removedRole": "roles/chroniclesm.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects"
      }
    ],
    "priority": "P4"
  }
]
ケースウォール

このアクションでは、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully found recommendations for the provided criteria in the Google Cloud Recommender service. アクションが成功しました。
No recommendations were found for the provided criteria in the Google Cloud Recommender service. データはありません。
Error executing action ACTION_NAME. アクションがエラーを返しました。

このアクションでは、次のケースウォール テーブルが提供されます。

利用可能な最適化案
  • 名前
  • 説明
  • カテゴリ
  • 推奨事項のサブタイプ
  • 優先度
  • 状態
  • 最終更新時間

Ping

Google SecOps Marketplace タブの統合構成ページで提供されるパラメータを使用して、 Google Cloud Recommender サービスへの接続をテストします。

エンティティ

このアクションはエンティティに対しては実行されません。

アクション入力

なし

アクションの出力

アクションの出力タイプ
ケースウォールのアタッチメント なし
ケースのウォールのリンク なし
ケースウォール テーブル なし
拡充テーブル なし
エンティティのインサイト なし
インサイト なし
JSON の結果 なし
OOTB ウィジェット なし
スクリプトの結果 利用可能
スクリプトの結果
スクリプトの結果名
is_success True/False
ケースウォール

このアクションでは、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully connected to the Google Cloud Recommender service with the provided connection parameters! アクションが成功しました。
Failed to connect to the Google Cloud Recommender service! アクションがエラーを返しました。

最適化案を更新する

Google Cloud Recommender サービスで推奨事項を更新します。

エンティティ

このアクションはエンティティに対しては実行されません。

アクション入力

次のパラメータを使用してアクションを構成します。

パラメータ
Recommendation name 必須

更新する推奨事項の名前を指定します。

このアクションは、カンマ区切りの文字列として複数の値を受け入れます。

想定される入力の例: projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7

Recommendation State 省略可

推奨事項の変更先の状態を指定します。

デフォルトは、Not Specified です。

次の値があります。

  • Not Specified
  • Claimed
  • Dismissed
Recommendation Result 省略可

レコメンデーションの変更先の結果を指定します。

デフォルトは、Not Specified です。

次の値があります。

  • Not Specified
  • Failed
  • Succeeded

アクションの出力

アクションの出力タイプ
ケースウォールのアタッチメント なし
ケースのウォールのリンク なし
ケースウォール テーブル なし
拡充テーブル なし
エンティティのインサイト なし
インサイト なし
JSON の結果 利用可能
OOTB ウィジェット なし
スクリプトの結果 利用可能
スクリプトの結果
スクリプトの結果名
is_success True/False
JSON の結果
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
ケースウォール

このアクションでは、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully updated recommendation in the Google Cloud Recommender service. アクションが成功しました。
No recommendations were found in the Google Cloud Recommender service. データを利用できません。
Error executing action ACTION_NAME アクションがエラーを返しました。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。