이 문서에서는 Azure Blob Storage에 대한 액세스를 제어하기 위한 역할 할당 조건의 몇 가지 예를 나열합니다.
중요합니다
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 미리 보기에 대한 추가 사용 약관을 참조하세요.
필수 조건
역할 할당 조건을 추가하거나 편집하기 위한 사전 요구 사항은 조건 및 사전 요구 사항을 참조하세요.
이 문서의 예제 요약
다음 표를 사용하여 ABAC 시나리오에 맞는 예제를 빠르게 찾을 수 있습니다. 이 표에는 시나리오에 대한 간략한 설명과 원본(환경, 보안 주체, 요청 및 리소스)의 예제에 사용된 특성 목록이 포함되어 있습니다.
이 섹션에는 Blob 인덱스 태그와 관련된 예제가 포함되어 있습니다.
중요합니다
현재 ABAC 기능 미리 보기 중에 구현된 조건과의 호환성을 위해 Read content from a blob with tag conditions 하위 작업이 지원되지만 해당 하위 작업은 더 이상 사용되지 않으며 대신 Read a blob 작업을 사용하는 것이 좋습니다.
Azure Portal에서 ABAC 조건을 구성할 때 사용되지 않음: 태그 조건이 있는 Blob에서 콘텐츠 읽기가 표시될 수 있습니다. 작업을 제거하고 Read a blob 작업으로 바꾸는 것이 좋습니다.
태그 조건으로 읽기 액세스를 제한하려는 고유한 조건을 작성하는 경우 예제: Blob 인덱스 태그가 있는 Blob 읽기를 참조하세요.
예: Blob 인덱스 태그를 사용하여 Blob 읽기
이 조건을 통해 사용자는 Blob 인덱스 태그 키가 Project이고 값이 Cascade인 Blob을 읽을 수 있습니다. 이 키-값 태그가 없는 Blob에 액세스하려는 시도는 허용되지 않습니다.
이 조건이 보안 주체에 적용되려면 다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal 시각적 개체 편집기를 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEquals 'Cascade'
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 Blob 인덱스 태그를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
Get-AzStorageBlob -Container <containerName> -Blob <blobName> -Context $bearerCtx
예: 새 Blob에는 Blob 인덱스 태그가 포함되어야 함
이 조건에서는 새 Blob이 Blob 인덱스 태그 키 Project와 값 Cascade를 포함해야 합니다.
새 Blob을 만들 수 있는 두 가지 작업이 있으므로 둘 다 대상으로 지정해야 합니다. 다음 작업 중 하나를 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEquals 'Cascade'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})) OR (@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$localSrcFile = # path to an example file, can be an empty txt
$ungrantedTag = @{'Project'='Baker'}
$grantedTag = @{'Project'='Cascade'}
# Get new context for request
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# try ungranted tags
$content = Set-AzStorageBlobContent -File $localSrcFile -Container example2 -Blob "Example2.txt" -Tag $ungrantedTag -Context $bearerCtx
# try granted tags
$content = Set-AzStorageBlobContent -File $localSrcFile -Container example2 -Blob "Example2.txt" -Tag $grantedTag -Context $bearerCtx
예: 기본 Blob에는 Blob 인덱스 태그 키가 포함되어야 함
이 조건에서는 기존 Blob에 허용되는 Blob 인덱스 태그 키(Project 또는 Program) 중 하나 이상으로 태그가 지정되어야 합니다. 이 조건은 기존 Blob에 거버넌스를 추가하는 데 유용합니다.
기존 Blob에 대한 태그를 업데이트할 수 있는 두 가지 작업이 있으므로 둘 다 대상으로 지정해야 합니다. 다음 작업 중 하나를 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags&$keys$&] ForAllOfAnyValues:StringEquals {'Project', 'Program'}
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})) OR (@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags&`$keys`$&] ForAllOfAnyValues:StringEquals {'Project', 'Program'}))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$localSrcFile = # path to an example file, can be an empty txt
$ungrantedTag = @{'Mode'='Baker'}
$grantedTag = @{'Program'='Alpine';'Project'='Cascade'}
# Get new context for request
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# try ungranted tags
$content = Set-AzStorageBlobContent -File $localSrcFile -Container example3 -Blob "Example3.txt" -Tag $ungrantedTag -Context $bearerCtx
# try granted tags
$content = Set-AzStorageBlobContent -File $localSrcFile -Container example3 -Blob "Example3.txt" -Tag $grantedTag -Context $bearerCtx
예: 기존 Blob에는 Blob 인덱스 태그 키와 값이 포함되어야 함
이 조건에서는 기존 Blob에 Blob 인덱스 태그 키 Project와 값 Cascade, Baker 또는 Skagit이 있어야 합니다. 이 조건은 기존 Blob에 거버넌스를 추가하는 데 유용합니다.
기존 Blob에 대한 태그를 업데이트할 수 있는 두 가지 작업이 있으므로 둘 다 대상으로 지정해야 합니다. 다음 작업 중 하나를 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags&$keys$&] ForAnyOfAnyValues:StringEquals {'Project'}
AND
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ForAllOfAnyValues:StringEquals {'Cascade', 'Baker', 'Skagit'}
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})) OR (@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags&`$keys`$&] ForAnyOfAnyValues:StringEquals {'Project'} AND @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] ForAllOfAnyValues:StringEquals {'Cascade', 'Baker', 'Skagit'}))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$localSrcFile = <pathToLocalFile>
$ungrantedTag = @{'Project'='Alpine'}
$grantedTag1 = @{'Project'='Cascade'}
$grantedTag2 = @{'Project'='Baker'}
$grantedTag3 = @{'Project'='Skagit'}
# Get new context for request
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# try ungranted tags
Set-AzStorageBlobTag -Container example4 -Blob "Example4.txt" -Tag $ungrantedTag -Context $bearerCtx
# try granted tags
Set-AzStorageBlobTag -Container example4 -Blob "Example4.txt" -Tag $grantedTag1 -Context $bearerCtx
Set-AzStorageBlobTag -Container example4 -Blob "Example4.txt" -Tag $grantedTag2 -Context $bearerCtx
Set-AzStorageBlobTag -Container example4 -Blob "Example4.txt" -Tag $grantedTag3 -Context $bearerCtx
Blob 컨테이너 이름 또는 경로
이 섹션에는 컨테이너 이름 또는 Blob 경로에 따라 개체에 대한 액세스를 제한하는 방법을 보여주는 예제가 포함되어 있습니다.
예: 명명된 컨테이너에서 Blob 읽기, 쓰기 또는 삭제
이 조건을 통해 사용자는 blob-example-container라는 스토리지 컨테이너에서 Blob을 읽거나 쓰거나 삭제할 수 있습니다. 이 조건은 특정 스토리지 컨테이너를 구독의 다른 사용자와 공유하는 데 유용합니다.
기존 Blob의 읽기, 쓰기 및 삭제에 대한 다섯 가지 작업이 있습니다. 다음 작업 중 하나를 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. 이 조건에 포함된 스토리지 계정이 계층 구조 네임스페이스를 사용하도록 설정했거나 나중에 사용하도록 설정될 수 있는 경우 추가합니다. |
이 조건에서는 하위 작업이 사용되지 않습니다. 조건이 태그를 기반으로 작성되는 경우에만 하위 작업이 필요하기 때문입니다.

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
)
)
Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$localSrcFile = <pathToLocalFile>
$grantedContainer = "blobs-example-container"
$ungrantedContainer = "ungranted"
# Get new context for request
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# Ungranted Container actions
$content = Set-AzStorageBlobContent -File $localSrcFile -Container $ungrantedContainer -Blob "Example5.txt" -Context $bearerCtx
$content = Get-AzStorageBlobContent -Container $ungrantedContainer -Blob "Example5.txt" -Context $bearerCtx
$content = Remove-AzStorageBlob -Container $ungrantedContainer -Blob "Example5.txt" -Context $bearerCtx
# Granted Container actions
$content = Set-AzStorageBlobContent -File $localSrcFile -Container $grantedContainer -Blob "Example5.txt" -Context $bearerCtx
$content = Get-AzStorageBlobContent -Container $grantedContainer -Blob "Example5.txt" -Context $bearerCtx
$content = Remove-AzStorageBlob -Container $grantedContainer -Blob "Example5.txt" -Context $bearerCtx
예: 경로가 있는 명명된 컨테이너의 Blob 읽기
이 조건은 Blob 경로가 readonly/*인 blob-example-container라는 스토리지 컨테이너에 대한 읽기 권한을 허용합니다. 이 조건은 구독의 다른 사용자와 읽기 권한을 위해 스토리지 컨테이너의 특정 부분을 공유하는 데 유용합니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. 이 조건에 포함된 스토리지 계정이 계층 구조 네임스페이스를 사용하도록 설정했거나 나중에 사용하도록 설정될 수 있는 경우 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*'
)
)
Storage Blob Data Reader, Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*'
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 컨테이너 이름 및 경로를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' AND @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*'))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$grantedContainer = "blobs-example-container"
# Get new context for request
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# Try to get ungranted blob
$content = Get-AzStorageBlobContent -Container $grantedContainer -Blob "Ungranted.txt" -Context $bearerCtx
# Try to get granted blob
$content = Get-AzStorageBlobContent -Container $grantedContainer -Blob "readonly/Example6.txt" -Context $bearerCtx
예: 경로가 있는 명명된 컨테이너의 Blob 읽기 또는 목록
이 조건은 Blob 경로가 readonly/*인 blob-example-container라는 스토리지 컨테이너에 대한 읽기 권한 및 나열 권한을 허용합니다. 조건 1은 목록 Blob을 제외한 읽기 작업에 적용됩니다. 조건 2는 목록 Blob에 적용됩니다. 이 조건은 구독의 다른 사용자와 읽기 또는 나열 권한을 위해 스토리지 컨테이너의 특정 부분을 공유하는 데 유용합니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. 이 조건에 포함된 스토리지 계정이 계층 구조 네임스페이스를 사용하도록 설정했거나 나중에 사용하도록 설정될 수 있는 경우 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
비고
Azure Portal 접두사=''를 사용하여 컨테이너의 루트 디렉터리에서 Blob을 나열합니다. StringStartSkopenowh 'readonly/' 접두사로 Blob 목록 작업과 함께 조건이 추가되면 대상 사용자는 Azure Portal 컨테이너의 루트 디렉터리에서 Blob을 나열할 수 없습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringStartsWith 'readonly/'
)
)
AND
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
AND
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:prefix] StringStartsWith 'readonly/'
)
)
Storage Blob Data Reader, Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringStartsWith 'readonly/'
)
)
AND
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'
AND
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:prefix] StringStartsWith 'readonly/'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
예: 경로가 있는 명명된 컨테이너의 Blob 쓰기
이 조건을 사용하면 파트너(Microsoft Entra 게스트 사용자)가 경로가 uploads/contoso/*인 Contosocorp라는 스토리지 컨테이너에 파일을 드롭할 수 있습니다. 이 조건은 다른 사용자가 스토리지 컨테이너에 데이터를 넣을 수 있도록 하는 데 유용합니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. 이 조건에 포함된 스토리지 계정이 계층 구조 네임스페이스를 사용하도록 설정했거나 나중에 사용하도록 설정될 수 있는 경우 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'contosocorp'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'uploads/contoso/*'
)
)
Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'contosocorp'
AND
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'uploads/contoso/*'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'}) AND !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'contosocorp' AND @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'uploads/contoso/*'))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$grantedContainer = "contosocorp"
$localSrcFile = <pathToLocalFile>
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# Try to set ungranted blob
$content = Set-AzStorageBlobContent -Container $grantedContainer -Blob "Example7.txt" -Context $bearerCtx -File $localSrcFile
# Try to set granted blob
$content = Set-AzStorageBlobContent -Container $grantedContainer -Blob "uploads/contoso/Example7.txt" -Context $bearerCtx -File $localSrcFile
예: Blob 인덱스 태그 및 경로를 사용하여 Blob 읽기
이 조건을 통해 사용자는 Blob 인덱스 태그 키가 Program이고 값이 Alpine이고 Blob 경로가 로그*인 Blob을 읽을 수 있습니다. 로그*의 blob 경로에는 blob 이름도 포함됩니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Program<$key_case_sensitive$>] StringEquals 'Alpine'
)
)
AND
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'logs*'
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 Blob 인덱스 태그 및 경로를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Program<`$key_case_sensitive`$>] StringEquals 'Alpine')) AND ((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'logs*'))"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 테스트하는 방법은 다음과 같습니다.
$grantedContainer = "contosocorp"
# Get new context for request
$bearerCtx = New-AzStorageContext -StorageAccountName $storageAccountName
# Try to get ungranted blobs
# Wrong name but right tags
$content = Get-AzStorageBlobContent -Container $grantedContainer -Blob "AlpineFile.txt" -Context $bearerCtx
# Right name but wrong tags
$content = Get-AzStorageBlobContent -Container $grantedContainer -Blob "logsAlpine.txt" -Context $bearerCtx
# Try to get granted blob
$content = Get-AzStorageBlobContent -Container $grantedContainer -Blob "logs/AlpineFile.txt" -Context $bearerCtx
이 조건을 사용하면 사용자는 특정 메타데이터 키/값 쌍을 사용하여 Blob 컨테이너의 Blob을 읽을 수 있습니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 판독기
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/metadata:testKey] StringEquals 'testValue'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}) `
) `
OR `
( `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/metadata:testKey] StringEquals 'testValue' `
) `
)"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
이 조건을 사용하면 사용자는 특정 메타데이터 키/값 쌍을 사용하여 Blob 컨테이너에서 Blob을 쓰거나 삭제할 수 있습니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/metadata:testKey] StringEquals 'testValue'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 추가하는 방법은 다음과 같습니다.
$condition = "( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'}) `
) `
OR `
( `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/metadata:testKey] StringEquals 'testValue' `
) `
) `
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
Blob 버전 또는 Blob 스냅샷
이 섹션에는 Blob 버전 또는 스냅샷에 따라 개체에 대한 액세스를 제한하는 방법을 보여주는 예제가 포함되어 있습니다.
예: 현재 Blob 버전만 읽기
이 조건을 사용하면 사용자가 현재 Blob 버전만 읽을 수 있습니다. 사용자가 다른 Blob 버전을 읽을 수 없습니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:isCurrentVersion] BoolEquals true
)
)
Storage Blob Data Reader, Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:isCurrentVersion] BoolEquals true
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 버전을 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
예: 현재 Blob 버전 및 특정 Blob 버전 읽기
이 조건을 사용하면 사용자가 현재 Blob 버전을 읽고 버전 ID가 2022-06-01T23:38:32.8883645Z인 Blob을 읽을 수 있습니다. 사용자가 다른 Blob 버전을 읽을 수 없습니다. 버전 ID 특성은 계층 구조 네임스페이스를 사용할 수 없는 스토리지 계정에만 사용할 수 있습니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T23:38:32.8883645Z'
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:isCurrentVersion] BoolEquals true
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 버전 정보를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
예: 이전 Blob 버전 삭제
이 조건을 사용하면 사용자가 2022년 6월 1일보다 오래된 Blob 버전을 삭제하여 정리를 수행할 수 있습니다. 버전 ID 특성은 계층 구조 네임스페이스를 사용할 수 없는 스토리지 계정에만 사용할 수 있습니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action |
|

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeLessThan '2022-06-01T00:00:00.0Z'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
예: 현재 Blob 버전 및 Blob 스냅샷 읽기
이 조건을 사용하면 사용자가 현재 Blob 버전 및 모든 Blob 스냅샷을 읽을 수 있습니다. 버전 ID 특성은 계층 구조 네임스페이스를 사용할 수 없는 스토리지 계정에만 사용할 수 있습니다. Snapshot 특성은 계층 구조 네임스페이스를 사용하도록 설정되지 않은 스토리지 계정에 사용할 수 있으며 현재 계층 구조 네임스페이스가 활성화된 스토리지 계정에 대해 미리 보기로 제공됩니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot]
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:isCurrentVersion] BoolEquals true
)
)
Storage Blob Data Reader, Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot]
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:isCurrentVersion] BoolEquals true
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 버전 및 스냅샷 정보를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
이 조건을 사용하면 사용자는 컨테이너의 Blob을 나열하고 메타데이터, 스냅샷 및 버전 정보를 포함할 수 있습니다. Blob 나열 포함 특성은 계층 구조 네임스페이스가 사용하도록 설정되지 않은 스토리지 계정에 사용할 수 있습니다.
비고
Blob 나열 포함은 요청 특성이며, Blob 나열 작업을 호출할 때 include 매개 변수의 값을 허용하거나 제한하여 작동합니다. include 매개 변수의 값은 교차곱 비교 연산자를 사용하여 조건에 지정된 값과 비교됩니다. 비교 결과가 true로 평가되면 List Blobs 요청이 허용됩니다. 비교 결과가 false로 평가되면 List Blobs 요청이 거부됩니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 판독기
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.List'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:include] ForAllOfAnyValues:StringEqualsIgnoreCase {'metadata', 'snapshots', 'versions'}
)
)
이 예에서 조건은 하위 작업이 Blob.List일 때 읽기 작업을 제한합니다. 즉, Blob 나열 작업은 include 값을 확인하는 식에 대해 추가로 평가되지만 다른 모든 읽기 작업은 허용됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
이 조건은 요청에 메타데이터가 포함된 경우 사용자가 Blob을 나열하지 못하도록 제한합니다. Blob 나열 포함 특성은 계층 구조 네임스페이스가 사용하도록 설정되지 않은 스토리지 계정에 사용할 수 있습니다.
비고
Blob 나열 포함은 요청 특성이며, Blob 나열 작업을 호출할 때 include 매개 변수의 값을 허용하거나 제한하여 작동합니다. include 매개 변수의 값은 교차곱 비교 연산자를 사용하여 조건에 지정된 값과 비교됩니다. 비교 결과가 true로 평가되면 List Blobs 요청이 허용됩니다. 비교 결과가 false로 평가되면 List Blobs 요청이 거부됩니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 판독기
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.List'})
)
OR
(
@Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:include] ForAllOfAllValues:StringNotEquals {'metadata'}
)
)
이 예에서 조건은 하위 작업이 Blob.List일 때 읽기 작업을 제한합니다. 즉, Blob 나열 작업은 include 값을 확인하는 식에 대해 추가로 평가되지만 다른 모든 읽기 작업은 허용됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
계층 구조 네임스페이스
이 섹션에는 계층 구조 네임스페이스가 스토리지 계정에 사용하도록 설정되어 있는지 여부에 따라 개체에 대한 액세스를 제한하는 방법을 보여주는 예제가 포함되어 있습니다.
예: 계층 구조 네임스페이스를 사용하도록 설정된 스토리지 계정만 읽기
이 조건을 사용하면 계층 구조 네임스페이스를 사용하도록 설정된 스토리지 계정의 Blob만 읽을 수 있습니다. 이 조건은 리소스 그룹 범위 이상에서만 적용할 수 있습니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts:isHnsEnabled] BoolEquals true
)
)
Storage Blob Data Reader, Storage Blob 데이터 기여자
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts:isHnsEnabled] BoolEquals true
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 계층 구조 네임스페이스를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
암호화 범위
이 섹션에는 승인된 암호화 범위를 사용하여 개체에 대한 액세스를 제한하는 방법을 보여주는 예제가 포함되어 있습니다.
예: 특정 암호화 범위를 사용하여 Blob 읽기
이 조건을 사용하면 사용자가 암호화 범위 validScope1 또는 validScope2 암호화된 Blob을 읽을 수 있습니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/encryptionScopes:name] ForAnyOfAnyValues:StringEquals {'validScope1', 'validScope2'}
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 암호화 범위를 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
예: 특정 암호화 범위를 사용하여 명명된 스토리지 계정의 Blob 읽기 또는 쓰기
이 조건을 사용하면 사용자가 이름이 sampleaccount이고 ScopeCustomKey1 암호화 범위로 암호화된 스토리지 계정에서 Blob을 읽거나 쓸 수 있습니다. Blob이 암호화되거나 ScopeCustomKey1(으)로 암호 해독되지 않은 경우 요청은 금지됨을 반환합니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
비고
다른 스토리지 계정에 대한 암호화 범위는 다를 수 있으므로 storageAccounts:name 특성과 encryptionScopes:name 특성을 사용하여 허용되는 특정 암호화 범위를 제한하는 것이 좋습니다.

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts:name] StringEquals 'sampleaccount'
AND
@Resource[Microsoft.Storage/storageAccounts/encryptionScopes:name] ForAnyOfAnyValues:StringEquals {'ScopeCustomKey1'}
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
보안 주체 특성
이 섹션에는 사용자 지정 보안 주체에 따라 개체에 대한 액세스를 제한하는 방법을 보여주는 예제가 포함되어 있습니다.
이 조건은 사용자에게 blob 인덱스 태그와 일치하는 사용자 지정 보안 특성이 있는 경우 blob에 대한 읽기 또는 쓰기 권한을 허용합니다.
예를 들어, Brenda에게 Project=Baker 특성이 있는 경우 Brenda는 Project=Baker blob 인덱스 태그가 있는 blob만 읽거나 쓸 수 있습니다. 마찬가지로 Chandra는 Project=Cascade로만 blob을 읽거나 쓸 수 있습니다.
다음 권한을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
자세한 내용은 태그 및 사용자 지정 보안 특성을 기반으로 blob에 대한 읽기 권한 허용을 참조하세요.

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
)
)
AND
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'} AND SubOperationMatches{'Blob.Write.WithTagHeaders'})
)
OR
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
이 조건은 사용자에게 blob 인덱스 태그와 일치하는 값이 있는 사용자 지정 보안 특성이 있는 경우 blob에 대한 읽기 권한을 허용합니다.
예를 들어 Chandra에 Baker 및 Cascade 값이 있는 프로젝트 특성이 있는 경우 Chandra는 Project=Baker 또는 Project=Cascade blob 인덱스 태그가 있는 blob만 읽을 수 있습니다.
다음 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
자세한 내용은 태그 및 사용자 지정 보안 특성을 기반으로 blob에 대한 읽기 권한 허용을 참조하세요.

조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal을 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
코드 편집기를 사용하여 조건을 추가하려면 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ForAnyOfAnyValues:StringEquals @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project]
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 Blob 인덱스 태그 및 사용자 지정 보안 특성을 확인하는 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
환경 특성
이 섹션에는 네트워크 환경 또는 현재 날짜 및 시간에 따라 개체에 대한 액세스를 제한하는 방법을 보여주는 예제가 포함되어 있습니다.
예제: 특정 날짜 및 시간 이후 Blob에 대한 읽기 권한 허용
이 조건은 2023년 5월 1일 오후 1시 UTC(협정 세계시) 이후에만 container1 Blob 컨테이너에 대한 읽기 권한을 허용합니다.
기존 Blob 읽기에 대한 두 가지 잠재적인 작업이 있습니다. 이 조건이 여러 역할 할당이 있는 보안 주체에 적용되려면 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
작업 추가
작업 추가를 선택하고, 다음 표에 나와 있는 Blob 읽기 하위 작업만 선택합니다.
| 조치 |
하위 작업 |
| 모든 읽기 작업 |
Blob 읽기 |
다음 이미지와 같이 최상위 모든 읽기 작업 동작 또는 다른 하위 작업을 선택하지 마세요.
식 작성
다음 표의 값을 사용하여 조건의 식 부분을 작성합니다.
다음 이미지에서는 설정을 Azure Portal에 입력한 후의 조건을 보여줍니다. 올바른 평가를 위해 식을 그룹화해야 합니다.
코드 편집기를 사용하여 조건을 추가하려면 아래의 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'container1'
AND
@Environment[UtcNow] DateTimeGreaterThan '2023-05-01T13:00:00.000Z'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 Storage Blob Data Reader 역할에 추가하는 방법은 다음과 같습니다.
$subId = "<your subscription id>"
$rgName = "<resource group name>"
$storageAccountName = "<storage account name>"
$roleDefinitionName = "Storage Blob Data Reader"
$userUpn = "<user UPN>"
$userObjectID = (Get-AzADUser -UserPrincipalName $userUpn).Id
$containerName = "container1"
$dateTime = "2023-05-01T13:00:00.000Z"
$scope = "/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
$condition = `
"( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}) `
) `
OR `
( `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals '$containerName' `
AND `
@Environment[UtcNow] DateTimeGreaterThan '$dateTime' `
) `
)"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
예제: 특정 서브넷에서 특정 컨테이너의 Blob에 대한 액세스 허용
이 조건은 virtualnetwork1 가상 네트워크의 default 서브넷에서만 container1의 Blob에 대한 읽기, 쓰기, 추가 및 삭제 액세스를 허용합니다. 이 예제에서 서브넷 특성을 사용하려면 서브넷에 Azure Storage에 대해 서비스 엔드포인트를 사용하도록 설정해야 합니다.
기존 Blob 읽기, 쓰기, 추가 및 삭제 액세스에 대한 5가지 잠재적인 작업이 있습니다. 이 조건이 여러 역할 할당이 있는 보안 주체에 적용되려면 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
작업 추가
작업 추가를 선택하고, 다음 표에 나와 있는 최상위 작업만 선택합니다.
| 조치 |
하위 작업 |
| 모든 읽기 작업 |
n/a |
| Blob에 쓰기 |
n/a |
| Blob 또는 스냅샷을 만들거나 데이터를 추가합니다. |
n/a |
| Blob 삭제 |
n/a |
다음 이미지와 같이 개별 하위 작업을 선택하지 마세요.
식 작성
다음 표의 값을 사용하여 조건의 식 부분을 작성합니다.
| 설정 |
가치 |
| 특성 원본 |
리소스 |
| 특성 |
컨테이너 이름 |
| 오퍼레이터 |
StringEquals |
| 가치 |
container1 |
| 논리 연산자 |
'그리고' |
| 특성 원본 |
환경 |
| 특성 |
서브넷 |
| 오퍼레이터 |
StringEqualsIgnoreCase |
| 가치 |
/subscriptions/<your subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/virtualnetwork1/subnets/default |
다음 이미지에서는 설정을 Azure Portal에 입력한 후의 조건을 보여줍니다. 올바른 평가를 위해 식을 그룹화해야 합니다.
코드 편집기를 사용하여 조건을 추가하려면 아래의 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]StringEquals 'container1'
AND
@Environment[Microsoft.Network/virtualNetworks/subnets] StringEqualsIgnoreCase '/subscriptions/<your subscription id>/resourceGroups/example-group/providers/Microsoft.Network/virtualNetworks/virtualnetwork1/subnets/default'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 스토리지 Blob 데이터 기여자 역할에 추가하는 방법은 다음과 같습니다.
$subId = "<your subscription id>"
$rgName = "<resource group name>"
$storageAccountName = "<storage account name>"
$roleDefinitionName = "Storage Blob Data Contributor"
$userUpn = "<user UPN>"
$userObjectID = (Get-AzADUser -UserPrincipalName $userUpn).Id
$containerName = "container1"
$vnetName = "virtualnetwork1"
$subnetName = "default"
$scope = "/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
$condition = `
"( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'}) `
) `
OR `
( `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals '$containerName' `
AND `
@Environment[Microsoft.Network/virtualNetworks/subnets] StringEqualsIgnoreCase '/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Network/virtualNetworks/$vnetName/subnets/$subnetName' `
) `
)"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
예제: 민감도가 높은 Blob 읽기에 대한 프라이빗 링크 액세스 필요
이 조건에서는 프라이빗 링크(모든 프라이빗 링크)를 통해 Blob 인덱스 태그 sensitivity 값이 high인 Blob 읽기를 요청해야 합니다. 즉, 공용 인터넷에서 매우 중요한 Blob을 읽으려는 모든 시도가 허용되지 않습니다. 사용자는 sensitivity가 high 이외의 값으로 설정된 공용 인터넷에서 Blob을 읽을 수 있습니다.
이 ABAC 조건 샘플에 대한 진리표는 다음과 같습니다.
| 작업 |
민감도 |
프라이빗 링크 |
액세스 권한 |
| Blob 읽기 |
high |
예 |
허용됨 |
| Blob 읽기 |
high |
아니오 |
허용되지 않음 |
| Blob 읽기 |
높지 않음 |
예 |
허용됨 |
| Blob 읽기 |
높지 않음 |
아니오 |
허용됨 |
기존 Blob 읽기에 대한 두 가지 잠재적인 작업이 있습니다. 이 조건이 여러 역할 할당이 있는 보안 주체에 적용되려면 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal에서 시각적 조건 편집기를 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
작업 추가
작업 추가를 선택하고, 다음 표에 나와 있는 Blob 읽기 하위 작업만 선택합니다.
| 조치 |
하위 작업 |
| 모든 읽기 작업 |
Blob 읽기 |
다음 이미지와 같이 최상위 모든 읽기 작업 동작 또는 다른 하위 작업을 선택하지 마세요.
식 작성
다음 표의 값을 사용하여 조건의 식 부분을 작성합니다.
다음 이미지에서는 설정을 Azure Portal에 입력한 후의 조건을 보여줍니다. 올바른 평가를 위해 식을 그룹화해야 합니다.
코드 편집기를 사용하여 조건을 추가하려면 아래의 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<$key_case_sensitive$>] StringEquals 'high'
AND
@Environment[isPrivateLink] BoolEquals true
)
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<$key_case_sensitive$>] StringNotEquals 'high'
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 Storage Blob Data Reader 역할에 추가하는 방법은 다음과 같습니다.
$subId = "<your subscription id>"
$rgName = "<resource group name>"
$storageAccountName = "<storage account name>"
$roleDefinitionName = "Storage Blob Data Reader"
$userUpn = "<user UPN>"
$userObjectID = (Get-AzADUser -UserPrincipalName $userUpn).Id
$scope = "/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
$condition = `
"( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) `
) `
OR `
( `
( `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<`$key_case_sensitive`$>] StringEquals 'high' `
AND `
@Environment[isPrivateLink] BoolEquals true `
) `
OR `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<`$key_case_sensitive`$>] StringNotEquals 'high' `
) `
)"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
예제: 특정 프라이빗 엔드포인트에서만 컨테이너에 대한 액세스 허용
이 조건에서는 container1이라는 스토리지 컨테이너의 Blob에 대한 모든 읽기, 쓰기, 추가 및 삭제 작업을 privateendpoint1이라는 프라이빗 엔드포인트를 통해 수행해야 합니다. 이름이 container1이(가) 아닌 다른 모든 컨테이너의 경우 프라이빗 엔드포인트를 통해 액세스할 필요가 없습니다.
기존 Blob에 대한 읽기, 쓰기 및 삭제에 대한 5가지 잠재적인 작업이 있습니다. 이 조건이 여러 역할 할당이 있는 보안 주체에 적용되려면 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. 이 조건에 포함된 스토리지 계정이 계층 구조 네임스페이스를 사용하도록 설정했거나 나중에 사용하도록 설정될 수 있는 경우 추가합니다. |
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal에서 시각적 조건 편집기를 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
작업 추가
작업 추가를 선택하고, 다음 표에 나와 있는 최상위 작업만 선택합니다.
| 조치 |
하위 작업 |
| 모든 읽기 작업 |
n/a |
| Blob에 쓰기 |
n/a |
| Blob 또는 스냅샷을 만들거나 데이터를 추가합니다. |
n/a |
| Blob 삭제 |
n/a |
다음 이미지와 같이 개별 하위 작업을 선택하지 마세요.
식 작성
다음 표의 값을 사용하여 조건의 식 부분을 작성합니다.
다음 이미지에서는 설정을 Azure Portal에 입력한 후의 조건을 보여줍니다. 올바른 평가를 위해 식을 그룹화해야 합니다.
코드 편집기를 사용하여 조건을 추가하려면 할당과 연결된 역할에 따라 다음 조건 코드 샘플 중 하나를 선택합니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
Storage Blob 데이터 소유자:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
)
OR
(
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'container1'
AND
@Environment[Microsoft.Network/privateEndpoints] StringEqualsIgnoreCase '/subscriptions/<your subscription id>/resourceGroups/example-group/providers/Microsoft.Network/privateEndpoints/privateendpoint1'
)
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringNotEquals 'container1'
)
)
Storage Blob 데이터 기여자:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
AND
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
)
OR
(
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'container1'
AND
@Environment[Microsoft.Network/privateEndpoints] StringEqualsIgnoreCase '/subscriptions/<your subscription id>/resourceGroups/example-group/providers/Microsoft.Network/privateEndpoints/privateendpoint1'
)
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringNotEquals 'container1'
)
)
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 스토리지 Blob 데이터 기여자 역할에 추가하는 방법은 다음과 같습니다.
$subId = "<your subscription id>"
$rgName = "<resource group name>"
$storageAccountName = "<storage account name>"
$roleDefinitionName = "Storage Blob Data Contributor"
$userUpn = "<user UPN>"
$userObjectID = (Get-AzADUser -UserPrincipalName $userUpn).Id
$containerName = "container1"
$privateEndpointName = "privateendpoint1"
$scope = "/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
$condition = `
"( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'}) `
AND `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'}) `
) `
OR `
( `
( `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals '$containerName' `
AND `
@Environment[Microsoft.Network/privateEndpoints] StringEqualsIgnoreCase '/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Network/privateEndpoints/$privateEndpointName' `
) `
OR `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringNotEquals '$containerName' `
) `
)"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
예제: 액세스 태그가 지정된 특정 프라이빗 엔드포인트 및 사용자에게만 매우 중요한 Blob 데이터에 대한 읽기 권한 허용
이 조건에서는 high로 설정된 sensitivity의 보안 특성 값과 일치하는 사용자만 해당 인덱스 태그 sensitivity가 있는 Blob을 읽을 수 있어야 합니다. 또한 privateendpoint1이라는 프라이빗 엔드포인트를 통해 액세스해야 합니다. sensitivity 태그의 값이 다른 Blob은 다른 엔드포인트 또는 인터넷을 통해 액세스할 수 있습니다.
기존 Blob 읽기에 대한 두 가지 잠재적인 작업이 있습니다. 이 조건이 여러 역할 할당이 있는 보안 주체에 적용되려면 작업을 포함하는 모든 역할 할당에 이 조건을 추가해야 합니다.
| 조치 |
비고 |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
역할 정의에 blob 데이터 소유자와 같은 이 작업이 포함된 경우 Storage를 추가합니다. |
조건은 Azure Portal 또는 Azure PowerShell을 사용하여 역할 할당에 추가할 수 있습니다. 포털에는 ABAC 조건을 작성할 수 있는 두 가지 도구, 즉 시각적 개체 편집기와 코드 편집기가 있습니다. Azure Portal에서 두 편집기 간에 전환하여 다양한 보기에서 조건을 볼 수 있습니다. 기본 설정 포털 편집기의 예제를 보려면 아래의 시각적 개체 편집기 탭과 코드 편집기 탭 간에 전환합니다.
Azure Portal에서 시각적 조건 편집기를 사용하여 이 조건을 추가하는 설정은 다음과 같습니다.
작업 추가
작업 추가를 선택하고, 다음 표에 나와 있는 Blob 읽기 하위 작업만 선택합니다.
| 조치 |
하위 작업 |
| 모든 읽기 작업 |
Blob 읽기 |
다음 이미지와 같이 최상위 동작을 선택하지 마세요.
식 작성
다음 표의 값을 사용하여 조건의 식 부분을 작성합니다.
다음 이미지에서는 설정을 Azure Portal에 입력한 후의 조건을 보여줍니다. 올바른 평가를 위해 식을 그룹화해야 합니다.
코드 편집기를 사용하여 조건을 추가하려면 아래의 조건 코드 샘플을 복사하여 코드 편집기에 붙여넣습니다. 코드가 입력되었으면 시각적 개체 편집기로 다시 전환하여 유효성을 검사합니다.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:sensitivity] StringEqualsIgnoreCase @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<$key_case_sensitive$>]
AND
@Environment[Microsoft.Network/privateEndpoints] StringEqualsIgnoreCase '/subscriptions/<your subscription id>/resourceGroups/example-group/providers/Microsoft.Network/privateEndpoints/privateendpoint1'
)
OR
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<$key_case_sensitive$>] StringNotEquals 'high'
)
)
이 예제에서 조건은 하위 작업이 Blob.List인 경우를 제외하고 읽기 작업을 제한합니다. 즉, Blob 나열 작업이 허용되지만 다른 모든 읽기 작업은 식에 대해 추가로 평가됩니다.
사용자가 조건에 의해 제한되는 작업이 아닌 할당된 역할에서 작업을 수행하려고 하면 !(ActionMatches)은(는) true로 평가되고 전체 조건이 true로 평가됩니다. 이 결과를 통해 작업을 수행할 수 있습니다.
조건의 형식을 지정하고 평가하는 방법에 대한 자세한 내용은 조건 형식을 참조하세요.
Azure PowerShell을 사용하여 이 조건을 Storage Blob Data Reader 역할에 추가하는 방법은 다음과 같습니다.
$subId = "<your subscription id>"
$rgName = "<resource group name>"
$storageAccountName = "<storage account name>"
$roleDefinitionName = "Storage Blob Data Reader"
$userUpn = "<user UPN>"
$userObjectID = (Get-AzADUser -UserPrincipalName $userUpn).Id
$privateEndpointName = "privateendpoint1"
$scope = "/subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
$condition = `
"( `
( `
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) `
) `
OR `
( `
( `
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:sensitivity] StringEqualsIgnoreCase @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<`$key_case_sensitive`$>] `
AND `
@Environment[Microsoft.Network/privateEndpoints] StringEqualsIgnoreCase '/subscriptions/$subid/resourceGroups/$rgname/providers/Microsoft.Network/privateEndpoints/$privateEndpointName' `
) `
OR `
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:sensitivity<`$key_case_sensitive`$>] StringNotEquals 'high' `
) `
)"
$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectID
$testRa.Condition = $condition
$testRa.ConditionVersion = "2.0"
Set-AzRoleAssignment -InputObject $testRa -PassThru
다음 단계