Azure MySQL TLS 강제 설정 점검

Azure MySQL에서 TLS 연결을 요구하고 클라이언트의 서버 인증서 검증을 유지하세요.

설명

MySQL에서 TLS 연결을 강제하지 않으면 쿼리와 응답이 암호화되지 않은 채 전송될 수 있습니다. 과거 Azure Single Server의 sslEnforcement와 현재 Flexible Server의 require_secure_transport는 서로 다른 설정입니다.

잠재적 영향

통신을 가로챌 수 있는 주체가 데이터베이스 요청과 응답을 읽거나 변조할 수 있습니다. 내부 네트워크도 전송 구간 보호를 대신하지 않습니다.

해결 방법

현재 Flexible Server의 require_secure_transport를 ON으로 유지하세요. 애플리케이션도 TLS를 사용하고 서버 인증서를 검증하도록 구성한 뒤 필요한 연결이 계속 동작하는지 확인하세요.

예시

변경 전은 지원이 종료된 Single Server의 과거 발췌이며 sourceServerId는 당시 복원 원본의 리소스 ID입니다. 변경 후의 server는 별도로 준비한 Flexible Server를 가리킵니다. 서버 선언과 데이터 이전은 별도이며 이 코드는 이전을 수행하지 않습니다.

변경 전

bicep
resource server 'Microsoft.DBforMySQL/servers@2017-12-01' = {
  name: 'server'
  properties: {
    version: '5.6'
    createMode: 'GeoRestore'
    sourceServerId: sourceServerId
  }
}

sslEnforcement 생략만으로 실제 서버가 평문 연결을 허용했다고 단정할 수는 없습니다.

변경 후

bicep
resource server_tls 'Microsoft.DBforMySQL/flexibleServers/configurations@2024-12-30' = {
  parent: server
  name: 'require_secure_transport'
  properties: {
    source: 'user-override'
    value: 'ON'
  }
}

Flexible Server의 보안 전송 매개변수를 명시합니다. 클라이언트에서 서버 인증서 검증을 별도로 유지하세요.

참조