説明
監査ログは、権限変更、リソース操作、不審な API 呼び出しを調査する際の証拠になります。kube-audit は API 監査イベントを収集し、kube-audit-admin は get・list イベントを除いた範囲を収集します。必要な操作の記録がないと、事故の経緯を追跡しにくくなります。
想定される影響
- 事故後に、誰がどの Kubernetes API 操作を行ったか確認しにくくなる場合があります。
- 権限の悪用や不審な制御プレーン活動への対応が遅れる場合があります。
対処方法
- AKS を対象とする
azurerm_monitor_diagnostic_settingのenabled_logで、調査要件に合うkube-auditまたはkube-audit-adminを選んでください。読み取り操作も必要なら、除外される範囲を考慮してください。 - Log Analytics など承認された宛先へ送り、受信、保持期間、アクセス権限を確認してください。収集だけではアラートは作られないため、必要な検知と対応も設定してください。
例
AKS と診断設定の抜粋です。ノードプール、ID、ログ送信先など省略したリソースは別途用意してください。
変更前
hcl
resource "azurerm_kubernetes_cluster" "example" {
name = "example-aks"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "exampleaks"
}
resource "azurerm_monitor_diagnostic_setting" "example" {
name = "aks-diagnostics"
target_resource_id = azurerm_kubernetes_cluster.example.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.example.id
enabled_log {
category = "kube-apiserver"
}
}
変更後
hcl
resource "azurerm_kubernetes_cluster" "example" {
name = "example-aks"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "exampleaks"
}
resource "azurerm_monitor_diagnostic_setting" "example" {
name = "aks-diagnostics"
target_resource_id = azurerm_kubernetes_cluster.example.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.example.id
enabled_log {
category = "kube-audit"
}
}
補足:
- 変更前: API サーバーの運用ログを選びます。必要な監査カテゴリーを他の診断設定で収集しているかも確認が必要です。
- 変更後: kube-audit を選び、API 監査イベントを指定したログ送信先へ送ります。