전체 IPv4 범위를 지정한 Azure SQL 방화벽 규칙

Azure SQL의 전체 IPv4 허용 범위를 필요한 클라이언트 주소로 제한하고, 공개 연결과 데이터베이스 인증을 함께 확인합니다.

설명

Ansible Azure SQL 방화벽 규칙에서 start_ip_address를 0.0.0.0, end_ip_address를 255.255.255.255로 지정하면 전체 IPv4 주소를 포함합니다. 이 범위가 Azure SQL 논리 서버의 공개 엔드포인트에 적용되면 IP 허용 목록으로 클라이언트 출발지를 제한하는 효과가 없어집니다.

공개 네트워크 접근이 비활성화되어 있다면 이 규칙만으로 공개 연결이 허용되지는 않습니다. 네트워크에서 연결할 수 있는 경우에도 데이터베이스 인증과 권한은 여전히 필요합니다.

Azure SQL Database에서 양 끝을 모두 0.0.0.0으로 지정하는 것은 별도의 Azure 서비스 접근 예외입니다. 다른 고객의 Azure 리소스에서 오는 연결도 포함할 수 있으므로, 이런 예외와 서버 및 데이터베이스의 다른 방화벽 규칙을 함께 검토하세요.

잠재적 영향

  • 공개 엔드포인트가 활성화되어 있다면 IP 허용 목록이 의도하지 않은 출발지의 연결 시도를 차단하지 못할 수 있습니다.
  • 인증 정보가 유출되거나 계정 권한이 과도한 경우, 불필요하게 넓은 네트워크 허용 범위가 이러한 문제의 악용 가능성을 높일 수 있습니다. 전체 범위를 지정했다는 사실만으로 데이터 접근이 이미 발생했다고 판단할 수는 없습니다.

해결 방법

  • 애플리케이션과 관리 도구에 필요한 실제 출발지 주소를 확인하고, 전체 IPv4 규칙을 필요한 주소나 범위로 제한하세요. 공개 엔드포인트를 사용할 때는 클라이언트의 사설 주소가 아니라 서비스에서 확인하는 공인 출발지 주소가 필요할 수 있습니다.
  • 공개 연결이 필요 없다면 프라이빗 엔드포인트 등 필요한 연결 경로를 구성하고 공개 네트워크 접근을 비활성화하세요. 좁은 사설 주소 범위만 작성하는 것으로 이 구성을 대신하지 마세요.
  • 서버 및 데이터베이스에 적용되는 다른 방화벽 규칙과 Azure 서비스 접근 예외도 검토하세요. 변경 후 필요한 연결이 유지되는지 확인하고, 인증 및 데이터베이스 권한도 별도로 점검하세요.

예시

아래 예시는 전체 IPv4 범위와 작은 구간을 비교합니다. 서버의 공개 네트워크 접근, 프라이빗 엔드포인트, 인증 설정은 포함하지 않습니다.

전체 IPv4 범위

yaml
- name: Create Firewall Rule
  azure.azcollection.azure_rm_sqlfirewallrule:
    resource_group: myResourceGroup
    server_name: firewallrulecrudtest-6285
    name: firewallrulecrudtest-5370
    start_ip_address: 0.0.0.0
    end_ip_address: 255.255.255.255

좁은 사설 IPv4 범위

yaml
- name: Create Firewall Rule
  azure.azcollection.azure_rm_sqlfirewallrule:
    resource_group: myResourceGroup
    server_name: firewallrulecrudtest-6285
    name: firewallrulecrudtest-5370
    start_ip_address: 172.28.10.136
    end_ip_address: 172.28.10.138

설명:

  • 첫 번째 예시: 0.0.0.0부터 255.255.255.255까지 전체 IPv4 범위를 허용합니다. 공개 엔드포인트의 활성화 여부와 별개로, 필요한 클라이언트 주소만 허용하도록 범위를 줄이세요.
  • 두 번째 예시: 172.28.10.136부터 172.28.10.138까지 세 개의 사설 주소를 지정합니다. 서비스가 실제로 확인하는 클라이언트의 출발지 주소에 맞는지 검증해야 합니다. 이 예시는 프라이빗 연결을 구성하지 않으므로, 실제 연결 경로도 별도로 확인하세요.

참조