설명
Azure Storage Account에 광범위한 네트워크 접근을 허용하거나 Blob 익명 접근을 허용하면 데이터가 의도하지 않은 대상에게 노출될 수 있습니다. 네트워크에서 도달할 수 있다는 것과 인증 없이 데이터를 읽을 수 있다는 것은 별도 조건입니다.
계정에서 Blob 공개 접근을 허용해도 모든 컨테이너가 자동으로 공개되지는 않습니다. 컨테이너의 공개 수준과 네트워크 제한이 함께 적용되며, 인증된 데이터 접근에는 해당 권한이 필요합니다.
잠재적 영향
- 공개로 설정된 컨테이너의 데이터가 의도하지 않은 사용자에게 읽힐 수 있습니다.
- 넓은 네트워크 허용 범위가 유출된 자격 증명의 오용을 제한하는 데 방해가 될 수 있습니다.
해결 방법
계정과 컨테이너에서 불필요한 익명 Blob 접근을 비활성화하세요. 공용 엔드포인트가 필요하면 네트워크 기본 동작을 Deny로 설정하고 승인된 공용 IP 주소나 서브넷만 허용하세요. 비공개 연결만 사용할 경우 프라이빗 엔드포인트와 DNS를 먼저 구성·시험한 뒤 공용 네트워크 접근을 비활성화하세요. 데이터 권한과 정상 클라이언트의 접근도 확인하세요.
예시
기존 AzureRM 2.99.0 형식의 예시입니다. allow_blob_public_access는 이전 속성 이름이므로 설치된 공급자 버전에 맞는 속성을 사용하세요. 예시 IP 주소는 실제 승인된 공용 주소로 바꾸세요.
변경 전
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 익명 읽기가 허용되는 것은 아닙니다.
변경 후
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 익명 접근을 비활성화합니다. 허용된 네트워크에서도 데이터 접근 권한은 별도로 필요합니다.