境界防衛の終焉と「Kubernetes APIサーバー」という心臓部
Kubernetes(K8s)のセキュリティを語る時、多くのエンジニアは「ネットワークポリシー」や「Podの隔離」に目を向ける。だが、クラスタの心臓部であり、すべての操作の終着点である kube-apiserver の監査ログを疎かにしている現場が多すぎる。
攻撃者はもはや、境界線上のファイアウォールを叩くような無能な真似はしない。彼らが狙うのは、ID管理の隙間、そしてAPIサーバーが吐き出す「権限昇格の痕跡」だ。本稿では、単なるログ収集を超えた、異常検知の深淵に踏み込む。
—
1. 監査ログの設計:見えない「ノイズ」に潜む攻撃者
デフォルトの Audit Policy をそのまま使っていないだろうか? それは「重要な情報をフィルタリングして捨てている」のと同義だ。攻撃者は、過度なロギングによって発生するログの肥大化に紛れ込み、ノイズの中に悪意あるリクエストを隠蔽する。
最も重要なのは、RequestResponse レベルの記録と、Metadata レベルの記録をリソースに応じて厳密に使い分けることだ。特に secrets, configmaps, subjectaccessreviews へのアクセスは、攻撃の予兆を捉える唯一の手段となる。
推奨される監査ポリシーの断片
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# Secretの読み取りは常に全量記録する
- level: RequestResponse
resources:
- group: ""
resources: ["secrets"]
# 権限昇格の予兆となるSubjectAccessReviewsを監視
- level: RequestResponse
resources:
- group: "authorization.k8s.io"
resources: ["subjectaccessreviews"]
# それ以外はMetadataのみ(コストと重要度のバランス)
- level: Metadata
—
2. ログ解析のパラダイムシフト:統計的異常検知の導入
ログを眺めるのは人間ではなく、マシンであるべきだ。しかし、単純な grep や、閾値を超えたらアラートを出すだけのSIEMルールでは不十分だ。攻撃者は「低速かつ低頻度(Low-and-Slow)」でアクセスし、静的閾値をすり抜ける。
私が現場で導入を推奨するのは、APIサーバーの呼び出し元(User Agent / Source IP)をベクトル化した、時系列ベースの異常検知だ。
異常検知のシグナルとなるべき指標
- User Agentの特異性:
kubectl以外の未知のクライアントライブラリからのリクエスト。 - リソースの異常なライフサイクル: 短時間に大量の
Deploymentを作成し、直後に削除する挙動(暗号資産マイニングやバックドアの展開)。 - 権限の境界越え: 通常は
defaultサービスアカウントしか利用しないPodが、kube-system名前空間のリソースを列挙しようとする動き。
—
3. 次世代の防衛:生成AI時代のプロンプト・インジェクション的視点
Kubernetesにおいて、これは「設定ファイルのインジェクション」として現れる。例えば、Admission Controllerをバイパスするような悪意あるYAMLが、CI/CDパイプラインや手動の kubectl apply を経由して送り込まれるケースだ。
将来的な防衛層(ガードレイル)として、OPA (Open Policy Agent) や Kyverno を用いた動的なポリシー評価に加え、APIリクエストのペイロード自体を「コード解析」の対象とするアプローチが必要だ。
攻撃者から身を守るための「ガードレイル」コード例
# OPAによるポリシー例:特権コンテナの禁止
default allow = false
allow {
input.request.kind.kind == "Pod"
not input.request.object.spec.containers[_].securityContext.privileged == true
# 現場の知見:ここではホストパスのマウントも同時にチェックすべき
not has_host_path(input.request.object.spec.volumes[_])
}
has_host_path(volume) {
volume.hostPath
}
—
4. 最後に:技術的負債としてのセキュリティ
多くのテックリードが陥る罠は、セキュリティを「外付けの機能」と考えていることだ。しかし、真の要塞化とは、カーネルの seccomp プロファイルから、APIサーバーの監査ログ分析まで、スタック全体を貫く「可観測性」を構築することに他ならない。
通信プロトコル仕様(TLS 1.3の強制など)の厳格化は前提として、次は「耐量子暗号(PQC)」を見据えた通信基盤への移行も視野に入れる時期に来ている。今の攻撃者は、今日のトラフィックを暗号化して保存し、数年後に量子コンピュータで解読することを画策しているのだから。
セキュリティは静止画ではない。ログという名の「現在進行形の歴史」を読み解き、その裏にある攻撃者のロジックを先読みする。それこそが、我々が目指すべき最高峰のエンジニアリングである。
ログの海に溺れるな。その中にある「不自然な一行」を見つけ出せ。それが防衛の第一歩だ。
コメント