Azure Storage Account 공개 접근 설정 점검

네트워크 접근 범위와 Blob 익명 접근 설정을 각각 확인하세요.

설명

Azure Storage Account에 광범위한 네트워크 접근을 허용하거나 Blob 익명 접근을 허용하면 데이터가 의도하지 않은 대상에게 노출될 수 있습니다. 네트워크에서 도달할 수 있다는 것과 인증 없이 데이터를 읽을 수 있다는 것은 별도 조건입니다.

계정에서 Blob 공개 접근을 허용해도 모든 컨테이너가 자동으로 공개되지는 않습니다. 컨테이너의 공개 수준과 네트워크 제한이 함께 적용되며, 인증된 데이터 접근에는 해당 권한이 필요합니다.

잠재적 영향

  • 공개로 설정된 컨테이너의 데이터가 의도하지 않은 사용자에게 읽힐 수 있습니다.
  • 넓은 네트워크 허용 범위가 유출된 자격 증명의 오용을 제한하는 데 방해가 될 수 있습니다.

해결 방법

계정과 컨테이너에서 불필요한 익명 Blob 접근을 비활성화하세요. 공용 엔드포인트가 필요하면 네트워크 기본 동작을 Deny로 설정하고 승인된 공용 IP 주소나 서브넷만 허용하세요. 비공개 연결만 사용할 경우 프라이빗 엔드포인트와 DNS를 먼저 구성·시험한 뒤 공용 네트워크 접근을 비활성화하세요. 데이터 권한과 정상 클라이언트의 접근도 확인하세요.

예시

기존 AzureRM 2.99.0 형식의 예시입니다. allow_blob_public_access는 이전 속성 이름이므로 설치된 공급자 버전에 맞는 속성을 사용하세요. 예시 IP 주소는 실제 승인된 공용 주소로 바꾸세요.

변경 전

hcl
resource "azurerm_storage_account" "app_storage" {
  name                     = "storageaccountname"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"

  network_rules {
    default_action = "Deny"
    ip_rules       = ["0.0.0.0/0"]
  }
}

0.0.0.0/0은 주소 범위를 제한하지 않는 광범위한 CIDR입니다. 이 설정만으로 Blob 익명 읽기가 허용되는 것은 아닙니다.

변경 후

hcl
resource "azurerm_storage_account" "app_storage" {
  name                     = "storageaccountname"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
  allow_blob_public_access = false

  network_rules {
    default_action = "Deny"
    ip_rules       = ["100.0.0.1"]
  }
}

네트워크 허용 범위를 한 주소로 줄이고 계정의 Blob 익명 접근을 비활성화합니다. 허용된 네트워크에서도 데이터 접근 권한은 별도로 필요합니다.

참조