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 로그를 끄지는 않습니다.

참조