설명
Blob 컨테이너의 publicAccess: Blob은 익명 사용자의 Blob 읽기를 허용하고, Container는 Blob 목록 조회도 허용합니다. 이 설정은 쓰기 권한을 부여하지 않습니다. 익명 접근이 실제로 허용되려면 Storage 계정에서도 익명 접근을 허용해야 하며, 계정의 네트워크 제한도 적용됩니다.
공개 배포가 필요하지 않은 로그, 백업, 업무 문서는 인증된 요청만 허용하세요. 계정에서 익명 접근을 금지하면 컨테이너의 공개 설정보다 우선합니다.
잠재적 영향
- 익명 읽기가 허용되면 파일의 민감정보가 외부에 노출될 수 있습니다.
- Blob 목록을 통해 파일 이름과 저장 구조가 드러날 수 있습니다.
해결 방법
- 컨테이너의
publicAccess를None으로 설정하고, 불필요한 익명 접근은 계정에서도allowBlobPublicAccess: false로 차단하세요. 기존 공개 클라이언트에 미치는 영향을 먼저 확인하세요. - 필요한 데이터 접근 권한과 SAS의 범위·만료 시간을 별도로 검토하세요. 익명 접근 차단이 기존 자격 증명이나 SAS 권한을 취소하는 것은 아닙니다.
- 의도적으로 공개하는 데이터는 민감한 데이터와 분리하고, 인증 없는 요청이 차단되는지 확인하세요.
예시
기존 Storage 계정 이름과 유효한 컨테이너 이름을 제공하세요. Blob 서비스 이름은 default입니다. 첫 예시의 공개 설정은 계정이 익명 접근을 허용하는 경우에만 사용할 수 있으므로, 예시를 실행하기 위해 계정 보호를 해제하지 마세요.
변경 전
bicep
param storageAccountName string
param containerName string
resource blob_container_example 'Microsoft.Storage/storageAccounts/blobServices/containers@2021-02-01' = {
name: '${storageAccountName}/default/${containerName}'
properties: {
denyEncryptionScopeOverride: true
publicAccess: 'Container'
metadata: {}
}
}
Container는 계정과 네트워크 설정이 허용하는 범위에서 익명 읽기와 Blob 목록 조회를 허용합니다.
변경 후
bicep
param storageAccountName string
param containerName string
resource blob_container_example 'Microsoft.Storage/storageAccounts/blobServices/containers@2021-02-01' = {
name: '${storageAccountName}/default/${containerName}'
properties: {
denyEncryptionScopeOverride: true
publicAccess: 'None'
metadata: {}
}
}
None은 이 컨테이너의 익명 접근을 차단합니다. 인증된 요청에 적용되는 데이터 권한은 별도로 관리하세요.