説明
log_min_duration_statement は、指定時間以上かかった PostgreSQL 文の実行時間と SQL 内容を記録します。単位のない正の値はミリ秒、0 はすべての文、-1 はこの実行時間に基づく記録の無効化を意味します。
性能診断に役立ちますが、SQL に機密値があればログにも残る場合があります。無効にしても、他の設定によるエラーや SQL の記録まですべて停止するわけではありません。
想定される影響
- SQL 内の機密値が、ログを参照できる人に公開されるおそれがあります。
- しきい値が低すぎるとログ量と負荷が増え、不要な無効化では診断資料が不足する場合があります。
対処方法
- 診断と監査の要件に合う
log_min_duration_statementを選んでください。不要な場合だけ -1 で無効にし、必要な場合は適切なしきい値を使ってください。 - ログのアクセスと保持期間を制限し、SQL の機密値が記録されないか確認してください。変更後はログ量、性能への影響、必要な診断情報を確認してください。
例
インスタンス設定の一部を示す例です。サポートされるエンジンバージョンとマシンタイプを選び、省略した必須設定を用意してください。 エンジンバージョンの違いは、このフラグ変更の前提条件ではありません。
変更前
hcl
resource "google_sql_database_instance" "db" {
name = "postgres-instance"
database_version = "POSTGRES_14"
region = "us-central1"
settings {
database_flags {
name = "log_min_duration_statement"
value = "2"
}
}
}
変更後
hcl
resource "google_sql_database_instance" "db" {
name = "postgres-instance"
database_version = "POSTGRES_15"
region = "us-central1"
settings {
tier = "db-f1-micro"
database_flags {
name = "log_min_duration_statement"
value = "-1"
}
}
}
補足:
- 変更前: 2 は実行に 2 ミリ秒以上かかった文を記録します。
- 変更後: -1 は実行時間に基づく文の記録を無効にします。PostgreSQL のすべてのログを停止するものではありません。