Skip to content

Commit df4c61e

Browse files
committed
feat(google_project): Include data access logs for additional Google Cloud services
1 parent 42e344d commit df4c61e

3 files changed

Lines changed: 18 additions & 4 deletions

File tree

google_project/locals.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,7 @@ locals {
3232
"stackdriver.googleapis.com",
3333
]
3434
all_project_services = setunion(local.default_project_services, var.project_services)
35+
36+
default_data_access_logs = ["iam.googleapis.com", "secretmanager.googleapis.com", "sts.googleapis.com"]
37+
data_access_logs_filter = join("\n", toset([for v in concat(local.default_data_access_logs, var.additional_data_access_logs) : "AND NOT protoPayload.serviceName=\"${v}\""]))
3538
}

google_project/main.tf

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,13 @@ resource "google_project_iam_audit_config" "data_access_high" {
4545

4646
resource "google_logging_project_exclusion" "data_access_exclusions" {
4747
name = "exclude-data-access-log-sink"
48-
description = "Exclude data access logs except BigQuery, secrets manager, and IAM for this project"
48+
description = "Exclude data access logs except BigQuery, IAM, Secret Manager, and STS for this project. Additional services can be included with var.additional_data_access_logs"
4949
project = local.project_id
5050

5151
filter = <<EOT
5252
log_id("cloudaudit.googleapis.com/data_access")
5353
AND NOT protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.BigQueryAuditMetadata"
54-
AND NOT protoPayload.serviceName="secretmanager.googleapis.com"
55-
AND NOT protoPayload.serviceName="iam.googleapis.com"
56-
AND NOT protoPayload.serviceName="sts.googleapis.com"
54+
${local.data_access_logs_filter}
5755
EOT
5856
}
5957

google_project/variables.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,19 @@ variable "display_name" {
2626
type = string
2727
}
2828

29+
variable "additional_data_access_logs" {
30+
default = []
31+
description = "Additional services that data access logs should be included for. Google Cloud services with audit logs: https://cloud.google.com/logging/docs/audit/services ."
32+
type = list(string)
33+
34+
validation {
35+
condition = alltrue([
36+
for v in var.additional_data_access_logs : endswith(v, ".googleapis.com")
37+
])
38+
error_message = "The Google Cloud service must end with .googleapis.com . Google Cloud services with audit logs: https://cloud.google.com/logging/docs/audit/services ."
39+
}
40+
}
41+
2942
variable "parent_id" {
3043
description = "Parent folder (with GCP)."
3144
type = string

0 commit comments

Comments
 (0)