説明
監査ポリシーは、記録する 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 セッションのすべての入出力を録画する設定ではありません。