설명
Key Vault는 키, 비밀값과 인증서에 대한 접근이 이루어지는 민감한 서비스입니다. 필요한 감사 로그를 수집하지 않으면 누가 어떤 작업을 했는지 중앙에서 추적하기 어렵고, 사고의 원인과 영향 범위를 파악하는 데 시간이 더 걸릴 수 있습니다.
진단 설정의 AuditEvent 카테고리로 로그를 내보내고 실제 수집을 확인하세요. 로그 수집은 접근 제어를 대신하지 않으며 로그 저장소에도 적절한 보호가 필요합니다.
잠재적 영향
- 비밀값 조회나 키 사용과 관련된 작업 기록을 조사하기 어려워질 수 있습니다.
- 감사 자료가 부족해 사고 조사와 영향 범위 파악이 늦어질 수 있습니다.
해결 방법
- Key Vault의
azurerm_monitor_diagnostic_setting에AuditEvent를 선택하고 Storage Account, Log Analytics 또는 Event Hubs 대상을 지정하세요. - 실제 Key Vault 작업으로 로그 도착 여부를 시험하고 필요한 이벤트가 포함되는지 확인하세요.
- 로그 대상의 보존 기간과 접근 권한을 관리하고, 비정상 접근에 대한 모니터링과 경보를 구성하세요.
예시
참조 리소스를 생략한 로깅 비교입니다. 키 권한, 네트워크 통제와 삭제 보호는 별도 검토가 필요합니다.
변경 전
hcl
resource "azurerm_key_vault" "example" {
name = "testvault"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
enabled_for_disk_encryption = true
tenant_id = data.azurerm_client_config.current.tenant_id
soft_delete_retention_days = 7
purge_protection_enabled = false
sku_name = "standard"
}
이 발췌에는 감사 로그 내보내기가 없습니다. 기존의 다른 진단 설정에서 필요한 기록을 수집하는지도 확인하세요.
변경 후
hcl
resource "azurerm_key_vault" "example" {
name = "testvault"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
enabled_for_disk_encryption = true
tenant_id = data.azurerm_client_config.current.tenant_id
soft_delete_retention_days = 7
purge_protection_enabled = false
sku_name = "standard"
}
resource "azurerm_monitor_diagnostic_setting" "example" {
name = "keyvault-diagnostics"
target_resource_id = azurerm_key_vault.example.id
storage_account_id = data.azurerm_storage_account.example.id
enabled_log {
category = "AuditEvent"
}
}
AuditEvent 로그를 기존 저장 계정으로 보냅니다. 설정 후 실제 기록과 저장소의 보존·접근 정책을 확인하세요.