組織内の特権 GKE ワークロードを制限する

ポリシーを使用すると、 Cloud de Confiance by S3NS 組織全体の Google Kubernetes Engine(GKE)クラスタで実行できる特権ワークロードを制御できます。このドキュメントでは、ポリシーを使用して承認済みのワークロード ソースを定義し、セキュリティ体制を改善するためのベスト プラクティスを適用する方法について説明します。

このドキュメントは、承認済みの特権ワークロードのみを組織内のどこでも実行できるようにする ID とアカウント管理者を対象としています。次のページのコンセプトを理解しておく必要があります。

組織の特権ワークロード アドミッション コントロールの仕組み

デフォルトでは、GKE Autopilot はワークロードに対して一連のセキュリティ対策を適用します。これらの制約に違反するワークロードを実行する唯一の方法は、それらのワークロードの許可リストをインストールすることです。特定のソースから許可リストをインストールするには、そのソースからの許可リストを許可するようにクラスタを構成する必要があります。

デフォルトでは、 Cloud de Confiance 組織では、プラットフォーム管理者が GKE パートナー検証済みのオープンソース プロジェクトの許可リストを許可するようにクラスタを構成できます。組織に、特権ワークロードを明示的に既知のソースセットに制限するセキュリティ要件がある場合は、組織のポリシーを使用してデフォルトの動作を変更できます。

組織、フォルダ、プロジェクトの承認済み許可リスト ソースのリストを適用すると、プラットフォーム管理者は Autopilot クラスタまたは Standard クラスタの作成または更新時に、これらのソースのみを指定できます。承認されていないソースを指定してクラスタを作成または更新すると、オペレーションは失敗します。

構成する必要がある組織のポリシーは、ユースケースによって異なります。

始める前に

  1. Enable the Resource Manager API.

    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 API

  2. チームが所有する特権ワークロードの許可リストがある場合は、Cloud Storage 内のその許可リストのパスをチームに提供してもらいます。

必要なロールと権限

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

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

許可リストの組織のポリシーを構成する

constraints/container.managed.autopilotPrivilegedAdmission 管理対象制約に基づいて組織のポリシーを作成または更新することで、組織、フォルダ、プロジェクトの許可リストの承認済みソースを制御できます。この組織のポリシーを適用すると、クラスタ管理者はポリシーで定義したソースからのみ許可リストをインストールできます。

これらの手順に加えて、Autopilot クラスタのみが環境で実行されるようにする組織のポリシーを適用することをおすすめします。環境に Standard クラスタがない場合、承認された特権ワークロードのみを実行できます。詳細については、Autopilot クラスタのみを許可するように組織のポリシーを構成するをご覧ください。

承認済みの特権ワークロードの許可リストの組織のポリシーを構成するには、次のいずれかのオプションを選択します。

コンソール

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

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

  2. 制約の表で、container.managed.autopilotPrivilegedAdmission マネージド制約を見つけます。

  3. [アクション] > [ポリシーを編集] をクリックします。[ポリシーの編集] ページが開きます。

  4. [ポリシーのソース] セクションで、[親のポリシーをオーバーライドする] を選択します。

  5. [ルール] セクションで、[ルールを追加] をクリックします。

  6. [適用] セクションで、[オン] を選択します。[パラメータ] セクションが表示されます。

  7. GKE 承認済みの許可リストをインストールできるかどうかを制御するには、次の操作を行います。

    1. [allowAnyGKEPath] パラメータで、 [編集] をクリックします。[パラメータ値を編集] ペインが開きます。
    2. [値のタイプ] セクションで、[ユーザー定義] を選択します。
    3. [ユーザー定義の値] セクションで、次のいずれかのオプションを選択します。

      • True: 管理者は、gke:// で始まる任意のパスから許可リストを実行するようにクラスタを構成できます。これがデフォルト値です。
      • False: 管理者は、組織のポリシーの allowPaths パラメータで指定したパスからのみ許可リストを実行するようにクラスタを構成できます。allowPaths パラメータでパスを指定しない場合、クラスタはどのソースの許可リストも実行できません。
    4. [保存] をクリックします。[パラメータ値の編集] ペインが閉じます。

  8. インストール可能な特定の許可リストを定義する手順は次のとおりです。

    1. [allowPaths] パラメータで、 [編集] をクリックします。[パラメータ値を編集] ペインが開きます。
    2. [値のタイプ] セクションで、[ユーザー定義] を選択します。
    3. [ユーザー定義の値] セクションで、許可リストに登録するソースのパスを 1 つ以上指定します。指定できる内容の詳細については、許可リストのパスをご覧ください。
    4. [保存] をクリックします。[パラメータ値の編集] ペインが閉じます。
    5. [ルールを編集] セクションで、[完了] をクリックします。
  9. 省略可: 組織のポリシーの適用による影響をテストするには、[変更内容をテスト] をクリックします。詳細については、Policy Simulator で組織のポリシーの変更をテストするをご覧ください。

  10. ドライラン モードでポリシーを適用するには、[ドライラン ポリシーを設定] をクリックします。

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

組織のポリシーの変更が完全に適用されるまでには、最大で 15 分ほどかかることがあります。

gcloud

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

    name: RESOURCE_TYPE/RESOURCE_ID/policies/container.managed.autopilotPrivilegedAdmission
    spec:
      rules:
      - enforce: true
        parameters:
          allowAnyGKEPath: ALLOW_GKE_PATHS
          allowPaths:
          - ALLOWLIST1_PATH
          - ALLOWLIST2_PATH
    

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

    • RESOURCE_TYPE:Cloud de Confiance リソースのタイプ。次のいずれかの値を指定する必要があります。

      • organizations
      • folders
      • projects
    • RESOURCE_ID: 組織 ID、フォルダ ID、またはプロジェクト ID。

    • ALLOW_GKE_PATHS: GKE で承認された許可リストを許可するかどうか。次のいずれかの値を指定します。

      • True: GKE パートナー ワークロードまたは検証済みのオープンソース ワークロードを使用してクラスタ構成を許可します。これはデフォルト値です。
      • False: allowPaths フィールドのパスのみを使用してクラスタ構成を許可します。

    • ALLOWLIST1_PATHALLOWLIST2_PATH: 許可リストのパス。指定できる内容の詳細については、許可リストのパスをご覧ください。

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

  2. ドライラン モードで組織のポリシーを設定するには、gcloud org-policies set-policy コマンドで --update-mask フラグに dryRunSpec 値を指定します。

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

    POLICY_FILEPATH は、前の手順で作成した YAML ファイルのパスに置き換えます。

  3. (省略可)この組織のポリシーの適用による影響をテストするには、gcloud policy-intelligence simulate org-policy コマンドを使用します。

    gcloud policy-intelligence simulate org-policy \
        --organization=ORGANIZATION_ID \
        --policy-path=POLICY_FILEPATH
    

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

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

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

    組織のポリシーの変更が完全に適用されるまでには、最大で 15 分ほどかかることがあります。

Autopilot クラスタのみを許可するように組織のポリシーを構成する

このセクションでは、Autopilot クラスタのみを許可する組織のポリシーを構成する方法について説明します。Standard クラスタはほとんどの特権ワークロードを実行できるため、許可リストの組織のポリシーを作成するだけでなく、このポリシーも構成することをおすすめします。Autopilot クラスタのみを許可すると、環境では許可した特権ワークロードのみが実行されます。このセクションの手順は省略可能です。

このポリシーを構成するには、次のいずれかのオプションを選択します。

コンソール

  1. Autopilot クラスタの作成のみを許可するカスタム制約を作成します。

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

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

    2. [ カスタム制約] をクリックします。[カスタム制約を作成] ページが開きます。

    3. 制約の表示名と一意の ID を指定します。

    4. [適用] セクションで、次の操作を行います。

      1. [リソースタイプ] リストで、[container.googleapis.com/Cluster] を選択します。
      2. [適用方法] リストで、[作成時に適用する] を選択します。
      3. [条件] セクションで、 [条件を編集] をクリックします。[条件を追加] ペインが開きます。
      4. 次の式を指定します。

        resource.autopilot.enabled == true
        
      5. [保存] をクリックします。[条件を追加] ペインが閉じます。

      6. [アクション] セクションで、[許可] を選択します。

    5. [制約を作成] をクリックします。

  2. 制約を適用するカスタム組織ポリシーを作成します。

    1. 制約の表で、前の手順で作成したカスタム制約を見つけます。
    2. [アクション] > [ポリシーを編集] をクリックします。[ポリシーの編集] ページが開きます。
    3. [ポリシーのソース] セクションで、[親のポリシーをオーバーライドする] を選択します。
    4. [ルールの追加] をクリックします。
    5. [適用] セクションで、[オン] を選択します。
    6. 組織のポリシーの適用による影響をテストするには、[変更内容をテスト] をクリックします。詳細については、Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
    7. ドライラン モードでポリシーを適用するには、[ドライラン ポリシーを設定] をクリックします。
    8. ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、[ポリシーを設定] をクリックして有効なポリシーを設定します。

    組織のポリシーの変更が完全に適用されるまでには、最大で 15 分ほどかかることがあります。

gcloud

  1. Autopilot クラスタの作成のみを許可するカスタム制約を作成します。

    1. カスタム制約を定義する YAML ファイルを作成します。

      name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: container.googleapis.com/Cluster
      methodTypes:
      - CREATE
      condition: resource.autopilot.enabled == true
      actionType: ALLOW
      displayName: "Allow only Autopilot clusters"
      

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

      • ORGANIZATION_ID: 組織 ID。
      • CONSTRAINT_NAME: 新しい制約の名前。
    2. カスタム制約を設定します。

      gcloud org-policies set-custom-constraint CONSTRAINT_FILEPATH
      

      CONSTRAINT_FILEPATH は、前の手順で作成した YAML ファイルのパスに置き換えます。

    カスタム制約は、組織のポリシーで使用できます。

  2. 制約を適用するカスタム組織ポリシーを作成します。

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

      name: RESOURCE_TYPE/RESOURCE_ID/policies/custom.CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      

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

      • RESOURCE_TYPE:Cloud de Confiance リソースのタイプ。次のいずれかの値を指定する必要があります。

        • organizations
        • folders
        • projects
      • RESOURCE_ID: 組織、フォルダ、プロジェクトの ID。

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

    2. ドライラン モードで組織のポリシーを設定するには、gcloud org-policies set-policy コマンドで --update-mask フラグに dryRunSpec 値を指定します。

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

      POLICY_FILEPATH は、前の手順で作成した YAML ファイルのパスに置き換えます。

    3. この組織のポリシーの適用による影響をテストするには、gcloud policy-intelligence simulate org-policy コマンドを使用します。

      gcloud policy-intelligence simulate org-policy \
          --organization=ORGANIZATION_ID \
          --policy-path=POLICY_FILEPATH
      

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

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

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

      組織のポリシーの変更が完全に適用されるまでには、最大で 15 分ほどかかることがあります。

次のステップ