コンプライアンス標準のクラスタを監査する

このページでは、コンプライアンス上の懸念を自動的に監査し、実行可能な推奨事項を入手して Google Kubernetes Engine(GKE)Enterprise エディション クラスタのコンプライアンスを改善する方法について説明します。コンプライアンス監査は、GKE Compliance ダッシュボードの機能です。詳細については、GKE Compliance ダッシュボードについてをご覧ください。

サポートされているコンプライアンス標準

コンプライアンス監査では、次の標準に対するコンプライアンスについてクラスタがスキャンされ、コンプライアンス体制を改善するための推奨事項が提供されます。

名前

説明

CIS Google Kubernetes Engine ベンチマーク v1.5.0

CIS Google Kubernetes Engine(GKE)ベンチマーク v1.5.0 に基づいて、Google Kubernetes Engine(GKE)を構成するために推奨される一連のセキュリティ管理。

Pod Security Standards Baseline

Kubernetes Pod Security Standards(PSS)Baseline ポリシーに基づく、Kubernetes クラスタに推奨される一連の保護設定。

Pod Security Standards Restricted

Kubernetes Pod Security Standards(PSS)Restricted ポリシーに基づく、Kubernetes クラスタに推奨される一連の保護設定。

デフォルトの標準セットには、サポートされている 3 つの標準がすべて含まれています。

  • CIS Google Kubernetes Engine ベンチマーク v1.5.0
  • Pod Security Standards Baseline
  • Pod Security Standards Restricted

料金

GKE Compliance ダッシュボードは、GKE Enterprise を有効にしたユーザーが使用できます。

始める前に

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

要件

コンプライアンス監査に必要な権限を取得するには、Google Cloud プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。

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

これらの事前定義ロールには、コンプライアンス監査に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

コンプライアンス監査を使用するには、次の権限が必要です。

  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • containersecurity.locations.list
  • containersecurity.locations.get
  • containersecurity.clusterSummaries.list
  • containersecurity.findings.list
  • container.clusters.list
  • gkehub.features.get
  • gkehub.memberships.list

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

既存のクラスタで監査を有効にする

Google Cloud コンソールを使用して、クラスタのコンプライアンス監査を有効にできます。

  1. Google Cloud コンソールで、[コンプライアンス] ページに移動します。

    コンプライアンスに移動

  2. [設定] カードで、[クラスタを選択] をクリックします。

  3. [監査が無効] タブで、追加するクラスタのチェックボックスをオンにします。

  4. [有効にする] をクリックして、これらのクラスタの監査を有効にします。

テスト ワークロードをデプロイする

Pod のセキュリティ基準に意図的に違反しているサンプル Pod をデプロイします。

  1. 次のマニフェストを noncompliant-sample.yaml として保存します。

    apiVersion: v1
    kind: Pod
    metadata:
      namespace: default
      name: wp-non-compliant
      labels:
        app: wordpress
    spec:
      containers:
      - image: nginx
        name: wordpress
        securityContext:
          capabilities:
            add:
            - NET_RAW
    
  2. 次のようにリソースをクラスタに適用します。

    kubectl apply -f noncompliant-sample.yaml
    

他の違反を試す場合は、遵守していない別の構成で noncompliant-sample.yaml を変更します。

コンプライアンスの問題を表示して解決する

最初の監査で結果が返されるまでに最大 30 分かかります。結果は、[コンプライアンス] ページまたはクラスタログのエントリとして表示されます。

結果を表示する

プロジェクトのクラスタ全体のコンプライアンスの問題の概要を表示するには、次の操作を行います。

  1. Google Cloud コンソールで、[コンプライアンス] ページに移動します。

    コンプライアンスに移動

  2. [懸念事項] タブをクリックします。

  3. [懸念事項のフィルタ] ペインの [標準] セクションで、詳細を取得する標準を選択します。

標準の詳細と推奨事項を表示する

特定の標準に関する詳細情報を表示するには、説明リンクが表示されるまで標準セクションを展開し、標準の説明をクリックして [コンプライアンス制約] ペインを開きます。

[詳細] タブには、次の情報が表示されます。

  • 説明: 標準の説明。
  • 推奨される対応: コンプライアンスの問題を解決するために実行できるアクションの概要。

[影響を受けるリソース] タブには、標準の影響を受けるリソースが一覧表示されます。

検出された懸念事項のログを表示する

GKE は、検出された懸念事項ごとに Logging の _Default ログバケットにエントリを追加します。これらのログは特定の期間のみ保持されます。詳細については、ログの保持期間をご覧ください。

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

    ログ エクスプローラに移動
  2. [クエリ] フィールドに次のクエリを規定します。

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_MISCONFIG"
    jsonPayload.configuration.violation:*
  3. [クエリを実行] をクリックします。

GKE が Logging に新しい検出結果を追加したときに通知を受け取るには、このクエリのログベースのアラートを設定します。詳細については、ログベースのアラートの管理をご覧ください。

クリーンアップ

デプロイしたサンプル Pod を削除します。

kubectl delete pod wp-non-compliant

コンプライアンスの監査を無効にする

コンプライアンス監査は Google Cloud コンソールを使用して無効にできます。

  1. Google Cloud コンソールで、[コンプライアンス] ページに移動します。

    コンプライアンスに移動

  2. [設定] カードで [クラスタを選択] をクリックします。

  3. [監査が有効] タブで、削除するクラスタのチェックボックスをオンにします。

  4. [無効化] をクリックして、これらのクラスタの監査を無効にします。

制限事項

  • Windows Server ノードプールはサポートされていません。
  • コンプライアンス監査では、kube-system Namespace のワークロードなど、GKE 管理のワークロードはスキャンされません。
  • コンプライアンス監査は、ノード数が 1,000 未満のクラスタでのみ使用できます。

次のステップ