やりたいこと
GCPの監査ログの出力設定をTerraformでおこなう
GCPの4種の監査ログのうち、自分であれこれ設定できる「データアクセス監査ログ」について、Terraformで有効化したい。
やりかた
-
google_project_iam_audit_configを使用する。
-
audit_log_config
には、有効化したいデータアクセス監査ログの種別を設定する。
-
全部のサービスをいっきに有効化したい場合
resource "google_project_iam_audit_config" "sample" {
project = "sample_project"
service = "allServices"
# 有効化したい監査ログの種別を列挙する
audit_log_config {
log_type = "ADMIN_READ"
}
audit_log_config {
log_type = "DATA_READ"
}
audit_log_config {
log_type = "DATA_WRITE"
}
}
特定のサービスだけ有効化したい場合は以下。
- サービス名は、こちらを参照。
resource "google_project_iam_audit_config" "sample" {
project = "sample_project"
# 有効化したいサービスを列挙する
for_each = toset([
"run.googleapis.com",
"storage.googleapis.com",
])
service = each.value
# 有効化したい監査ログの種別を列挙する
audit_log_config {
log_type = "ADMIN_READ"
}
audit_log_config {
log_type = "DATA_READ"
}
audit_log_config {
log_type = "DATA_WRITE"
}
}
つまづいたことメモ
サービス名を指定するところで、いつものサービス名(API名)(ここではsqladmin.googleapis.com
)を指定したところ、
「そんなサービスはないか、サービス単位の監査ログの対象じゃない」とエラーになり焦っていた。
いつものサービス名と、Loggingの文脈でのサービス名は、違うっぽい・・?
Error 400:
Service sqladmin.googleapis.com does not exist or does not support service level configuration of Google Cloud audit logging.,
badRequest
参考URL
Terraform公式ドキュメント - google_project_iam_audit_config
CloudLogging公式ドキュメント - Mapping services to Logging resource types