Azure PowerShell을 사용하여 Azure 역할 할당

Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure 리소스에 대한 액세스를 관리하는 데 사용하는 권한 부여 시스템입니다. 액세스 권한을 부여하려면 역할을 특정 범위의 사용자, 그룹, 서비스 주체 또는 관리 ID에 할당합니다. 이 문서에서는 Azure PowerShell을 사용하여 역할을 할당하는 방법을 설명합니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

필수 조건

역할 할당을 위해 필요한 사항:

Azure 역할 할당 단계

역할 할당은 보안 주체, 역할 정의, 범위 등 세 가지 요소로 구성됩니다.

1단계: 액세스가 필요한 사용자 확인

사용자, 그룹, 서비스 주체 또는 관리 ID에 역할을 할당할 수 있습니다. 역할을 할당하기 위해 개체의 고유 ID를 지정해야 할 수도 있습니다. ID의 형식은 11111111-1111-1111-1111-111111111111입니다. Azure Portal, Azure PowerShell을 사용하여 ID를 가져올 수 있습니다.

사용자

Microsoft Entra 사용자의 경우 patlong@contoso.com 또는 사용자 개체 ID와 같은 사용자 계정 이름을 가져옵니다. 개체 ID를 가져오기 위해 AzADUser 가져오기를 사용할 수 있습니다.

Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id

그룹

Microsoft Entra 그룹의 경우 그룹 개체 ID가 필요합니다. 개체 ID를 가져오기 위해 AzADGroup 가져오기를 사용할 수 있습니다.

Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id

서비스 주체

Microsoft Entra 서비스 주체(애플리케이션에서 사용하는 ID)의 경우 서비스 주체 개체 ID가 필요합니다. 개체 ID를 가져오기 위해 AzADServicePrincipal 가져오기를 사용할 수 있습니다. 서비스 주체의 경우 애플리케이션 ID가 아니라 개체 ID를 사용합니다.

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

관리 ID

시스템 할당 또는 사용자 할당 관리 ID의 경우 개체 ID가 필요합니다. 개체 ID를 가져오기 위해 AzADServicePrincipal 가져오기를 사용할 수 있습니다.

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

2단계: 적절한 역할 선택

사용 권한은 역할에 함께 그룹화됩니다. Azure 기본 제공 역할 목록에서 선택하거나 고유한 사용자 지정 역할을 사용할 수 있습니다. 필요한 최소한의 권한을 사용하여 액세스 권한을 부여하는 것이 가장 좋으므로, 광범위한 역할을 할당하지 마세요.

역할을 나열하고 고유한 역할 ID를 가져오려면 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의 리소스 그룹 페이지에서 이름을 찾거나 AzResourceGroup 가져오기를 사용할 수 있습니다.

Get-AzResourceGroup

구독 범위

구독 범위에는 구독 ID가 필요합니다. Azure Portal의 구독 페이지에서 ID를 찾거나 AzSubscription을 사용할 수 있습니다.

Get-AzSubscription

관리 그룹 범위

관리 그룹 범위에는 관리 그룹 이름이 필요합니다. Azure Portal의 관리 그룹 페이지에서 이름을 찾거나 AzManagementGroup 가져오기를 사용할 수 있습니다.

Get-AzManagementGroup

4단계: 역할 할당

역할을 할당하려면 새로운 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 컨테이너에 대해 역할 할당하기

storage12345라는 스토리지 계정에 대한 리소스 범위에서 개체 ID가 55555555-5555-5555-5555-555555555555 및 애플리케이션 ID 66666666-6666-6666-6666-666666666666인 서비스 주체에게 Storage Blob Data Contributor 역할을 할당합니다.

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 컨테이너 리소스 범위에 대해 역할 할당하기

blob-container-01이라는 Blob 컨테이너에 대한 리소스 범위에서 개체 ID가 55555555-5555-5555-5555-555555555555 및 애플리케이션 ID 66666666-6666-6666-6666-666666666666인 서비스 주체에게 Storage Blob Data Contributor 역할을 할당합니다.

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라는 가상 네트워크에 대한 리소스 범위에서 ID가 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa인 Pharma Sales Admins 그룹에 Virtual Machine Contributor 역할을 할당합니다.

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 사용자에게 가상 머신 기여자 역할을 할당합니다.

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 77777777-7777-7777-7777-777777777777의 애플리케이션에 Virtual Machine Contributor 역할을 할당합니다.

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

다음 단계