Cloud SQL PostgreSQL の実行時間に基づく SQL ログ設定の確認

診断に必要な記録と SQL 内容の機密性を併せて考慮してください。

説明

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 のすべてのログを停止するものではありません。

参考資料