Microsoft Entra 자격 증명을 사용하여 Azure Portal의 Blob 데이터에 액세스하려면 사용자에게 다음 역할 할당이 있어야 합니다.
- 데이터 액세스 역할(예: Storage Blob 데이터 읽기 권한자 또는 Storage Blob 데이터 기여자)
- 최소한 Azure Resource Manager 읽기 권한자 역할
사용자에게 이러한 역할을 할당하는 방법을 알아보려면 Azure Portal을 사용하여 Azure 역할 할당에 제공된 지침을 따르세요.
읽기 권한자 역할은 사용자가 스토리지 계정 리소스를 볼 수 있지만 수정할 수는 없도록 허용하는 Azure Resource Manager 역할입니다. Azure Storage의 데이터에 대한 읽기 권한은 제공하지 않고 계정 관리 리소스에 대해서만 읽기 권한을 제공합니다. 사용자가 Azure Portal에서 Blob 컨테이너로 이동할 수 있도록 읽기 권한자 역할이 필요합니다.
예를 들어 샘플 컨테이너라는 컨테이너 수준에서 사용자 Mary에게 스토리지 Blob 데이터 기여자 역할을 할당하면 Mary에게 해당 컨테이너의 모든 Blob에 대한 읽기, 쓰기 및 삭제 권한이 부여됩니다. 그러나 Mary가 Azure Portal에서 Blob을 보려는 경우 스토리지 Blob 데이터 기여자 역할 자체만으로는 포털을 통해 Blob으로 이동할 수 있는 충분한 권한을 제공하지 않습니다. 포털을 탐색하고 여기에 표시되는 다른 리소스를 보려면 추가 권한이 필요합니다.
Microsoft Entra 자격 증명으로 Azure Portal을 사용하려면 사용자에게 읽기 권한자 역할을 할당해야 합니다. 그러나 사용자에게 Microsoft.Storage/storageAccounts/listKeys/action 권한이 있는 역할이 할당된 경우 사용자는 공유 키 권한 부여를 통해 스토리지 계정 키와 함께 포털을 사용할 수 있습니다. 스토리지 계정 키를 사용하려면 스토리지 계정에 공유 키 액세스가 허용되어야 합니다. 공유 키 액세스를 허용하거나 허용하지 않는 것에 대한 자세한 내용은 Azure Storage 계정에 대한 공유 키 권한 부여 방지를 참조하세요.
읽기 권한자 역할 이외의 추가 권한을 제공하는 Azure Resource Manager 역할을 할당할 수도 있습니다. 보안 모범 사례로 가능한 최소 사용 권한을 할당하는 것이 좋습니다. 자세한 내용은 Azure RBAC에 대한 모범 사례를 참조하세요.
PowerShell을 사용하여 Azure 역할을 보안 주체에 할당하려면 New-AzRoleAssignment 명령을 호출합니다. 명령을 실행하려면 해당 범위 이상에서 할당된 Microsoft.Authorization/roleAssignments/write 권한을 포함하는 역할이 있어야 합니다.
명령의 형식은 할당 범위에 따라 다를 수 있지만 -ObjectId
및 -RoleDefinitionName
은 필수 매개 변수입니다. -Scope
매개 변수에 대한 값을 전달할 필요는 없지만 최소 권한 원칙을 유지하는 것이 좋습니다. 역할과 범위를 제한하면 보안 주체가 손상되는 경우 위험에 노출되는 리소스를 제한할 수 있습니다.
-ObjectId
매개 변수는 역할이 할당되는 사용자, 그룹 또는 서비스 주체의 Microsoft Entra 개체 ID입니다. 식별자를 검색하기 위해 Get-AzADUser를 사용하여 다음 예제와 같이 Microsoft Entra 사용자를 필터링할 수 있습니다.
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
첫 번째 응답은 보안 주체를 반환하고, 두 번째 응답은 보안 주체의 개체 ID를 반환합니다.
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : ab12cd34-ef56-ab12-cd34-ef56ab12cd34
Type :
ab12cd34-ef56-ab12-cd34-ef56ab12cd34
-RoleDefinitionName
매개 변수 값은 주체에 할당해야 하는 RBAC 역할의 이름입니다. Microsoft Entra 자격 증명을 사용하여 Azure Portal의 Blob 데이터에 액세스하려면 사용자에게 다음 역할 할당이 있어야 합니다.
- 데이터 액세스 역할(예: Storage Blob 데이터 기여자 또는 Storage Blob 데이터 읽기 권한자)
- Azure Resource Manager 읽기 권한자 역할
Blob 컨테이너 또는 스토리지 계정에 범위가 지정되는 역할을 할당하려면 -Scope
매개 변수에 대한 리소스 범위를 포함하는 문자열을 지정해야 합니다. 이 작업은 사용자가 작업 함수를 수행하는 데 필요한 최소한의 액세스 수준을 부여하는 정보 보안 개념인 최소 권한 원칙을 준수합니다. 이 연습은 불필요한 권한이 발생할 수 있는 실수 또는 의도적 손상의 잠재적 위험을 줄입니다.
컨테이너의 범위는 다음과 같은 형식입니다.
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
스토리지 계정의 범위는 다음과 같은 형식입니다.
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
스토리지 계정에 범위가 지정된 역할을 할당하려면 --scope
매개 변수의 컨테이너 범위를 포함하는 문자열을 지정합니다.
다음 예제에서는 Storage Blob 데이터 기여자 역할을 사용자에게 할당합니다. 역할 할당의 범위는 컨테이너 수준으로 지정됩니다. 샘플 값과 대괄호(<>
) 안의 자리 표시자 값을 고유한 값으로 바꿔야 합니다.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
다음 예제에서는 개체 ID를 지정하여 Storage Blob 데이터 읽기 권한자 역할을 사용자에게 할당합니다. 역할 할당은 스토리지 계정 수준으로 범위가 지정됩니다. 샘플 값과 대괄호(<>
) 안의 자리 표시자 값을 고유한 값으로 바꿔야 합니다.
New-AzRoleAssignment -ObjectID "ab12cd34-ef56-ab12-cd34-ef56ab12cd34" `
-RoleDefinitionName "Storage Blob Data Reader" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
다음과 유사하게 출력될 것입니다.
RoleAssignmentId : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>/providers/Microsoft.Authorization/roleAssignments/<Role Assignment ID>
Scope : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>
DisplayName : Mark Patrick
SignInName : markpdaniels@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : <Role Definition ID>
ObjectId : <Object ID>
ObjectType : User
CanDelegate : False
구독 또는 리소스 그룹 범위에서 PowerShell을 사용하여 역할을 할당하는 방법에 대한 자세한 내용은 Azure PowerShell을 사용하여 Azure 역할 할당을 참조하세요.
Azure CLI를 사용하여 Azure 역할을 보안 주체에 할당하려면 az role assignment create 명령을 사용합니다. 명령의 형식은 할당 범위에 따라 다를 수 있습니다. 명령을 실행하려면 해당 범위 이상에서 할당된 Microsoft.Authorization/roleAssignments/write 권한을 포함하는 역할이 있어야 합니다.
컨테이너에 범위가 지정된 역할을 할당하려면 --scope
매개 변수의 컨테이너 범위를 포함하는 문자열을 지정합니다. 컨테이너의 범위는 다음과 같은 형식입니다.
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
다음 예제에서는 Storage Blob 데이터 기여자 역할을 사용자에게 할당합니다. 역할 할당의 범위는 컨테이너 수준으로 지정됩니다. 샘플 값과 대괄호(<>
) 안의 자리 표시자 값을 고유한 값으로 바꿔야 합니다.
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
다음 예제에서는 개체 ID를 지정하여 Storage Blob 데이터 읽기 권한자 역할을 사용자에게 할당합니다. 및 --assignee-principal-type
매개 변수에 --assignee-object-id
대한 자세한 내용은 az role assignment를 참조하세요. 이 예제에서 역할 할당은 스토리지 계정 수준으로 범위가 지정됩니다. 샘플 값과 대괄호(<>
) 안의 자리 표시자 값을 고유한 값으로 바꿔야 합니다.
az role assignment create \
--role "Storage Blob Data Reader" \
--assignee-object-id "ab12cd34-ef56-ab12-cd34-ef56ab12cd34" \
--assignee-principal-type "User" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
구독, 리소스 그룹 또는 스토리지 계정 범위에서 Azure CLI를 사용하여 역할을 할당하는 방법에 대한 자세한 내용은 Azure CLI를 사용하여 Azure 역할 할당을 참조하세요.