설명
Azure MSSQL Server에서 공용 네트워크 접근을 허용하면 공용 엔드포인트를 통한 데이터베이스 연결 경로가 열립니다. 방화벽 규칙까지 광범위하게 허용되어 있으면 불필요한 외부 연결 시도가 가능해질 수 있습니다.
공용 엔드포인트가 활성화되어도 누구나 데이터베이스를 읽을 수 있는 것은 아닙니다. 방화벽, 인증과 데이터베이스 권한이 적용됩니다.
잠재적 영향
- 접근이 필요 없는 외부 클라이언트의 연결·로그인 시도가 가능해질 수 있습니다.
- 유출된 자격 증명이나 잘못된 권한 설정이 악용될 때 네트워크 제한의 보호 효과가 줄어들 수 있습니다.
해결 방법
비공개 연결만 필요한 경우 프라이빗 엔드포인트, DNS와 클라이언트 경로를 구성·시험한 뒤 public_network_access_enabled를 false로 설정하세요. 공용 연결이 필요한 경우 방화벽 허용 범위를 실제 필요한 클라이언트로 제한하세요. 강한 인증과 최소 데이터 권한을 적용하고 변경 후 애플리케이션 접속을 확인하세요.
예시
같은 SQL 서버의 네트워크 설정을 변경하는 발췌입니다. 프라이빗 엔드포인트와 DNS는 생략했습니다. 공개된 예시 암호를 운영에서 사용하지 말고 보호된 입력으로 관리하세요.
변경 전
hcl
resource "azurerm_mssql_server" "app_db" {
name = "mssqlserver"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
version = "12.0"
administrator_login = "mradministrator"
administrator_login_password = "thisIsDog11"
}
공용 네트워크 접근을 명시적으로 끄지 않습니다. 실제 허용된 출발지는 서버의 방화벽 규칙으로 확인하세요.
변경 후
hcl
resource "azurerm_mssql_server" "app_db" {
name = "mssqlserver"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
version = "12.0"
administrator_login = "mradministrator"
administrator_login_password = "thisIsDog11"
public_network_access_enabled = false
}
공용 네트워크 접근을 비활성화합니다. 애플리케이션이 준비된 비공개 경로로 연결할 수 있어야 합니다.