Azure ABAC(Azure 특성 기반 액세스 제어)를 사용하여 리소스를 완전히 보호하려면 Azure 역할 할당 조건에서 사용되는 특성도 보호해야 합니다. 예를 들어 조건이 파일 경로를 기반으로 하는 경우 보안 주체에 파일 경로 이름을 바꿀 수 있는 무제한 권한이 있는 경우 액세스가 손상될 수 있음을 주의해야 합니다.
이 문서에서는 역할 할당 조건을 고려해야 하는 보안 고려 사항을 설명합니다.
중요합니다
Azure ABAC(Azure 특성 기반 액세스 제어)는 표준 및 프리미엄 스토리지 계정 성능 계층 모두에서 request, resource, environment 및 principal 특성을 사용하여 Azure Blob Storage, Azure Data Lake Storage Gen2 및 Azure 큐에 대한 액세스만 제어하기 위한 GA(일반 공급)입니다. 현재 목록 Blob에는 요청 특성이 포함되고 계층 구조 네임스페이스에 대한 스냅샷 요청 특성은 미리 보기로 제공됩니다. Azure Storage용 ABAC의 전체 기능 상태 정보는 Azure Storage의 조건 기능 상태를 참조하세요.
베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
다른 권한 부여 메커니즘 사용
역할 할당 조건은 권한 부여에 Azure RBAC를 사용하는 경우에만 평가됩니다. 대체 권한 부여 방법을 사용하여 액세스를 허용하는 경우 이러한 조건을 무시할 수 있습니다.
- 공유 키 권한 부여
- SAS(계정 공유 액세스 서명)
- 서비스 SAS,
마찬가지로, 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 인덱스 태그는 스토리지의 조건에 대한 자유 형식 특성으로 사용됩니다. 이러한 태그를 사용하여 액세스 조건을 작성하는 경우 태그 자체도 보호해야 합니다. 특히 DataAction을 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write 사용하면 사용자가 스토리지 개체의 태그를 수정할 수 있습니다. 사용자가 태그 키 또는 값을 조작하여 권한이 없는 개체에 액세스하지 못하도록 이 작업을 제한할 수 있습니다.
또한 조건에서 Blob 인덱스 태그를 사용하는 경우 데이터 및 연결된 인덱스 태그가 별도의 작업에서 업데이트되는 경우 데이터가 취약할 수 있습니다. Blob 쓰기 작업에서 조건을 사용하여 @Request 동일한 업데이트 작업에서 인덱스 태그를 설정하도록 요구할 수 있습니다. 이 방법은 스토리지에 기록되는 즉시 데이터를 보호하는 데 도움이 될 수 있습니다.
복사한 Blob의 태그
기본적으로, Blob 복사 API 또는 해당 변형을 사용할 때, 원본 Blob의 인덱스 태그는 대상 Blob으로 복사되지 않습니다. 복사 시 Blob에 대한 액세스 범위를 유지하려면 태그도 복사해야 합니다.
스냅샷의 태그
Blob 스냅샷의 태그는 수정할 수 없습니다. 따라서 스냅샷을 만들기 전에 Blob에서 태그를 업데이트해야 합니다. 기본 Blob에서 태그를 수정하는 경우 스냅샷의 태그는 계속해서 이전 값을 갖습니다.
스냅샷을 만든 후 기본 Blob의 태그가 수정되면 기본 Blob 및 스냅샷에 대한 액세스 범위가 다를 수 있습니다.
Blob 버전의 태그
Blob 인덱스 태그는 Blob 배치, 블록 목록 배치 또는 Blob 복사 API를 통해 Blob 버전을 만들 때 복사되지 않습니다. 이러한 API에 대한 헤더를 통해 태그를 지정할 수 있습니다.
태그는 현재 기본 Blob 및 각 Blob 버전에서 개별적으로 설정할 수 있습니다. 기본 Blob에서 태그를 수정하면 이전 버전의 태그가 업데이트되지 않습니다. 태그를 사용하여 Blob 및 모든 버전에 대한 액세스 범위를 변경하려면 각 버전에서 태그를 업데이트해야 합니다.
버전 및 스냅샷에 대한 쿼리 및 필터링 제한 사항
태그를 사용하여 컨테이너의 Blob을 쿼리하고 필터링하는 경우 기본 Blob만 응답에 포함됩니다. 요청된 키와 값이 있는 Blob 버전 또는 스냅샷은 포함되지 않습니다.
역할 및 권한
Azure 기본 제공 역할에 역할 할당 조건을 사용하는 경우 역할이 주체에게 부여하는 모든 권한을 주의 깊게 검토해야 합니다.
상속된 역할 할당
역할 할당은 관리 그룹, 구독, 리소스 그룹, 스토리지 계정 또는 컨테이너에 대해 구성할 수 있으며 지정된 순서의 각 수준에서 상속됩니다. Azure RBAC에는 추가 모델이 있으므로 유효 권한은 각 수준에서 역할 할당의 합계입니다. 보안 주체가 여러 역할 할당을 통해 동일한 권한을 할당한 경우 해당 권한을 사용하는 작업에 대한 액세스는 모든 수준의 각 할당에 대해 개별적으로 평가됩니다.
조건은 역할 할당에 대한 조건으로 구현되므로 무조건적인 역할 할당을 통해 사용자가 조건을 우회할 수 있습니다. 스토리지 계정 및 구독에 대해 사용자에게 Storage Blob 데이터 기여자 역할을 할당하지만 스토리지 계정에 대한 할당에만 조건을 추가한다고 가정해 보겠습니다. 그 결과 사용자는 구독 수준에서 역할 할당을 통해 스토리지 계정에 무제한으로 액세스할 수 있습니다.
따라서 리소스 계층 구조에서 모든 역할 할당에 대해 일관되게 조건을 적용해야 합니다.
기타 고려 사항
Blob을 작성하는 조건 작업
Blob을 작성하는 많은 작업에는 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write 또는 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action 사용 권한이 필요합니다. Storage Blob 데이터 소유자 및 Storage Blob 데이터 기여자와 같은 기본 제공 역할은 보안 주체에 두 권한을 모두 부여합니다.
이러한 역할에 대한 역할 할당 조건을 정의하는 경우 이러한 두 권한에 대해 동일한 조건을 사용하여 쓰기 작업에 대한 일관된 액세스 제한을 보장해야 합니다.
URL에서 Blob 복사 및 Blob 복사에 대한 동작
Blob 복사 및 URL에서 Blob 복사 작업에서 Blob 경로를 @Request 작업의 속성으로 사용하는 경우와 그 하위 작업은 대상 Blob에 대해서만 평가됩니다.
소스 Blob에 대한 조건의 경우 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read 작업에 대한 @Resource 조건이 평가됩니다.