Kubernetes 監査ポリシーの記録範囲の確認

必要な API 操作を記録し、本文に残る機密情報を管理してください。

説明

監査ポリシーは、記録する Kubernetes API 呼び出しと記録レベルを指定します。重要なリソースや管理操作が含まれないと、調査に必要な記録が欠ける場合があります。一方、Request や RequestResponse は、要求・応答本文の機密情報をログに残すおそれがあります。

ルールは順番に評価され、最初に一致するものが適用されます。リソース名だけでなく、API グループ、利用者・操作の範囲、先行するルールも確認する必要があります。

想定される影響

  • 重要な API 呼び出しが記録されず、誰が何を行ったか追跡しにくくなる場合があります。
  • 過剰な本文記録によって、シークレットが監査ログに露出するおそれがあります。

対処方法

  • secrets、configmaps、tokenreviews などの機密性が高いリソースでは、本文を記録しない Metadata を検討してください。pods、deployments、exec・portforward・proxy 操作にも必要な範囲とレベルを指定してください。
  • ポリシーファイルと監査バックエンドを設定し、実際の要求で記録を確認してください。ログのアクセス・保存権限を制限し、本文の詳細を記録する前に機密情報と保存量を確認してください。

例

監査設定を比較するポリシーです。変更前の空の rules は有効な監査ポリシーではありません。変更後も列挙していない要求は記録されないため、ポリシー全体の要件を別途確認してください。

変更前

yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules: []

ルールがなく、ポリシーの読み込みが拒否される場合があります。記録が少ないだけの有効なポリシーとして使わないでください。

変更後

yaml
apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
  - RequestReceived
rules:
  - level: Metadata
    resources:
      - group: ""
        resources: ["secrets", "configmaps"]
      - group: "authentication.k8s.io"
        resources: ["tokenreviews"]
  - level: Metadata
    resources:
      - group: ""
        resources: ["pods"]
      - group: "apps"
        resources: ["deployments"]
  - level: RequestResponse
    resources:
      - group: ""
        resources: ["pods/exec", "pods/portforward", "pods/proxy", "services/proxy"]

tokenreviews は authentication.k8s.io、deployments は apps グループに指定します。機密リソースは Metadata、一部の管理操作は RequestResponse で記録します。exec セッションのすべての入出力を録画する設定ではありません。

参考資料