コンテナ メタデータを使用する VM の作成を防止する

組織内のリソースが非推奨のコンテナ スタートアップ エージェント と関連する gce-container-declaration メタデータを使用しないようにするには、組織のポリシーを適用することをおすすめします。管理対象の制約 compute.managed.disableVmsWithContainerStartupAgent を適用すると、非推奨のメタデータを使用するリソースの作成が無効になります。

このセクションでは、次の方法について説明します。

  • コンテナ スタートアップ エージェントを使用する Compute Engine インスタンスの作成を無効にする組織のポリシーを適用する。
  • ドライラン モードでポリシーを適用して、組織のポリシーの影響をモニタリングする。
  • ログ エクスプローラを使用して、非推奨のエージェントを使用しようとしているプロジェクトを特定する。

組織のポリシーを適用して、コンテナ メタデータを使用する VM の作成を無効にする

非推奨のコンテナ スタートアップ エージェントを使用するリソースの作成を防ぐには、 Google では 組織のポリシーを適用することをおすすめします。 constraints/compute.managed.disableVmsWithContainerStartupAgent 制約により、gce-container-declaration メタデータキーを使用して新しいリソースを作成できなくなります。この制約は、既存のインスタンスまたはインスタンス テンプレートには影響しません。

この制約は、 Google Cloud コンソール、 Google Cloud CLI、または Compute Engine API を使用して適用できます。

コンソール

コンソールを使用して組織のポリシーを設定する手順は次のとおりです。

  1. コンソールで、[**組織のポリシー**] ページに移動します。 Google Cloud

    [組織のポリシー] に移動

  2. プロジェクト選択ツールから、組織のポリシーを編集するプロジェクト、フォルダ、または組織を選択します。

    [組織のポリシー] ページには、使用可能な組織のポリシーの制約のリストが表示されます。

  3. 制約のリストから [非推奨のコンテナ スタートアップ エージェント(konlet)を使用する Compute Engine インスタンスの作成を無効にする] 制約を選択します。表示される [ポリシーの詳細] ページには、制約の説明と、制約の適用方法に関する情報が表示されます。

  4. このリソースの組織ポリシーを構成するには、[ポリシーを管理] をクリックします。

  5. [ポリシーを編集] ページで、[親のポリシーをオーバーライド] をクリックします。

  6. [ルールを追加] を選択します。

  7. [適用] で [オン] を選択します。

  8. 必要に応じて、組織のポリシーの変更が適用される前にその影響をプレビューするには、[変更内容をテスト] をクリックします。組織のポリシーの変更のテストの詳細については、 Policy Simulator で組織のポリシーの変更をテストするをご覧ください。

  9. ドライラン モードで組織のポリシーを適用するには、[ドライラン ポリシーを設定] をクリックします。詳細については、 アクティブなポリシーからドライラン モードで組織のポリシーを作成するをご覧ください。

  10. ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、[ポリシーを設定] をクリックして有効なポリシーを設定します。

gcloud

  1. 組織のポリシーを定義する YAML ファイルを作成します。

    name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
    spec:
    rules:
        - enforce: ENFORCEMENT_STATE
    dryRunSpec:
      rules:
      - enforce: ENFORCEMENT_STATE
    

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

    • RESOURCE_TYPEorganizationsfolders、または projects に置き換えます。

    • RESOURCE_ID は、RESOURCE_TYPE で指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号に置き換えます。

    • CONSTRAINT_NAME は、設定する制約の名前に置き換えます。

    • ENFORCEMENT_STATE は、設定時にこの組織のポリシーを適用する場合は true、設定時に無効にする場合は false に置き換えます。

    タグで組織のポリシーに条件を設定するには、rulescondition ブロックを追加します。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、 タグを使用した組織のポリシーの設定をご覧ください。

  2. org-policies set-policy コマンドを dryRunSpec フラグを指定して実行し、組織のポリシーを ドライラン モードで設定します。

     gcloud org-policies set-policy POLICY_PATH \
       --update-mask=dryRunSpec
    

    POLICY_PATH は、組織のポリシーの YAML ファイルのパスに置き換えます。

    ドライラン組織のポリシーの詳細については、 ドライラン モードで組織のポリシーを作成するをご覧ください。

  3. policy-intelligence simulate orgpolicy コマンドを使用して、組織のポリシーの変更が適用される前に その影響をプレビューします。

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

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

    • ORGANIZATION_ID は、組織 ID(1234567890123 など)に置き換えます。複数の組織に対する変更のシミュレーションはサポートされていません。

    • POLICY_PATH は、組織のポリシーの YAML ファイルのパスに置き換えます。

    組織のポリシーの変更のテストの詳細については、 Policy Simulator で組織のポリシーの変更をテストするをご覧ください。

  4. ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、org-policies set-policy コマンドと spec フラグを使用して有効なポリシーを設定します。

    gcloud org-policies set-policy POLICY_PATH \
      --update-mask=spec
    

    POLICY_PATH は、組織のポリシーの YAML ファイルのパスに置き換えます。

REST

組織のポリシーを設定するには、 organizations.policies.create メソッドを使用します。

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

リクエストの JSON 本文には、組織のポリシーの定義が含まれています。 この制約がパラメータをサポートしていない場合は、rules の下の parameters ブロックを省略します。

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME",
  "spec": {
    "rules": [
      {
        "enforce": ["ENFORCEMENT_STATE"],
      }
    ]
  }
  "dryRunSpec": {
    "rules": [
      {
        "enforce": ["ENFORCEMENT_STATE"],
      }
    ]
  }
}

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

  • RESOURCE_TYPEorganizationsfolders、または projects に置き換えます。

  • RESOURCE_ID は、RESOURCE_TYPE で指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号に置き換えます。

  • CONSTRAINT_NAME は、設定する制約の名前に置き換えます。

  • ENFORCEMENT_STATE は、設定時にこの組織のポリシーを適用する場合は true、設定時に無効にする場合は false に置き換えます。

タグで組織のポリシーに条件を設定するには、rulescondition ブロックを追加します。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、 タグを使用した組織のポリシーの設定をご覧ください。

ドライラン組織のポリシーの詳細については、 ドライラン モードで組織のポリシーを作成するをご覧ください。

ドライラン モードでポリシーを適用して非推奨のメタデータの使用状況をモニタリングする

コンテナ宣言メタデータを使用するインスタンスの作成をブロックするポリシーを直接適用する代わりに、ドライラン モードでポリシーを適用できます。この設定を使用すると、オペレーションに実際に影響を与えることなく、ポリシーがブロックできるアクションをモニタリングしてログに記録できます。詳細については、 ドライラン モードで組織のポリシーを作成するをご覧ください。

アクションがドライラン ポリシーをトリガーすると(たとえば、 メタデータキーを使用してインスタンスを作成しようとすると)、 ログエントリがCloud Audit Logsに生成されます。gce-container-declaration

非推奨のエージェントを使用しようとしているプロジェクトを特定する手順は次のとおりです。

  1. コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインに、次のクエリを入力します。

    protoPayload.metadata.dryRun="true"
    protoPayload.methodName="CheckOrgPolicy"
    protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"
    
  3. [クエリを実行] をクリックします。

  4. ログエントリを確認して、非推奨のエージェントを使用しようとしているプロジェクトを特定します。 ドライラン違反のログには、次の特性があります。

    • orgpolicy.googleapis.com に関連しています。
    • protoPayload.metadata.dryRun フィールドは true に設定されています。
    • 違反の詳細に constraints/compute.managed.disableVmsWithContainerStartupAgent 制約が含まれています。
  5. 監査ログの情報で、非推奨のエージェントがまだ使用されている場所と理由を確認します。この情報は、これらのワークロードをサポートされている代替手段に移行する際に役立ちます。

  6. ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、適用状態をドライラン モードからライブに変更してポリシーを適用します

ログ エクスプローラの使用方法については、ログ エクスプローラを使用してログを表示するをご覧ください。

次のステップ