포함된 데이터베이스 인증이 활성화된 Cloud SQL 인스턴스

포함된 데이터베이스 인증을 사용하면 데이터베이스 안에서 사용자의 접근을 관리할 수 있습니다. 기능의 필요성과 사용자 관리 권한을 함께 검토하세요.

설명

SQL Server의 포함된 데이터베이스 인증은 인스턴스 로그인에만 의존하지 않고 데이터베이스에서 사용자를 인증할 수 있게 합니다. 인증을 없애는 기능은 아니지만, ALTER ANY USER 같은 권한을 가진 데이터베이스 사용자가 다른 사용자에게 접근을 허용할 수 있으므로 권한 관리 범위를 넓혀 확인해야 합니다.

이 기능이 필요하지 않은 Cloud SQL 인스턴스에서는 contained database authentication을 비활성화하세요. 기능을 사용한다면 인스턴스 로그인과 포함된 데이터베이스 사용자를 모두 관리해야 합니다.

잠재적 영향

  • 사용자 관리 권한이 과도하면 의도하지 않은 계정에 데이터베이스 접근이 허용될 수 있습니다.
  • 인스턴스 로그인만 점검하면 포함된 데이터베이스 사용자의 접근 권한을 놓칠 수 있습니다.

해결 방법

  • 기존 사용자와 애플리케이션의 인증 방식을 확인하고, 기능이 불필요하면 contained database authentication을 문자열 off로 설정하세요. 기능을 유지할 때는 ALTER ANY USER 같은 권한을 필요한 사용자로 제한하세요.
  • 기존 인스턴스는 Cloud SQL 콘솔이나 지원되는 관리 도구/API로 변경하세요. google.cloud 1.14.0의 SQL 인스턴스 모듈은 기존 객체를 업데이트하지 못하므로 플레이북 수정만으로 변경을 적용할 수 없습니다. 플래그 목록을 교체할 때는 필요한 다른 플래그를 보존하세요.
  • 변경 후 필요한 애플리케이션 연결이 정상 동작하고, 허용하지 않은 사용자의 접근은 거부되는지 확인하세요.

예시

다음은 과거 설정 예시입니다. SQLSERVER_13_1은 현재 문서화된 Cloud SQL 버전 식별자가 아닙니다. 실제 배포에는 지원되는 버전과 환경별 설정을 사용하고, 플래그 값은 "on" 또는 "off"처럼 문자열로 명시하세요.

첫 번째 설정

yaml
- name: sql_instance
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    database_version: SQLSERVER_13_1
    name: "{{ resource_name }}-2"
    project: test_project
    region: us-central1
    service_account_file: /tmp/auth.pem
    settings:
      database_flags:
      - name: contained database authentication
        value: on
      tier: db-n1-standard-1
    state: present

contained database authentication을 켜는 설정입니다. 데이터베이스 사용자와 사용자 관리 권한을 함께 관리해야 합니다.

비교 설정

yaml
- name: sql_instance
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    database_version: SQLSERVER_13_1
    name: '{{ resource_name }}-2'
    project: test_project
    region: us-central1
    service_account_file: /tmp/auth.pem
    settings:
      database_flags:
      - name: contained database authentication
        value: off
      tier: db-n1-standard-1
    state: present

기능이 필요하지 않을 때는 플래그를 끄세요. 적용 전에 포함된 데이터베이스 인증에 의존하는 연결이 없는지 확인해야 합니다.

참조