설명
MySQL 서버가 암호화되지 않은 연결을 허용하면 접속 정보와 데이터가 전송 중 노출될 수 있습니다. 내부 네트워크도 TLS 보호를 대신하지 않습니다. 과거 Single Server의 ssl_enforcement_enabled 대신 현재 Flexible Server에서는 require_secure_transport를 사용합니다.
잠재적 영향
- 암호화되지 않은 요청과 조회 결과를 가로채 읽거나 변조할 수 있습니다.
- 전송 암호화가 필요한 보안 기준을 충족하지 못할 수 있습니다.
해결 방법
Flexible Server에서 require_secure_transport를 ON으로 유지하세요. 애플리케이션과 운영 도구가 TLS 및 서버 인증서 검증을 사용하도록 구성하고 필요한 연결이 계속 동작하는지 확인하세요. 네트워크 접근과 데이터베이스 권한도 필요한 범위로 제한하세요.
예시
변경 전은 2025년에 종료된 Single Server의 역사적 구성입니다. 현재 배포에 사용하지 마세요. 변경 후는 기존 Flexible Server에 적용하는 TLS 매개변수 설정이며, 서버 이전 절차는 별도로 준비해야 합니다.
변경 전
hcl
resource "azurerm_mysql_server" "example" {
name = "webflux-mysql-${var.environment}${random_integer.rnd_int.result}"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
administrator_login = "webflux-${var.environment}"
administrator_login_password = random_string.password.result
sku_name = "B_Gen5_2"
storage_mb = 5120
version = "5.7"
auto_grow_enabled = true
backup_retention_days = 7
infrastructure_encryption_enabled = true
public_network_access_enabled = true
ssl_enforcement_enabled = false
}
변경 후
hcl
resource "azurerm_mysql_flexible_server_configuration" "example" {
name = "require_secure_transport"
resource_group_name = azurerm_resource_group.example.name
server_name = azurerm_mysql_flexible_server.example.name
value = "ON"
}
변경 전은 SSL 연결을 강제하지 않습니다. 변경 후는 현재 서버에서 암호화된 연결을 요구합니다. 클라이언트의 인증서 검증도 유지해야 합니다.