Cloud SQL SQL Server 세션 기본 옵션 점검

user options를 애플리케이션 요구와 비교하고 변경 영향을 시험하세요.

설명

SQL Server의 user options는 새 연결에 적용할 세션 기본 옵션의 비트마스크입니다. 0이 아닌 값이 곧 위험한 권한 부여를 뜻하지 않으며, 예제의 32는 ANSI_NULLS 옵션입니다.

세션은 SET 문으로 옵션을 변경할 수 있고 기존 연결에는 서버 기본값 변경이 즉시 적용되지 않습니다. 업무에 맞지 않는 기본값은 쿼리 동작이나 데이터 처리 결과를 바꿀 수 있습니다.

잠재적 영향

  • 예상과 다른 NULL 비교나 다른 세션 동작이 애플리케이션 오류를 유발할 수 있습니다.
  • 일괄 초기화하면 특정 옵션을 전제로 한 워크로드가 중단될 수 있습니다.

해결 방법

  • user options의 비트별 의미와 애플리케이션이 설정하는 세션 옵션을 확인하세요. 불필요한 전역 기본값만 제거하고 0을 보편적인 보안 수정으로 적용하지 마세요.
  • 새 연결에서 실제 옵션과 쿼리 결과를 시험하고 연결 풀의 갱신 및 변경 복구 절차를 준비하세요.

예시

인스턴스 설정 일부를 비교하는 예제입니다. 실제 지원되는 엔진 버전과 SQL Server용 머신 유형을 사용하고, var.sql_server_tier와 생략된 필수 입력을 준비하세요. 이 플래그 변경에 예제와 같은 엔진 버전 변경이 필요한 것은 아닙니다.

변경 전

hcl
resource "google_sql_database_instance" "db" {
  name             = "sqlserver-instance"
  database_version = "SQLSERVER_2017_EXPRESS"
  region           = "us-central1"

  settings {
    database_flags {
      name  = "user options"
      value = "32"
    }
  }
}

변경 후

hcl
resource "google_sql_database_instance" "db" {
  name             = "sqlserver-instance"
  database_version = "SQLSERVER_2019_STANDARD"
  region           = "us-central1"

  settings {
    tier = var.sql_server_tier

    database_flags {
      name  = "user options"
      value = "0"
    }
  }
}

설명:

  • 변경 전: 32는 새 연결의 ANSI_NULLS 기본 옵션을 지정합니다. 그 자체로 추가 접근 권한을 주지 않습니다.
  • 변경 후: 0으로 추가 user options 비트를 지정하지 않습니다. 필요한 세션 동작이 유지되는지 확인해야 합니다.

참조