🎯 結論ファースト:30秒でわかるポイント
→ 「社内の防犯カメラ」
デフォルト:無効 ⚠️ 要設定
→ 「公的機関の監視記録」
デフォルト:有効 ✅
5種類のログで完全把握
API / Audit / Auth / Controller / Scheduler
/aws/eks/クラスター名/cluster
S3やSIEMへの転送も可能
🏢 たとえ話で理解しよう
(コントロールプレーンログ)
施設内部 で何が起きているかを記録
(CloudTrail)
外部との取引・契約 を公式記録
💡 ポイント:
「社内カメラ」は
日常業務の詳細
を記録
「公的記録」は
重要な決定・変更
を記録
両方合わせて初めて完全な監査が可能!
📊 5つのコントロールプレーンログ
「お客様からこんな依頼がありました」
• kubectl コマンドの実行
• Pod/Service等の作成・削除
• APIサーバーの起動オプション
「誰がいつ何をしたか」
• ユーザー名とIPアドレス
• リクエストの種類と対象
• 成功/失敗の結果
「このIDは本物?権限は?」
• IAMユーザー/ロールの認証
• RBAC権限の確認
• 認証成功/失敗
「システムが自動で対応しました」
• Podの自動再起動
• ReplicaSetの調整
• ServiceAccountの管理
「どの部屋に誰を案内したか」
• Podの配置先ノード
• スケジューリングの理由
• リソース制約による判断
⚖️ 2つの監視システムの違い
- 対象 Kubernetes API への操作
- 例 Pod作成、Deployment更新、Secret参照
- 保存先 CloudWatch Logs
- デフォルト ❌ 無効(要設定)
- コスト CloudWatch Logs の料金
- 対象 AWS API への操作
- 例 CreateCluster、UpdateNodegroup、DeleteCluster
- 保存先 S3 / CloudWatch Logs
- デフォルト ✅ 有効(90日間保持)
- コスト 基本無料(長期保存は有料)
🎯 使い分けのポイント
- 「誰がPodを削除した?」
- 「なぜPodがスケジュールされない?」
- 「認証エラーの原因は?」
- 「クラスターを作成したのは誰?」
- 「ノードグループの設定変更履歴」
- 「IRSAでどのAWS APIが呼ばれた?」
🔄 ログの流れを理解しよう
📋 ログストリームの命名規則
⚙️ 有効化の方法
重要:デフォルトでは無効!
EKSコントロールプレーンログは
デフォルトで無効
です。
セキュリティ監査やトラブルシューティングのために、
必ず有効化
しましょう!
Step 1: EKSコンソールを開く
Amazon EKS → クラスター → 対象クラスターを選択
Step 2: Observabilityタブを選択
「Control plane logging」セクションを探す
Step 3: Manage loggingをクリック
5つのログタイプそれぞれのON/OFFを選択
Step 4: Save changesをクリック
✅ 完了!CloudWatch Logsへの送信が開始されます
aws eks update-cluster-config \
--name my-cluster \
--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
aws eks describe-cluster \
--name my-cluster \
--query 'cluster.logging'
name = "my-cluster"
role_arn = aws_iam_role.cluster.arn
# ✅ 全ログタイプを有効化
enabled_cluster_log_types = [
"api" ,
"audit" ,
"authenticator" ,
"controllerManager" ,
"scheduler"
]
vpc_config {
subnet_ids = var.subnet_ids
}
}
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: ap-northeast-1
cloudWatch:
clusterLogging:
enableTypes:
- api
- audit
- authenticator
- controllerManager
- scheduler
eksctl utils update-cluster-logging \
--cluster my-cluster \
--enable-types api,audit,authenticator,controllerManager,scheduler \
--approve
🔍 便利なログ分析クエリ
🔐 aws-auth ConfigMapの変更を検出
| filter @logStream like "kube-apiserver-audit"
| filter verb in [ "update" , "patch" ]
| filter objectRef.resource = "configmaps"
| filter objectRef.name = "aws-auth"
| filter objectRef.namespace = "kube-system"
| sort @timestamp desc
🚨 認証失敗を検出
| filter @logStream like "authenticator"
| filter @message like "failed"
| sort @timestamp desc
| limit 50
🗑️ リソース削除の履歴
| filter @logStream like "kube-apiserver-audit"
| filter verb = "delete"
| sort @timestamp desc
| limit 100
👤 特定ユーザーの操作履歴
| filter @logStream like "kube-apiserver-audit"
| filter user.username = "admin"
| sort @timestamp desc
| limit 100
✅ ベストプラクティス
約 $0.50/GB
約 $0.03/GB/月
約 $0.005/GB スキャン
S3への自動エクスポート
⚖️ コスト vs セキュリティのバランス
ログ保存のコストは、セキュリティインシデント発生時の
調査・復旧コストと比較すると非常に小さいものです。
❓ よくある質問
特に重要なのは「audit」と「authenticator」です。これらはセキュリティ監査に必須です。
ただし、ログ量が多いクラスターではコストを確認しながら判断してください。
• コントロールプレーンログ :Kubernetes内部の操作(Pod作成、設定変更など)
• CloudTrail :AWS APIの操作(クラスター作成、ノードグループ変更など)
完全な監査には 両方が必要 です。
ログはコントロールプレーン側で処理され、ワークロードには影響しません。
ただし、設定変更中(数分間)はクラスターのステータスが「Updating」になります。
• CloudWatch Logs Insights :クエリで効率的にフィルタリング
• Falco :異常検知の自動化(OSS)
• サードパーティSIEM :Splunk、Datadog等との連携
• CloudTrail Insights :異常なAPI呼び出しを自動検出
Kubernetes API リクエストの最大サイズは1.5MiBなので、非常に大きなリクエストは切り詰められる可能性があります。
通常の操作では問題になりません。
🎓 まとめ
5種類のログタイプ
デフォルト無効→要設定
EKS管理操作を記録
デフォルト有効
Insights で分析
S3/SIEM連携可能
インシデント調査
コンプライアンス対応