Tilldela Azure-roller med hjälp av Azure PowerShell

Rollbaserad åtkomstkontroll i Azure (Azure RBAC) är det auktoriseringssystem som du använder för att hantera åtkomst till Azure-resurser. Om du vill bevilja åtkomst tilldelar du roller till användare, grupper, tjänsthuvudnamn eller hanterade identiteter i ett visst omfång. I den här artikeln beskrivs hur du tilldelar roller med Hjälp av Azure PowerShell.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

Om du vill tilldela roller måste du ha:

Steg för att tilldela en Azure-roll

För att tilldela en roll består av tre element: säkerhetsobjekt, rolldefinition och omfång.

Steg 1: Fastställa vem som behöver åtkomst

Du kan tilldela en roll till en användare, grupp, tjänstens huvudnamn eller hanterad identitet. Om du vill tilldela en roll kan du behöva ange objektets unika ID. ID:t har formatet : 11111111-1111-1111-1111-111111111111. Du kan hämta ID:t med hjälp av Azure-portalen eller Azure PowerShell.

Användare

För en Microsoft Entra-användare hämtar du användarens huvudnamn, till exempel patlong@contoso.com eller användarobjektets ID. Om du vill hämta objekt-ID:t kan du använda Get-AzADUser.

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

Grupp

För en Microsoft Entra-grupp behöver du gruppobjektets ID. Om du vill hämta objekt-ID:t kan du använda Get-AzADGroup.

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

Tjänstens huvud

För tjänstens huvudnamn för Microsoft Entra (identitet som används av ett program) behöver du objekt-ID:t för tjänstens huvudnamn. Om du vill hämta objekt-ID:t kan du använda Get-AzADServicePrincipal. För tjänstens huvudnamn använder du objekt-ID:t och inte program-ID:t.

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

Hanterade identiteter

För en systemtilldelad eller användartilldelad hanterad identitet behöver du objekt-ID:t. Om du vill hämta objekt-ID:t kan du använda Get-AzADServicePrincipal.

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

Steg 2: Välj lämplig roll

Behörigheter grupperas i roller. Du kan välja från en lista över flera inbyggda Azure-roller eller använda dina egna anpassade roller. Det är en bra idé att bevilja åtkomst med minsta möjliga behörighet, så undvik att tilldela en bredare roll.

Om du vill visa roller och hämta det unika roll-ID:t kan du använda Get-AzRoleDefinition.

Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id

Så här listar du information om en viss roll.

Get-AzRoleDefinition -Name <roleName>

Mer information finns i Lista Azure-rolldefinitioner.

Steg 3: Identifiera det nödvändiga omfånget

Azure har fyra omfångsnivåer: resurs, resursgrupp, prenumeration och hanteringsgrupp. Det är bästa praxis att bevilja åtkomst med minsta möjliga behörighet, så undvik att tilldela en roll i ett bredare omfång. Mer information om omfång finns i Förstå omfång.

Resursomfång

För resursomfång behöver du resurs-ID:t för resursen. Du hittar resurs-ID:t genom att titta på egenskaperna för resursen i Azure-portalen. Ett resurs-ID har följande format.

/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>

Resursgruppsomfång

För resursgruppsomfång behöver du namnet på resursgruppen. Du hittar namnet på sidan Resursgrupper i Azure-portalen eller så kan du använda Get-AzResourceGroup.

Get-AzResourceGroup

Prenumerationsomfång

För prenumerationsomfång behöver du prenumerations-ID:t. Du hittar ID:t på sidan Prenumerationer i Azure-portalen eller så kan du använda Get-AzSubscription.

Get-AzSubscription

Omfång för hanteringsgrupp

För hanteringsgruppsomfång behöver du namnet på hanteringsgruppen. Du hittar namnet på sidan Hanteringsgrupper i Azure-portalen eller så kan du använda Get-AzManagementGroup.

Get-AzManagementGroup

Steg 4: Tilldela roll

Om du vill tilldela en roll använder du kommandot New-AzRoleAssignment . Beroende på omfånget har kommandot vanligtvis något av följande format.

Resursomfång

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>

Resursgruppsomfång

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>

Prenumerationsomfång

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>

Omfång för hanteringsgrupp

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>

Tilldela rollexempel

Tilldela en roll för alla blobcontainrar i ett lagringskontoresursomfång

Tilldelar rollen Storage Blob Data Contributor till ett huvudnamn för tjänsten med objekt-ID 5555555-5555-5555-5555-55555555555 och program-ID 66666666-6666-6666-6666-666666666 i ett resursomfång för ett lagringskonto med namnet 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

Tilldela en roll för en specifik blobcontainerresursomfång

Tilldelar rollen Storage Blob Data Contributor till ett huvudnamn för tjänsten med objekt-ID 5555555-5555-5555-5555-55555555555 och program-ID 66666666-6666-6666-6666-666666666 i ett resursomfång för en blobcontainer med namnet blob-container-01.

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

Tilldela en roll för en grupp i ett specifikt resursomfång för virtuella nätverk

Tilldelar rollen Virtuell datordeltagare till gruppen Pharma Sales Admins med ID aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaa i ett resursomfång för ett virtuellt nätverk med namnet pharma-sales-project-network.

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

Tilldela en roll för en användare i ett resursgruppsomfång

Tilldelar rollen Virtuell datordeltagare till patlong@contoso.com användaren i resursgruppen pharma-sales omfång.

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

Alternativt kan du ange den fullständigt kvalificerade resursgruppen med parametern -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

Tilldela en roll för en användare med hjälp av det unika roll-ID:t i ett resursgruppsomfång

Det finns ett par gånger då ett rollnamn kan ändras, till exempel:

  • Du använder din egen anpassade roll och du bestämmer dig för att ändra namnet.
  • Du använder en förhandsgranskningsroll som har (förhandsversion) i namnet. När rollen släpps byter rollen namn.

Även om en roll har bytt namn ändras inte roll-ID:t. Om du använder skript eller automatisering för att skapa dina rolltilldelningar är det bästa praxis att använda det unika roll-ID:t i stället för rollnamnet. Om en roll byter namn är det därför mer troligt att skripten fungerar.

I följande exempel tilldelas rollen Virtuell datordeltagare till patlong@contoso.com användaren i resursgruppen pharma-sales .

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

Tilldela en roll för ett program i ett resursgruppsomfång

Tilldelar rollen Virtuell datordeltagare till ett program med objekt-ID för tjänstens huvudnamn 7777777-7777-7777-77777777777777 i resursgruppen pharma-sales .

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

Tilldela en roll för en användare i ett prenumerationsomfång

Tilldelar rollen Läsare till annm@example.com användaren i ett prenumerationsomfång.

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

Tilldela en roll för en användare i ett hanteringsgruppsomfång

Tilldelar rollen Faktureringsläsare till alain@example.com användaren i ett hanteringsgruppsomfång.

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

Nästa steg