설명
ARM 또는 Bicep의 Microsoft.Sql/servers/firewallRules에서 startIpAddress를 0.0.0.0, endIpAddress를 255.255.255.255로 지정하면 전체 IPv4 범위를 허용합니다. 이 범위가 공용 엔드포인트에 적용되면 방화벽이 클라이언트의 출발지 주소를 제한하지 못합니다.
실제 연결에는 서버의 네트워크 설정도 영향을 줍니다. publicNetworkAccess가 비활성화되어 있다면 이 방화벽 규칙만으로 공용 연결이 가능해지지 않습니다. 연결할 수 있는 경우에도 데이터베이스 인증과 권한은 별도로 필요합니다.
시작과 끝을 모두 0.0.0.0으로 지정하는 별도 설정은 다른 고객의 구독을 포함한 Azure 리소스의 연결을 허용합니다. 전체 IPv4 범위와는 다른 예외지만, 내부 전용 연결로 간주해서는 안 됩니다.
잠재적 영향
- 공용 연결이 활성화되고 전체 IPv4 규칙이 적용되면 방화벽이 인터넷상의 IPv4 출발지 주소를 제한하지 못합니다.
- 네트워크 경로가 허용된 외부 클라이언트가 데이터베이스 인증을 시도할 수 있습니다. 데이터 접근에는 유효한 인증과 권한이 여전히 필요하지만, 유출된 자격 증명이 있다면 넓은 허용 범위가 악용 기회를 늘릴 수 있습니다.
해결 방법
- 공용 연결이 필요한 경우 실제 클라이언트의 출발지 IPv4 주소만 허용하세요. NAT를 사용하는 환경에서는 서버가 확인하는 공인 출발지 주소를 기준으로 범위를 정하세요.
startIpAddress와endIpAddress에는 CIDR이 아닌 개별 IPv4 주소를 오름차순으로 지정하세요. - 전체 IPv4 대역을 허용하는 규칙을 제거하고, 다른 서버 및 데이터베이스 수준 방화벽 규칙과 공용 네트워크 설정도 함께 점검하세요.
- 프라이빗 엔드포인트를 사용하는 구조라면 필요한 사설 연결을 검증한 뒤 공용 네트워크 액세스를 비활성화하세요. VNet이나 점프 호스트를 사용한다는 사실만으로 공용 경로가 제거되지는 않습니다. 인증과 데이터베이스 권한도 별도로 관리하세요.
예시
다음 발췌는 전체 IPv4 범위와 제한된 범위를 비교합니다. 첫 예시의 관리자 이름과 암호 문자열은 실제 자격 증명으로 사용하면 안 되며, 미리 보기 API 버전과 리소스 스키마도 배포 전에 검증해야 합니다. 두 번째 예시는 기존 sample 서버를 전제로 한 일부 구성으로, 완성된 배포 템플릿이 아닙니다.
전체 IPv4 범위
bicep
resource sqlServer1 'Microsoft.Sql/servers@2021-02-01-preview' = {
name: 'sqlServer1'
location: resourceGroup().location
properties: {
administratorLogin: 'adminUsername'
administratorLoginPassword: 'adminPassword'
}
}
resource sqlServer1AllowAll 'Microsoft.Sql/servers/firewallRules@2021-02-01-preview' = {
parent: sqlServer1
location: resourceGroup().location
name: 'AllowAll'
properties: {
endIpAddress: '255.255.255.255'
startIpAddress: '0.0.0.0'
}
}
제한된 주소 범위
bicep
resource sampleFirewall 'Microsoft.Sql/servers/firewallRules@2021-02-01-preview' = {
name: 'sample/firewall'
properties: {
startIpAddress: '192.168.1.2'
endIpAddress: '192.168.1.254'
}
}
설명:
- 첫 번째 예시: 시작과 끝 주소가 전체 IPv4 대역을 나타냅니다. 공용 연결 경로는 서버의 네트워크 설정에 따라 달라지며, 실제 데이터베이스 접근에는 인증과 권한도 필요합니다.
- 두 번째 예시:
192.168.1.2부터192.168.1.254까지 사설 주소 범위를 지정합니다. 이 주소가 서비스에서 확인하는 실제 클라이언트의 출발지인지 검증해야 합니다. 사설 주소를 적는 것만으로 프라이빗 연결이나 신뢰할 수 있는 관리망이 구성되지는 않습니다.