見出し画像

KubernetesのAudit Log設定:omitStagesで不要なログを省略する方法

Kubernetesを運用していると、監査ログ(Audit Log)の管理が重要になってきます。特に、大規模なクラスタでは膨大なログが発生し、必要な情報を見つけるのが大変になることも。そんなときに役立つのが、omitStagesというオプションです。

今回は、omitStagesの役割や設定のポイントを解説します。「どのログを記録し、どれを省略するべきか?」と悩んでいる方の参考になればと思います。

omitStagesとは?

Kubernetesの監査ログは、APIサーバーに送られたリクエストがどのように処理されたのかを記録するものです。これには、いくつかのステージ(処理の段階)があり、omitStagesを設定することで特定のステージのログを省略できます。

例えば、「とにかくログの量を減らしたい!」という場合、初期段階のログを省略することで、不要な記録を抑えることができます。

"RequestReceived"とは?

omitStagesで省略できるステージの1つに、"RequestReceived"があります。これは、Kubernetes APIサーバーがリクエストを受け取った瞬間を指します。この時点では、まだ認証(Authentication)や認可(Authorization)の処理は行われていません。

"RequestReceived"を省略するとどうなる?

メリット

  • ログの量を削減できる

    • APIサーバーにリクエストが来るたびにログが記録されるため、リクエスト数が多い環境では膨大なデータ量になります。省略することで、ストレージ使用量を抑えられます。

デメリット

  • APIリクエストの全体像が見えにくくなる

    • どんなリクエストが送られているのかを完全に把握するのが難しくなるため、不正アクセスの監視やデバッグの際に影響が出る可能性があります。

他の主なAudit Stages

Kubernetesの監査ログには、以下のようなステージがあります。

  • RequestReceived: APIサーバーがリクエストを受け取った瞬間

  • ResponseStarted: APIサーバーがレスポンスを返し始めた時点(長時間実行されるリクエスト向け)

  • ResponseComplete: APIサーバーがリクエストを完全に処理し終えた時点

  • Panic: APIサーバーで予期せぬエラーが発生した場合

デフォルトではどうなる?

omitStagesを設定しない場合、すべての監査ステージのログが記録されます。つまり、APIサーバーに届いたリクエストの最初の状態から最終的な処理結果まで、すべてのステージのログが保存される仕様です。

omitStagesの設定例

例えば、"RequestReceived"のログを省略するには、以下のように設定します。

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: Metadata
    omitStages:
      - "RequestReceived"

この設定では、APIサーバーがリクエストを受け取ったログを記録せず、それ以降のステージ(ResponseCompleteなど)のみを保存します。

"RequestReceived"を除外するべきケース

次のようなケースでは、"RequestReceived"を省略するのが有効です。

(1) ログのサイズを削減したい

  • 例えば、大量のリクエストが発生する環境では、監査ログが増えすぎることがあります。ログの保存コストを抑えたい場合に有効です。

(2) 認可・認証後のログだけを残したい

  • RequestReceivedの時点では、まだ認証や認可が終わっていません。不要な未認証のリクエストを省き、処理された後のログだけを残したい場合に適しています。

"RequestReceived"を記録した方がいいケース

一方で、以下のような状況では、RequestReceivedのログを記録しておく方が良いでしょう。

(1) 不正アクセスやDoS攻撃の監視をしたい

  • APIに届いたリクエストをすべて記録しておくことで、不正なアクセスパターンを分析できます。特にDoS攻撃やブルートフォース攻撃を検知する際に役立ちます。

(2) APIリクエストのトラフィックを分析したい

  • 監査ログを使ってリクエストの傾向を把握したい場合、最初のリクエスト記録を残しておくことで、どのようなリクエストがどのくらいの頻度で送られているのかを把握できます。

まとめ

  • omitStagesを使うと、指定した監査ステージのログを省略できる

  • "RequestReceived"を除外すると、ログの量を減らせるが、不正アクセスの監視やデバッグが難しくなることもある

  • デフォルトではすべての監査ステージのログが記録される

  • 運用方針に応じて、どの監査ステージを記録するかを調整することが重要

監査ログの設定は、Kubernetesのセキュリティや運用管理に大きく影響します。ログの量と可視性のバランスを考えながら、最適な設定を選びましょう。

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