見出し画像

KubernetesのAuditログ監査ポリシー 4種類それぞれの特徴

Kubernetesを運用していると、「誰が」「いつ」「何をしたか」を記録する監査ログが重要になります。特にセキュリティ対策やトラブルシューティングでは、ログの詳細さがカギを握ることも。

でも、監査ポリシーにはいくつかの種類があって、違いがわかりにくいと感じたことはありませんか?

ここでは、4つの監査ポリシーについて、それぞれの特徴と「実際に何が記録されるのか」をイメージできるようにまとめていきます。


1. None (記録なし)

まずは「何も記録しない」ポリシーから。

どんなポリシー?

このポリシーでは操作ログを一切記録しません。

どんな時に使う?

  • テスト環境や開発環境で、監査ログの保存が不要な場合。

  • 記録をオフにしてパフォーマンスを優先したい場面。

具体例

たとえば、次のようにPodを作成するコマンドを実行します。

kubectl create pod nginx

この操作をしても、ログには何も残りません。まるで「ホワイトボードに書いて、すぐに消した」ような状態です。


2. Metadata (メタデータのみ記録)

次は、操作の概要だけを記録するポリシーです。

どんなポリシー?

  • ユーザー名、タイムスタンプ、操作内容(動詞)などの「誰が、いつ、何をしたか」を記録します。

  • リクエストやレスポンスの詳細は含まれません。

どんな時に使う?

  • 軽量なログでシステムパフォーマンスを保ちたい場合。

  • 誰が操作したかだけを確認できれば十分なケース。

具体例

kubectl create pod nginx

この操作では、以下のようなログが残ります。

{
  "level": "Metadata",
  "timestamp": "2024-12-24T12:34:56Z",
  "user": {"username": "admin"},
  "verb": "create",
  "objectRef": {
    "resource": "pods",
    "name": "nginx-pod"
  },
  "responseStatus": {"code": 201}
}

ログを確認すれば「管理者(admin)がPod(nginx)を作成した」ことがわかりますが、実際にどういう内容で作成したかまでは不明です。


3. Request (リクエスト本文を含む記録)

次は、操作の詳細を少し深掘りして記録するポリシーです。

どんなポリシー?

  • メタデータに加えて、リクエストの本文まで記録します。

  • ただしレスポンスは記録されません。

どんな時に使う?

  • 操作内容を正確に把握したい場合。

  • 設定ミスや不正操作の調査に役立てたいとき。

具体例

kubectl create pod nginx

この操作では、以下のようなログが記録されます。

{
  "level": "Request",
  "timestamp": "2024-12-24T12:34:56Z",
  "user": {"username": "admin"},
  "verb": "create",
  "objectRef": {
    "resource": "pods",
    "name": "nginx-pod"
  },
  "requestObject": {
    "kind": "Pod",
    "metadata": {"name": "nginx-pod"},
    "spec": {
      "containers": [{"name": "nginx", "image": "nginx:latest"}]
    }
  }
}

Podの仕様までしっかり記録されていますが、結果がどうなったかはわかりません。


4. RequestResponse (リクエストとレスポンスの記録)

最後は、最も詳細な記録を行うポリシーです。

どんなポリシー?

  • リクエストとレスポンスの両方を記録します。

  • 完全なログを残せるため、監査やトラブルシューティングに最適です。

どんな時に使う?

  • 重要なシステムでセキュリティ対策を強化したい場合。

  • エラーやレスポンスの詳細まで把握したいとき。

具体例

kubectl create pod nginx

この操作では、次のようなログが記録されます。

{
  "level": "RequestResponse",
  "timestamp": "2024-12-24T12:34:56Z",
  "user": {"username": "admin"},
  "verb": "create",
  "requestObject": {
    "kind": "Pod",
    "metadata": {"name": "nginx-pod"},
    "spec": {
      "containers": [{"name": "nginx", "image": "nginx:latest"}]
    }
  },
  "responseObject": {
    "metadata": {"name": "nginx-pod"},
    "status": {"phase": "Running"}
  }
}

操作内容だけでなく、作成結果やステータスまで確認できます。


どのポリシーを選ぶ?

それぞれのポリシーには特徴があります。

  • Noneは「記録なし」で、テスト環境向け。

  • Metadataは「概要のみ記録」で、軽量な監査用。

  • Requestは「リクエスト詳細を記録」で、不正防止や設定ミス確認に便利。

  • RequestResponseは「完全記録」で、セキュリティ重視や障害対応向け。


まとめ

監査ポリシーは、用途や目的に応じて使い分けることがポイントです。

シンプルな記録で十分な場合はMetadata、セキュリティやトラブル対応を強化したいならRequestResponseを選ぶとよいでしょう。

ログはシステムの「防犯カメラ」のような役割を果たします。必要なときにしっかりと証拠を残せるよう、ポリシーの設定を見直してみてはいかがでしょうか?

いいなと思ったら応援しよう!