접근 범위가 넓을 수 있는 스토리지 계정 네트워크 규칙

스토리지 계정의 공용 네트워크 접근을 업무에 필요한 범위로 제한하고, 허용 규칙과 서비스 예외를 점검하는 방법을 설명합니다.

설명

Azure Storage 계정의 공용 엔드포인트를 모든 네트워크에 허용하면 업무에 필요하지 않은 위치에서도 데이터 접근을 시도할 수 있습니다. Ansible의 network_acls.default_action: Allow는 공용 엔드포인트에 대한 기본 네트워크 제한을 해제합니다. Deny를 사용하더라도 허용 주소 범위나 서비스 예외가 지나치게 넓으면 의도보다 많은 연결이 허용될 수 있습니다.

Azure에서는 public_network_access 설정이 방화벽의 기본 동작보다 우선합니다. 공용 접근을 비활성화할 때도 기존 신뢰할 수 있는 서비스 예외와 리소스 인스턴스 예외를 함께 검토하세요. 네트워크에서 연결을 허용하는 것과 데이터 읽기·쓰기 권한을 부여하는 것은 별개입니다. 공용 엔드포인트가 열려 있다고 해서 곧바로 익명 접근이 허용되는 것은 아닙니다.

잠재적 영향

  • 네트워크 허용 범위가 넓으면 유출된 자격 증명이나 과도한 데이터 권한이 업무와 무관한 네트워크에서도 악용될 수 있습니다.
  • 민감한 데이터를 보호하려면 필요한 클라이언트의 연결 경로와 데이터 권한을 모두 제한해야 합니다.

해결 방법

  1. 공용 엔드포인트가 필요하다면 network_acls.default_action을 Deny로 설정하고 필요한 공용 IPv4 주소나 가상 네트워크만 허용하세요. 리소스 인스턴스 규칙과 bypass 예외도 실제 사용 목적에 맞게 최소화하세요.
  2. 프라이빗 연결만 필요하다면 사용하는 스토리지 서비스의 프라이빗 엔드포인트와 DNS를 먼저 구성한 뒤 public_network_access: Disabled를 적용하세요. 프라이빗 엔드포인트를 만드는 것만으로 공용 접근이 차단되지는 않습니다. 유지되는 서비스·리소스 인스턴스 예외도 확인하세요.
  3. IP 규칙에는 클라이언트의 실제 공용 출발지 주소를 사용하세요. 같은 Azure 지역에서 오는 요청에는 IP 규칙이 적용되지 않으므로 필요한 경우 가상 네트워크 규칙을 사용하세요. 변경 후 승인된 연결이 성공하고 허용하지 않은 연결은 차단되는지 테스트하고, 데이터 접근 권한도 점검하세요.

예시

아래 예시는 기본 허용과 기본 거부 설정을 비교합니다. 계정 이름도 clh0003에서 clh0002로 달라지므로, 기존 계정에 적용할 때는 같은 대상 계정을 지정하세요. 실제 리소스 그룹, 사용 가능한 계정 이름과 인증 설정이 필요합니다.

변경 전

yaml
- name: configure firewall and more virtual networks
  azure_rm_storageaccount:
    resource_group: myResourceGroup
    name: clh0003
    type: Standard_RAGRS
    network_acls:
      bypass: AzureServices,Metrics
      default_action: Allow

변경 후

yaml
- name: configure firewall and virtual networks
  azure_rm_storageaccount:
    resource_group: myResourceGroup
    name: clh0002
    type: Standard_RAGRS
    network_acls:
      bypass: AzureServices,Metrics
      default_action: Deny
      ip_rules:
        - value: 1.2.3.4
          action: Allow

변경 전: default_action: Allow는 공용 엔드포인트가 활성화되어 있을 때 모든 네트워크에서 오는 연결을 허용합니다. 데이터에 대한 접근은 별도의 권한 설정에 따릅니다.

변경 후: 기본 동작을 Deny로 바꾸고 하나의 IP 주소에 허용 규칙을 추가합니다. 1.2.3.4는 예시 주소이므로 실제로 허용할 클라이언트의 공용 주소로 바꾸세요. bypass: AzureServices,Metrics가 유지되므로 해당 IP 외에 예외에 해당하는 접근도 가능합니다. 필요한 예외만 남기고 연결을 테스트하세요.

참조