
Kubernetes監査ログ、「level: None」を活用して不要なログをなくしコスト削減!
Kubernetesの監査ログ、どれくらい記録していますか?
「全部ログを残しておけば安心」と思って、必要のないリクエストまで記録してしまうと、ログの量が爆発的に増え、ストレージコストがかさむ ことに…。
かといって、重要な操作まで記録しないのはリスクが高い ですよね。
そこで活用したいのが level: None です。
うまく使えば、本当に必要なログだけを残して、不要なログを削減し、コストを抑えることが可能 になります。
ただし、設定を間違えると「すべてのログが消えてしまう」という落とし穴も。
では、level: None の仕組みと、効果的な使い方を見ていきましょう!
level: None だけを書くと何が起こる?
監査ポリシーで level: None を設定すると、そのルールにマッチしたリクエストのログは記録されません。
つまり、監査ログの量を減らしたいときに使える便利なオプションです。
しかし、もし level: None だけ を設定したらどうなるでしょうか?
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: None
この場合、明示的に指定されたルールがないすべてのリソースとすべてのリクエストが対象になります。
つまり、クラスタ内のすべてのリソース・すべてのAPIリクエストに対して、ログが一切記録されなくなる ということです。
「監査ポリシーを設定したのに、ログが全然出てこない…」
そんなときは level: None だけになっていないか、まず確認してみましょう。
監査ポリシーは「上から順に評価」される
Kubernetesの監査ポリシーは 上から順番に評価され、最初にマッチしたルールが適用 される仕組みになっています。
例えば、次のようなポリシーを考えてみましょう。
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
resources:
- group: ""
resources: ["secrets"]
- level: None
この場合、どういう動きになるかというと…
(1) Secretsの操作 → level: Metadata にマッチするので、メタデータだけ記録される
(2) その他の操作 → level: None にマッチするので、すべてのログが記録されなくなる
つまり、「Secretの操作だけログを残し、それ以外は全部カットする」 という設定になります。
逆に、もし level: None を一番上に書いてしまうと、すべての操作が最初のルールにマッチし、それ以降のルールは無視されてしまう ので注意しましょう。
不要なログを削減しつつ、重要な操作だけ記録するには?
では、どのように level: None を活用すれば、コストを削減しつつ必要な監査ログを残せるのでしょうか?
✅ 全リクエストを記録する必要がある場合 → level: None を使わず、Metadata や RequestResponse を設定する
✅ 特定のリソース(例: Secret)だけログを記録したい場合 → 記録するルールを先に書き、最後に level: None を書く
✅ 不要なログを減らしたい場合 → 重要な操作のみ明示的に記録し、残りは level: None にする
例えば、「Secretの操作だけ記録し、それ以外のログは記録しない」場合は、以下のように設定します。
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
resources:
- group: ""
resources: ["secrets"]
- level: None
このように設定すれば、監査ログの負荷を減らしつつ、重要な操作はしっかり記録 できます。
ただし、どの操作のログを残すべきかは、クラスタのセキュリティポリシーや運用ルールによって変わる ので、事前にしっかり考えて設計しましょう。
まとめ:監査ログを最適化して、無駄なコストをカットしよう!
監査ログは運用上とても重要ですが、何も考えずにすべてを記録すると、不要なログが増えてストレージコストが膨らんでしまいます。
だからこそ、level: None を適切に活用することで、「必要なログだけを記録し、不要なログをカットする」 という設計が重要。
💡 ポイント
level: None だけを書くと、すべてのログが記録されなくなるので注意!
監査ポリシーは上から順に評価され、最初にマッチしたルールが適用される
記録すべきリソースを先に定義し、最後に level: None を書くことで、不要なログを減らせる
適切な設定をすれば、監査ログの負荷を減らしながら、重要な情報はしっかり記録することが可能 です。
ぜひ、自分の環境に合わせた監査ポリシーを設計して、無駄なコストを削減してみてください!