評価を作成して実行する

Workload Manager を使用すると、業界標準と Google Cloud のベスト プラクティスに照らしてワークロードをスキャンする自動評価を作成して実行できます。評価を定期的に実行することで、プロジェクト全体で構成のドリフトやアーキテクチャのリスクを早期に検出できるため、ワークロードの信頼性、セキュリティ、パフォーマンスを向上させることができます。

ワークロード評価を作成して実行するには、 Google Cloud コンソールまたは Workload Manager API を使用します。評価の仕組みに関するコンセプトについては、ワークロード マネージャーの評価についてをご覧ください。

制限事項

ワークロード マネージャーは、プロジェクトごとに 1 時間あたり最大 25 件の評価を同時に実行できます。プロジェクトに 25 件を超える評価がある場合は、1 時間あたりの評価を 25 件に制限するか、評価スケジュールを 6 時間ごとまたはそれ以下の頻度で実行するように設定します。

始める前に

ワークロード評価を作成して実行する前に、次の前提条件を完了します。

  1. 評価する Google Cloud リソースがターゲット プロジェクトにすでに作成されていることを確認します。サポートされているリソースとルールのリストについては、Google Cloud のベスト プラクティス リファレンスをご覧ください。

  2. 評価を作成して実行する Google Cloud コンシューマ プロジェクトで、必要な API を有効にします。

  3. アプリケーションまたはデータベースのワークロードを評価する場合は、ワークロードを実行するすべてのコンピューティング インスタンスまたはクラスタに、必要なエージェントまたはオペレーターが設定されていることを確認します。

  4. 省略可: 組み込みの Google Cloud ベスト プラクティスに加えてカスタムルールを含める場合は、GoogleCloudPlatform/workload-manager GitHub リポジトリから、最上位に /lib フォルダと /rules フォルダを含む Cloud Storage バケットにサンプルルールをアップロードします。カスタムルールのアップロードの詳細については、Rego を使用してカスタムルールを作成するをご覧ください。

  5. 評価を作成して実行するには、必要なロールと権限があることを確認します。

  6. Workload Manager API を使用して評価を作成する場合は、コンシューマ プロジェクトで Workload Manager サービス エージェントを手動で作成し、次のロールを付与します。

    • ターゲット プロジェクトのワークロード マネージャー サービス エージェント(roles/workloadmanager.serviceAgent)。

    • 評価スケジュールを設定すると、コンシューマー プロジェクトのワークロード マネージャー Worker(roles/workloadmanager.worker)。

    Google Cloud コンソールを使用すると、ワークロード マネージャーによってサービス エージェントが自動的に作成されます。サービス エージェントの構成の詳細については、ワークロード マネージャー サービス エージェントをご覧ください。

必要なロール

ワークロード評価を作成して実行するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • 評価を作成して実行する: コンシューマー プロジェクトに対する ワークロード マネージャー評価管理者(roles/workloadmanager.evaluationAdmin)
  • サービス エージェントを作成する(最初の評価のみ): コンシューマー プロジェクトとターゲット プロジェクトに対するプロジェクト IAM 管理者(roles/resourcemanager.projectIamAdmin)
  • Cloud Asset Inventory データの読み取り(カスタムルールとベスト プラクティス): コンシューマー プロジェクトに対する Cloud Asset オーナー(roles/cloudasset.owner)
  • Cloud Storage バケットからカスタムルールを読み取る(省略可): コンシューマ プロジェクトに対する Storage オブジェクト閲覧者(roles/storage.objectViewer)
  • アラート通知を作成する(省略可): コンシューマ プロジェクトに対する Monitoring 指標の書き込み(roles/monitoring.metricWriter)
  • 評価結果を BigQuery にエクスポートする(省略可): コンシューマー プロジェクトに対する BigQuery 管理者(roles/bigquery.admin)

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

これらの事前定義ロールには、ワークロード評価の作成と実行に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

ワークロード評価を作成して実行するには、次の権限が必要です。

  • 評価を作成して実行します。
    • コンシューマー プロジェクトに対する workloadmanager.evaluations.create
    • コンシューマー プロジェクトに対する workloadmanager.evaluations.run
  • サービス エージェントを作成する(最初の評価のみ): コンシューマ プロジェクトとターゲット プロジェクトに対する resourcemanager.projects.setIamPolicy
  • Cloud Asset Inventory データの読み取り(カスタムルールとベスト プラクティス): コンシューマ プロジェクトに対する cloudasset.assets.searchAllResources
  • Cloud Storage バケットからカスタムルールを読み取る(省略可):
    • コンシューマー プロジェクトに対する storage.objects.get
    • コンシューマー プロジェクトに対する storage.objects.list
  • アラート通知を作成する(省略可): コンシューマー プロジェクトに対する monitoring.timeSeries.create
  • 評価結果を BigQuery にエクスポートする(省略可):
    • コンシューマー プロジェクトに対する bigquery.datasets.get
    • コンシューマー プロジェクトに対する bigquery.tables.create
    • コンシューマー プロジェクトに対する bigquery.tables.updateData

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

コンシューマー プロジェクトとターゲット プロジェクトのロールの詳細については、評価用のコンシューマー プロジェクトとターゲット プロジェクトの IAM ロールとワークロード マネージャーの IAM ロールと権限をご覧ください。

ワークロード評価を作成する

ワークロード評価は、 Google Cloud コンソールまたはワークロード マネージャー API を使用して作成できます。カスタムルールを使用する評価を作成するには、カスタムルールを使用してワークロードを評価するをご覧ください。

コンソール

Google Cloud コンソールでワークロード評価を作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[ワークロード マネージャー] ページに移動します。

    [ワークロード マネージャー] に移動

  2. 評価を保存して実行する Google Cloud コンシューマ プロジェクトを選択します。

  3. Workload Manager に必要な API を有効にするように求められたら、[有効にする] をクリックします。

  4. [新しい評価] をクリックします。

  5. [名前とルール] ペインで、評価の詳細を構成し、評価するルールを選択します。

    1. [評価名] に、ワークロード評価の名前を入力します。

    2. 省略可: [説明] に、ワークロード評価の説明を入力します。

    3. [ワークロード タイプ] フィールドで、サポートされている次のいずれかのワークロード タイプを選択します。

      • SAP

      • SQL Server

      • MySQL

      • Redis

      • OpenShift

      • カスタム

      [カスタム] を選択すると、Google Cloud のベスト プラクティスまたは Cloud Storage に保存されているカスタムルールに照らしてワークロードを評価できます。

    4. [ルールの表] で、ワークロード評価に含めるベスト プラクティス ルールを選択します。各ルールの詳細については、Google Cloud ベスト プラクティス リファレンスをご覧ください。

  6. [続行] をクリックします。

  7. [スコープとフィルタ] ペインで、評価の対象プロジェクトとリソース フィルタを指定します。

    1. [評価の範囲] セクションで、評価するリソースを含むターゲット プロジェクトを追加するには、[プロジェクトを参照] をクリックします。

    2. 省略可: ターゲット プロジェクト間でルールの検出結果を共有するには、[検出結果を共有する] チェックボックスをオンにします。詳細については、評価結果を共有するをご覧ください。

    3. 省略可: [リソースにフィルタを適用する] セクションで、ターゲット プロジェクトから特定のリソースを選択するには、[フィルタを追加] をクリックし、次のいずれかのフィルタタイプを使用します。

      • サービス アカウント: 接続されているサービス アカウントで Compute Engine インスタンスをフィルタします。

      • ラベル: Key-Value ラベルペアでリソースをフィルタします。

      • 名前: リソース ID パターンでリソースをフィルタします。

      同じフィルタタイプ内の複数のフィルタは、OR ロジックを使用します。異なるフィルタタイプをまたぐフィルタでは、AND ロジックを使用します。

    4. プロンプトが表示されたら、ワークロード マネージャーで評価データを保存するリージョンを選択します。

  8. [続行] をクリックします。

  9. [頻度と通知] ペインで、評価スケジュール、エクスポート先、アラート通知を構成します。

    1. [スケジュール] セクションで、評価の実行頻度を選択します。

    2. 省略可: 評価結果を評価と同じリージョンのリージョン BigQuery データセットにエクスポートするには、[BigQuery データセットに保存] を選択してデータセットを指定します。評価用に別のテーブルを作成するには、[この評価用に新しい結果テーブルを作成する] を選択します。

    3. 省略可: [通知] セクションで、アラート通知を受信するイベントを選択し、通知チャンネルを選択します。

  10. [続行] をクリックします。

  11. [確認] ペインで、ワークロード評価の設定を確認します。設定を変更するには、左側のナビゲーションでペイン名をクリックします。

  12. [作成] をクリックします。

REST

ワークロード マネージャー API を使用してワークロード評価を作成する手順は次のとおりです。

  1. 省略可: ワークロード タイプで使用可能なルール名のリストを取得するには、projects.locations.rules.list メソッドに GET リクエストを送信します。

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
        "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/rules?evaluationType=EVALUATION_TYPE"
    

    次のように置き換えます。

  2. 評価を作成するには、projects.locations.evaluations.create メソッドに POST リクエストを送信します。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
        -d '{
          "description": "DESCRIPTION",
          "evaluationType": "EVALUATION_TYPE",
          "ruleNames": [
            "RULE_NAMES"
          ],
          "resourceFilter": {
            "scopes": [
              "projects/TARGET_PROJECT_ID"
            ],
            "resourceIdPatterns": [
              "RESOURCE_ID_PATTERNS"
            ],
            "inclusionLabels": {
              "LABEL_KEY": "LABEL_VALUE"
            },
            "gceInstanceFilter": {
              "serviceAccounts": [
                "SERVICE_ACCOUNT_EMAIL"
              ]
            }
          },
          "schedule": "SCHEDULE",
          "bigQueryDestination": {
            "destinationDataset": "projects/BQ_PROJECT_ID/datasets/BQ_DATASET_ID",
            "createNewResultsTable": true
          }
        }' \
        "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/evaluations?evaluationId=EVALUATION_ID"
    

    次のように置き換えます。

    • CONSUMER_PROJECT_ID: 評価を作成するコンシューマー プロジェクトの ID

    • LOCATION_ID: ワークロード マネージャーが評価を保存するサポート対象のリージョン(例: us-central1)

    • EVALUATION_ID: 評価の一意の ID

    • DESCRIPTION: 評価の説明

    • EVALUATION_TYPE: ワークロード評価タイプ(SAP、SQL_SERVER、MYSQL、REDIS、OPENSHIFT、OTHER など)

    • RULE_NAMES: 評価に含めるルール ID のカンマ区切りのリスト

    • TARGET_PROJECT_ID: 評価するリソースを含むターゲット プロジェクトのプロジェクト ID またはプロジェクト番号

    • RESOURCE_ID_PATTERNS: 評価対象のリソースをフィルタするためのオプションのリソース名パターン(//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance* など)

    • LABEL_KEY と LABEL_VALUE: リソースをフィルタするためのオプションの Key-Value ラベルペア

    • SERVICE_ACCOUNT_EMAIL: Compute Engine インスタンスをフィルタリングするためのサービス アカウントのメールアドレス(省略可)

    • SCHEDULE: 繰り返し評価実行の UTC 形式の cron 式(省略可)。たとえば、6 時間ごとに実行する場合は 0 */6 * * *

    • BQ_PROJECT_ID と BQ_DATASET_ID: 評価結果をエクスポートするためのオプションのプロジェクト ID とリージョン BigQuery データセット ID

    サポートされているフィールドの詳細については、Evaluation リソース リファレンスをご覧ください。

ワークロード評価を実行する

定期的なスケジュールで評価を実行するだけでなく、 Google Cloud コンソールまたは Workload Manager API を使用して、既存のワークロード評価をいつでもオンデマンドで実行できます。

コンソール

Google Cloud コンソールでワークロードの評価を実行する手順は次のとおりです。

  1. Google Cloud コンソールで、[ワークロード マネージャー] ページに移動します。

    [ワークロード マネージャー] に移動

  2. 実行する評価の名前をクリックします。

  3. [評価情報] ページで、[実行] をクリックします。

    ワークロード評価が完了するまで数分ほどかかります。最新の結果を表示する前に、評価の実行が完了するまで待ちます。

REST

ワークロード マネージャー API を使用してワークロード評価を実行するには、projects.locations.evaluations.executions.run メソッドに POST リクエストを送信します。

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
    -d '{
      "executionId": "EXECUTION_ID"
    }' \
    "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/evaluations/EVALUATION_ID/executions:run"

次のように置き換えます。

  • CONSUMER_PROJECT_ID: 評価を保存するコンシューマー プロジェクトの ID。

  • LOCATION_ID: 評価のリージョン(us-central1 など)。

  • EVALUATION_ID: 実行する評価の ID。

  • EXECUTION_ID: この実行の一意の ID(省略可)。ワークロード マネージャーで ID を自動的に生成するには、このフィールドを省略します。

このリクエストは、長時間実行 Operation を返します。実行のステータスを確認するか、結果を一覧表示するには、projects.locations.evaluations.executions.get メソッドと projects.locations.evaluations.executions.results.list メソッドを使用します。

評価結果を共有する

評価結果を共有すると、ターゲット プロジェクトのリソース オーナーは、ローカル プロジェクト コンソールと、Compute Engine などの統合ページで構成結果を表示できます。この機能では、コンシューマー プロジェクトへの直接 IAM アクセスは必要ありません。

評価を編集して検出結果を共有する

既存の評価で検出結果の共有を有効または無効にする手順は次のとおりです。

  1. Google Cloud コンソールで、[ワークロード マネージャー] ページに移動します。

    [ワークロード マネージャー] に移動

  2. 編集する評価の名前をクリックします。

  3. [編集] をクリックします。

  4. [スコープとフィルタ] セクションで、[検出結果を共有する] チェックボックスをオンまたはオフにします。

  5. [保存] をクリックします。

共有された検出結果の公開設定

[検出結果を共有する] を有効にすると、ワークロード マネージャーは、評価スコープで指定されたすべてのターゲット プロジェクトにルールの検出結果を伝播します。検出結果は、[ルールの検出結果] タブと、Compute Engine の [概要] ページなどの統合ページに表示されます。

[検出結果を共有する] を無効にすると、ワークロード マネージャーはターゲット プロジェクトへのルール検出結果の伝播を停止し、検出結果はコンシューマー プロジェクト内でのみ表示されます。

評価のアラート通知を設定する

アラート通知を構成して、特定の評価イベント(評価で新しい検出結果が検出された場合や、評価の実行に失敗した場合など)が発生したときに、ワークロード マネージャーが選択した通知チャンネルに通知するようにできます。評価の作成時にアラート通知を構成しなかった場合は、次の手順に沿って、 Google Cloud コンソールで既存の評価にアラート通知を追加または更新できます。

  1. Google Cloud コンソールで、[ワークロード マネージャー] ページに移動します。

    [ワークロード マネージャー] に移動

  2. アラート通知を有効にする評価の名前をクリックします。

  3. [編集] をクリックします。

  4. [通知] セクションを選択します。

  5. アラート通知を受信するイベントを選択し、通知チャンネルを選択します。

  6. [保存] をクリックします。

次のステップ