다음을 통해 공유


Azure Blob Storage의 Azure 역할 할당 조건에 대한 보안 고려 사항

Azure ABAC(Azure Attribute-based Access Control)를 사용하여 리소스를 완전히 보호하려면 Azure 역할 할당 조건에 사용되는 특성도 보호해야 합니다. 예를 들어 조건이 파일 경로를 기반으로 하는 경우 보안 주체에 파일 경로 이름을 바꿀 수 있는 무제한 권한이 있으면 액세스가 손상될 수 있음을 주의해야 합니다.

이 문서에서는 역할 할당 조건에 고려해야 하는 보안 고려 사항에 대해 설명합니다.

Important

Azure ABAC(Azure 특성 기반 액세스 제어)는 표준 및 프리미엄 스토리지 계정 성능 계층 모두에서 request, resource, environmentprincipal 특성을 사용하여 Azure Blob Storage, Azure Data Lake Storage Gen2 및 Azure 큐에 대한 액세스를 제어하기 위한 GA(일반 공급)입니다. 현재 컨테이너 메타데이터 리소스 특성과 Blob 나열 포함 요청 특성은 미리 보기에 있습니다. Azure Storage용 ABAC의 전체 기능 상태 정보는 Azure Storage의 조건 기능 상태를 참조하세요.

베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.

다른 권한 부여 메커니즘 사용

역할 할당 조건은 권한 부여를 위해 Azure RBAC를 사용하는 경우에만 평가됩니다. 대체 권한 부여 방법을 사용하여 액세스를 허용하는 경우 이러한 조건을 바이패스할 수 있습니다.

마찬가지로 HNS(계층 구조 네임스페이스)가 있는 스토리지 계정에서 ACL(액세스 제어 목록)을 사용하여 액세스 권한이 부여되면 조건이 평가되지 않습니다.

스토리지 계정에 대해 공유 키 인증을 사용 중지하여 공유 키, 계정 수준 SAS 및 서비스 수준 SAS 인증을 방지할 수 있습니다. 사용자 위임 SAS는 Azure RBAC에 따라 다르기 때문에 이 권한 부여 방법을 사용할 때 역할 할당 조건이 평가됩니다.

조건에 사용되는 스토리지 특성 보안

Blob 경로

조건에 대한 @Resource 특성으로 Blob 경로를 사용하는 경우 계층 구조 네임스페이스가 있는 계정을 사용할 때 파일에 액세스하기 위해 사용자가 Blob의 이름을 바꾸지 못하도록 해야 합니다. 예를 들어 Blob 경로를 기반으로 조건을 작성하려는 경우 다음 작업에 대한 사용자의 액세스 권한도 제한해야 합니다.

작업 설명
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action 이 작업을 통해 고객은 경로 만들기 API를 사용하여 파일 이름을 바꿀 수 있습니다.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action 이 작업을 통해 다양한 파일 시스템 및 경로 작업에 액세스할 수 있습니다.

Blob 인덱스 태그

Blob 인덱스 태그는 스토리지의 조건에 대한 자유 형식 특성으로 사용됩니다. 이러한 태그를 사용하여 액세스 조건을 작성하는 경우에도 태그를 보호해야 합니다. 특히 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write DataAction을 사용하면 사용자가 스토리지 개체의 태그를 수정할 수 있습니다. 권한 없는 개체에 대한 액세스를 얻기 위해 사용자가 태그 키 또는 값을 조작하지 못하도록 이 작업을 제한할 수 있습니다.

또한 조건에 Blob 인덱스 태그를 사용하는 경우 데이터와 관련 인덱스 태그가 별도의 작업에서 업데이트되는 경우 데이터가 취약할 수 있습니다. Blob 쓰기 작업에서 @Request 조건을 사용하여 동일한 업데이트 작업에서 인덱스 태그를 설정하도록 요구할 수 있습니다. 이 접근 방식은 스토리지에 기록된 순간부터 데이터를 보호하는 데 도움이 될 수 있습니다.

복사한 Blob의 태그

기본적으로 Blob 인덱스 태그는 Blob 복사 API 또는 그 변형을 사용할 때 원본 Blob에서 대상으로 복사되지 않습니다. 복사할 때 Blob에 대한 액세스 범위를 유지하려면 태그도 복사해야 합니다.

스냅샷의 태그

Blob 스냅샷의 태그는 수정할 수 없습니다. 따라서 스냅샷을 만들기 전에 Blob의 태그를 업데이트해야 합니다. 기본 Blob에서 태그를 수정하는 경우 스냅샷의 태그는 계속 이전 값을 갖게 됩니다.

스냅샷이 생성된 후 기본 Blob의 태그가 수정된 경우 기본 Blob 및 스냅샷에 대한 액세스 범위가 다를 수 있습니다.

Blob 버전의 태그

Blob 인덱스 태그는 Blob 놓기, 블록 목록 놓기 또는 Blob 복사 API를 통해 Blob 버전이 생성될 때 복사되지 않습니다. 이러한 API에 대한 헤더를 통해 태그를 지정할 수 있습니다.

태그는 현재 기본 Blob 및 각 Blob 버전에 대해 개별적으로 설정할 수 있습니다. 기본 Blob에서 태그를 수정하면 이전 버전의 태그가 업데이트되지 않습니다. 태그를 사용하여 Blob 및 모든 버전에 대한 액세스 범위를 변경하려면 각 버전에서 태그를 업데이트해야 합니다.

버전 및 스냅샷에 대한 쿼리 및 필터링 제한 사항

태그를 사용하여 컨테이너의 Blob을 쿼리하고 필터링하는 경우 기본 Blob만 응답에 포함됩니다. 요청된 키와 값이 있는 Blob 버전 또는 스냅샷은 포함되지 않습니다.

역할 및 권한

Azure 기본 제공 역할에 역할 할당 조건을 사용하는 경우 역할이 주체에게 부여하는 모든 권한을 주의 깊게 검토해야 합니다.

상속된 역할 할당

역할 할당은 관리 그룹, 구독, 리소스 그룹, 스토리지 계정 또는 컨테이너에 대해 구성할 수 있으며 지정된 순서로 각 수준에서 상속됩니다. Azure RBAC에는 추가 모델이 있으므로 유효 권한은 각 수준의 역할 할당의 합계입니다. 보안 주체가 여러 역할 할당을 통해 동일한 권한을 할당한 경우 해당 권한을 사용하는 작업에 대한 액세스는 모든 수준의 각 할당에 대해 개별적으로 평가됩니다.

조건은 역할 할당에 대한 조건으로 구현되므로 조건부 역할 할당을 통해 사용자가 조건을 무시할 수 있습니다. 스토리지 계정 및 구독에 대한 사용자에게 스토리지 Blob Data 기여자 역할을 할당하고 스토리지 계정에 대한 할당에만 조건을 추가한다고 가정해 보겠습니다. 그 결과 사용자는 구독 수준에서 역할 할당을 통해 스토리지 계정에 무제한으로 액세스할 수 있습니다.

따라서 리소스 계층 구조 전체의 모든 역할 할당에 대해 조건을 일관되게 적용해야 합니다.

기타 고려 사항

Blob을 작성하는 조건 작업

Blob을 작성하는 많은 작업에는 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write 또는 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action 권한이 필요합니다. 스토리지 Blob 데이터 소유자스토리지 Blob 데이터 기여자와 같은 기본 제공 역할은 보안 주체에 두 권한을 모두 부여합니다.

이러한 역할에 대한 역할 할당 조건을 정의할 때는 이러한 두 권한에 대해 동일한 조건을 사용하여 쓰기 작업에 대한 일관된 액세스 제한을 보장해야 합니다.

URL에서 Blob 복사 및 Blob 복사에 대한 동작

Blob 복사URL에서 Blob 복사 작업의 경우 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write 작업 및 해당 하위 작업의 특성으로 Blob 경로를 사용하는 @Request 조건은 대상 Blob에 대해서만 평가됩니다.

소스 Blob에 대한 조건의 경우 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read 작업에 대한 @Resource 조건이 평가됩니다.

참고 항목