組織内のすべての GKE ノードで VM エージェントを実行する


このページでは、組織のポリシー サービスを使用して、組織、フォルダ、プロジェクト内の Google Kubernetes Engine VM を含むすべての Compute Engine インスタンスで VM Manager を確実に有効化する方法について説明します。

このガイドは、セキュリティ エージェントやモニタリング エージェントなど、必要なすべてのプログラムが組織、フォルダ、プロジェクト内のすべてのインスタンスで実行されることを確認したいセキュリティ チームを対象としています。組織のポリシーのみで構成を適用するには、このガイドを使用してください。構成のコード化によるアプローチの場合は、Config Sync を使用してください。Config Sync を使用すると、クラスタのさまざまな要素を構成して制御でき、組織のポリシー以上の価値が得られます。

このページを読む前に、VM ManagerResource Manager の制約について理解しておいてください。

このガイドでは、組織またはフォルダ内のすべてのプロジェクトで VM Manager の使用を適用する方法について説明します。このガイドでは、OS ポリシーを使用した VM Manager の設定および使用方法については扱いません。その手順については、OS ポリシーの割り当てを作成するをご覧ください。

VM Manager について

VM Manager は、Compute Engine 上で Windows と Linux を実行している大規模な仮想マシン(VM)フリートのオペレーティング システムを管理できるツール群です。VM Manager を使用して OS ポリシーを適用し、VM で実行されるプログラムをカスタマイズできます。たとえば、リソースにエージェントをインストールするポリシーを定義し、そのポリシーを複数のリソースで再利用できます。Google Cloud プロジェクトでは、VM Manager はデフォルトで無効になっています。

OSPolicyAssignments を使用すると、VM Manager がポリシーを適用する場所を絞り込むことができます。これにより、セレクタを使用して OS ポリシーの適用範囲を特定の VM に限定できます。たとえば、すべての GKE ノード VM にはラベル goog-gke-node が付いています。このラベルは、OS ポリシーの割り当てでターゲットにできます。

組織のポリシーと VM Manager

Google Cloud 組織にフォルダやサブフォルダなど複数レベルの階層がある場合、VM Manager をこれらのプロジェクトすべてで手動で有効にすると、不要な管理オーバーヘッドが発生する可能性があります。constraints/compute.requireOsConfig 制約付きで組織のポリシー サービスを使用すると、フォルダまたは組織のすべてのプロジェクトに対して、すべての VM 上の VM Manager を有効にするように要求できます。組織のポリシーを使用して VM Manager を適用するメリットは次のとおりです。

  • すべての新しいプロジェクトで、すべてのプロジェクトと VM に enable-osconfig=TRUE メタデータ ラベルが追加されます。
  • このラベルの削除や true 以外の値への設定を試みた場合、その変更は拒否されます。
  • enable-osconfig メタデータキーの値を true 以外に設定して VM の作成または更新を試みた場合、その変更は拒否されます。

始める前に

作業を始める前に、次のことを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。
  • VM でエージェントを実行するために、VM Manager ですでに OS ポリシーと OS ポリシーの割り当てを使用していることを確認します。手順については、OS ポリシーの割り当てを作成するをご覧ください。
  • Enable the Cloud Resource Manager API, OS Config API APIs.

    Enable the APIs

制限事項

組織のポリシー constraints/compute.requireOsConfig には次の制限があります。

  • 既存の違反があるリソースは、新しい組織のポリシーによって変更されません。ポリシーのメタデータは、手動で設定するか、既存のリソースで gcloud を使用して設定できます。
  • プロジェクト内の Compute Engine インスタンスのメタデータを変更する権限を持つユーザーは、osconfig-disabled-features メタデータ フィールドを設定して、VM の osconfig-agent を無効にできます。
  • osconfig-agent が実行されていない場合、VM は VM Manager ダッシュボードにコンプライアンス違反として表示されます。たとえば、ユーザーがエージェントを手動で無効にした場合に発生することがあります。

必要なロール

組織のポリシーを管理するために必要な権限を取得するには、組織に対する組織ポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

組織全体で compute.requireOsConfig を有効にする

VM Manager を有効にして VM に OSPolicyAssignment のスコープを設定したら、組織のポリシー constraints/compute.requireOsConfig を使用して、新しいプロジェクトで VM Manager がデフォルトで有効になるようにします。constraints/compute.requireOsConfig の適用方法は、使用する API バージョンによって異なります。

Organization Policy v2 API

constraints/compute.requireOsConfig 制約は、gcloud CLI または Google Cloud コンソールを使用して、フォルダや組織などの Google Cloud リソース全体に適用できます。

gcloud

  1. compute.requireOsConfig 制約がまだ適用されていないことを確認します。

    gcloud org-policies describe \
        constraints/compute.requireOsConfig \
        --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID は実際の組織 ID に置き換えます。

    ポリシーが設定されていない場合、コマンドは NOT_FOUND エラーを返します。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    

    ポリシーが存在する場合、コマンドは現在のポリシーを返します。新しいポリシーを適用すると、既存のポリシーが上書きされます(存在する場合)。

  2. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    
  3. set-policy コマンドを実行します。

    gcloud org-policies set-policy /tmp/policy.yaml
    
  4. 新しいポリシーが適用されていることを確認します。

    gcloud org-policies describe \
        constraints/compute.requireOsConfig --effective \
        --organization=ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    

コンソール

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

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

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

  3. [組織のポリシー] ページで、フィルタを使用して compute.requireOsConfig を検索します。

  4. ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。

  5. [ポリシーを管理] をクリックして、このリソースの組織のポリシーを更新します。

  6. [ポリシーの編集] ページで、[親のポリシーをオーバーライドする] を選択します。

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

  8. この組織のポリシーの適用を、[適用] で [オン] に変更します。

  9. ポリシーを適用するには、[ポリシーを設定] をクリックします。

Resource Manager v1 API

  1. compute.requireOsConfig 制約がまだ適用されていないことを確認します。

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    ORGANIZATION_ID は実際の組織 ID に置き換えます。

    ポリシーが設定されていない場合、このコマンドは次の例のような不完全なポリシーを返します。

    constraint: "constraints/compute.requireOsConfig"
    etag: BwVJi0OOESU=
    

    ポリシーが存在する場合、コマンドは現在のポリシーを返します。新しいポリシーを適用すると、既存のポリシーが上書きされます(存在する場合)。

  2. 組織に適用するポリシーを設定します。

    gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    etag: BwVJitxdiwY=
    
  3. 新しいポリシーが適用されていることを確認します。

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --effective \
        --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    

注: 組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

適用できる他のポリシー、ポリシーの変更または削除方法の詳細については、Resource Manager のドキュメントをご覧ください。

次のステップ

GKE 監査ロギングの詳細