Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure 리소스에 대한 액세스를 관리하는 데 사용하는 권한 부여 시스템입니다. 액세스 권한을 부여하려면 역할을 특정 범위의 사용자, 그룹, 서비스 주체 또는 관리 ID에 할당합니다. 이 문서에서는 Azure PowerShell을 사용하여 역할을 할당하는 방법을 설명합니다.
비고
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
필수 조건
역할을 할당하려면 다음이 있어야 합니다.
-
Microsoft.Authorization/roleAssignments/write권한(예: 역할 기반 액세스 제어 관리자) - Azure Cloud Shell의 PowerShell 또는 Azure PowerShell
- PowerShell 명령을 실행하는 데 사용하는 계정에는 Microsoft Graph
Directory.Read.All권한이 있어야 합니다.
Azure 역할을 할당하는 단계
역할을 할당하려면 보안 주체, 역할 정의 및 범위의 세 가지 요소로 구성됩니다.
1단계: 액세스가 필요한 사용자 결정
사용자, 그룹, 서비스 주체 또는 관리 ID에 역할을 할당할 수 있습니다. 역할을 할당하려면 개체의 고유 ID를 지정해야 할 수 있습니다. ID의 형식은 다음과 같습니다 11111111-1111-1111-1111-111111111111. Azure Portal 또는 Azure PowerShell을 사용하여 ID를 가져올 수 있습니다.
User
Microsoft Entra 사용자의 경우 사용자 계정 이름(예: patlong@contoso.com 사용자 개체 ID)을 가져옵니다. 개체 ID를 가져오려면 Get-AzADUser를 사용할 수 있습니다.
Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id
그룹
Microsoft Entra 그룹의 경우 그룹 개체 ID가 필요합니다. 개체 ID를 가져오려면 Get-AzADGroup을 사용할 수 있습니다.
Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id
서비스 프린시펄
Microsoft Entra 서비스 주체(애플리케이션에서 사용하는 ID)의 경우 서비스 주체 개체 ID가 필요합니다. 개체 ID를 가져오려면 Get-AzADServicePrincipal을 사용할 수 있습니다. 서비스 주체의 경우 애플리케이션 ID가 아닌 개체 ID를 사용합니다.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
관리되는 아이덴티티
시스템 할당 또는 사용자 할당 관리 ID의 경우 개체 ID가 필요합니다. 개체 ID를 가져오려면 Get-AzADServicePrincipal을 사용할 수 있습니다.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
2단계: 적절한 역할 선택
권한은 역할로 그룹화됩니다. 여러 Azure 기본 제공 역할 목록에서 선택하거나 사용자 고유의 사용자 지정 역할을 사용할 수 있습니다. 필요한 최소 권한으로 액세스 권한을 부여하는 것이 가장 좋습니다. 따라서 더 넓은 역할을 할당하지 않도록 합니다.
역할을 나열하고 고유한 역할 ID를 가져오려면 Get-AzRoleDefinition을 사용할 수 있습니다.
Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id
특정 역할의 세부 정보를 나열하는 방법은 다음과 같습니다.
Get-AzRoleDefinition -Name <roleName>
자세한 내용은 Azure 역할 정의 목록을 참조하세요.
3단계: 필요한 범위 식별
Azure는 리소스, 리소스 그룹, 구독 및 관리 그룹의 네 가지 범위 수준을 제공합니다. 필요한 최소 권한으로 액세스 권한을 부여하는 것이 가장 좋습니다. 따라서 더 넓은 범위에서 역할을 할당하지 않도록 합니다. 범위에 대한 자세한 내용은 범위 이해를 참조하세요.
리소스 범위
리소스 범위의 경우 리소스에 대한 리소스 ID가 필요합니다. Azure Portal에서 리소스의 속성을 확인하여 리소스 ID를 찾을 수 있습니다. 리소스 ID의 형식은 다음과 같습니다.
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
리소스 그룹 범위
리소스 그룹 범위의 경우 리소스 그룹의 이름이 필요합니다. Azure Portal의 리소스 그룹 페이지에서 이름을 찾거나 Get-AzResourceGroup을 사용할 수 있습니다.
Get-AzResourceGroup
구독 범위
구독 범위의 경우 구독 ID가 필요합니다. Azure Portal의 구독 페이지에서 ID 를 찾거나 Get-AzSubscription을 사용할 수 있습니다.
Get-AzSubscription
관리 그룹 범위
관리 그룹 범위의 경우 관리 그룹 이름이 필요합니다. Azure Portal의 관리 그룹 페이지에서 이름을 찾거나 Get-AzManagementGroup을 사용할 수 있습니다.
Get-AzManagementGroup
4단계: 역할 할당
역할을 할당하려면 New-AzRoleAssignment 명령을 사용합니다. 범위에 따라 명령에는 일반적으로 다음 형식 중 하나가 있습니다.
리소스 범위
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionId <roleId> `
-ResourceName <resourceName> `
-ResourceType <resourceType> `
-ResourceGroupName <resourceGroupName>
리소스 그룹 범위
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
구독 범위
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
관리 그룹 범위
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
역할 예제 할당
스토리지 계정 리소스 범위의 모든 Blob 컨테이너에 대한 역할 할당
서비스 주체의 개체 ID 55555555-5555-5555-5555-555555555555 및 애플리케이션 ID 66666666-6666-6666-6666-666666666666에 Storage Blob 데이터 기여자 역할을 storage12345라는 스토리지 계정의 리소스 범위에 할당합니다.
PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/providers/Microsoft.Authorization/roleAssignments/cccccccc-cccc-cccc-cccc-cccccccccccc
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345
DisplayName : example-identity
SignInName :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId : 55555555-5555-5555-5555-555555555555
ObjectType : ServicePrincipal
CanDelegate : False
특정 Blob 컨테이너 리소스 범위에 대한 역할 할당
개체 ID 55555555-5555-5555-5555-555555555555 및 애플리케이션 ID 66666666-6666-6666-6666-666666666666인 서비스 주체에 Storage Blob 데이터 기여자 역할을 할당합니다. 리소스 범위는 blob-container-01이라는 Blob 컨테이너입니다.
PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignm
ents/dddddddd-dddd-dddd-dddd-dddddddddddd
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01
DisplayName : example-identity
SignInName :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId : 55555555-5555-5555-5555-555555555555
ObjectType : ServicePrincipal
CanDelegate : False
특정 가상 네트워크 리소스 범위에서 그룹에 대한 역할 할당
pharma-sales-project-network라는 가상 네트워크의 리소스 범위에서 Pharma Sales Admins 그룹(ID aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa)에 가상 머신 기여자 역할을 할당합니다.
PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceName pharma-sales-project-network `
-ResourceType Microsoft.Network/virtualNetworks `
-ResourceGroupName MyVirtualNetworkResourceGroup
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network/providers/Microsoft.Authorizat
ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network
DisplayName : Pharma Sales Admins
SignInName :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType : Group
CanDelegate : False
리소스 그룹 범위에서 사용자에 대한 역할 할당
pharma-sales 리소스 그룹 범위에서 patlong@contoso.com 사용자에게 Virtual Machine Contributor 역할을 할당합니다.
PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
또는 -Scope 매개변수를 사용하여 완전한 자격을 갖춘 리소스 그룹을 지정할 수 있습니다.
PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
리소스 그룹 범위에서 고유한 역할 ID를 사용하여 사용자에 대한 역할 할당
예를 들어 역할 이름이 변경될 수 있는 경우가 몇 번 있습니다.
- 사용자 고유의 사용자 지정 역할을 사용하고 있으며 이름을 변경하기로 결정합니다.
- 이름에 (미리 보기)가 있는 미리 보기 역할을 사용하고 있습니다. 역할이 해제되면 역할의 이름이 바뀝니다.
역할 이름이 변경되더라도 역할 ID는 변경되지 않습니다. 스크립트 또는 자동화를 사용하여 역할 할당을 만드는 경우 역할 이름 대신 고유한 역할 ID를 사용하는 것이 좋습니다. 따라서 역할 이름이 바뀌면 스크립트가 작동할 가능성이 높습니다.
다음 예제에서는 pharma-sales 리소스 그룹 범위에서 사용자에게 patlong@contoso.com 역할을 할당합니다.
PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 `
-RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
리소스 그룹 범위에서 애플리케이션에 대한 역할 할당
pharma-sales 리소스 그룹 범위에서 서비스 주체 개체 ID가 777777777-7777-7777-77777-777777777777인 애플리케이션에 Virtual Machine 기여자 역할을 할당합니다.
PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : MyApp1
SignInName :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
구독 범위에서 사용자에 대한 역할 할당
구독 범위에서 사용자에게 읽기 권한자 역할을 annm@example.com 할당합니다.
PS C:\> New-AzRoleAssignment -SignInName annm@example.com `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName : Ann M
SignInName : annm@example.com
RoleDefinitionName : Reader
RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
관리 그룹 범위에서 사용자에 대한 역할 할당
관리 그룹 범위에서 사용자에게 청구 읽기 권한자 역할을 alain@example.com 할당합니다.
PS C:\> New-AzRoleAssignment -SignInName alain@example.com `
-RoleDefinitionName "Billing Reader" `
-Scope "/providers/Microsoft.Management/managementGroups/marketing-group"
RoleAssignmentId : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName : Alain Charon
SignInName : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False