概要
前回は、GitHub ActionsとTerraformでGCP管理を始める でTerraformでGCPの管理を始めるのを紹介したが、今回は、AuditingをProject内で有効化する設定を書いておく。
GCPのAudit log
種類が大きく分けて4種類。そしてDataAccessAuditLogの中にまた4種類。
-
Admin Activity audit logs: デフォルトで有効。無効化できない。
-
Data Access audit logs: BigQuery データアクセス監査ログを除き、データアクセス監査ログはデフォルトで無効 詳細: データアクセス監査ログを構成する
-
ADMIN_WRITE
: デフォルトで有効。無効化できない。Admin Activity audit logs are enabled for all Google Cloud services and can't be configured.
-
ADMIN_READ
: 自由に設定可 -
DATA_READ
: 自由に設定可 -
DATA_WRITE
: 自由に設定可
-
-
System Event audit logs: デフォルトで有効。無効化できない。
-
Policy Denied audit logs: デフォルトで有効。無効化できない。
内容、詳細、料金に関してはGCPの監査ログを有効にしてますか?実はデフォルトで無効になってますよ!が超絶わかりやすいのでこちらをご覧ください。
やるべきこと
デフォルトで無効化されていて、自由に設定ができる以下のデータアクセス監査ログを有効にする:
ADMIN_READ
DATA_READ
DATA_WRITE
設定方法 (Console)
デフォルトの値を設定
-
audit logを開く
注意:デフォルト設定は、Project、Folder、Organizationレベルで設定ができるので、現在どのレベルで設定しているかを左上の組織、フォルダ、プロジェクトを選択する部分から自分の設定したいものを選択してからAudit Logを開く!
各サービスごとの設定
サービスごとの設定も、設定したいレベルからのAudit logsをクリックして設定。
Projectの場合は、https://console.cloud.google.com/iam-admin/audit?project=your_project
設定方法 (Terraform)
設定するレベルによって使うリソースが異なる:
- プロジェクト: google_project_iam_audit_config
- フォルダ: google_folder_iam_audit_config
- 組織: google_organization_iam_audit_config
また、Terraformで管理している単位によって、対応するレベルを選ぶ必要がある。
例えば、Projectごとに管理しているのに、Organizationの設定をそのTerraformコードに入れるのはナンセンスなので、Organization用のService Accountを作成して分けるなど
ProjectごとにService Accountアカウントを発行しているケースが多いと思うので、今回は、 プロジェクト: google_project_iam_audit_configを例に取り上げる。
例. すべてのサービスのすべてのDataAccessAuditLogを有効化する
resource "google_project_iam_audit_config" "all-services" {
project = "your project"
service = "allServices"
audit_log_config {
log_type = "ADMIN_READ"
}
audit_log_config {
log_type = "DATA_READ"
}
audit_log_config {
log_type = "DATA_WRITE"
}
}
service
には、具体的なサービスを cloudsql.googleapis.com
のように入れるか、allServices
という特別な文字列を入れて全てに適用するかになる。allServices
を入れるとDefaultを設定したのと同じ様になっていそう。(個別のサービスとデフォルトが異なるケースでどうなるのかは試していない)
Cost
- 毎月50GBまで無料(超えると$0.50/GiB)
- ストレージは 30 日間無料(デフォルトでは30日なのでデフォルトのまま使っていれば無料。超えると$0.01/GiB)