Attribuer des rôles Azure à l’aide d’Azure PowerShell
Le contrôle d’accès en fonction du rôle Azure (Azure RBAC) est le système d’autorisation que vous utilisez pour gérer l’accès aux ressources Azure. Pour accorder l’accès, vous devez attribuer des rôles aux utilisateurs, aux groupes, aux principaux de service ou aux identités managées avec une étendue particulière. Cet article explique comment attribuer des rôles à l’aide d’Azure PowerShell.
Remarque
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Prérequis
Pour attribuer des rôles, vous devez disposer des éléments suivants :
- Autorisations
Microsoft.Authorization/roleAssignments/write
, comme celles de l’Administrateur de contrôle d’accès en fonction du rôle - PowerShell dans Azure Cloud Shell ou Azure PowerShell
- Le compte que vous utilisez pour exécuter la commande PowerShell doit disposer de l’autorisation Microsoft Graph
Directory.Read.All
.
Procédure d’attribution d’un rôle Azure
L’attribution d’un rôle se compose de trois éléments : un principal de sécurité, une définition de rôle et une étendue.
Étape 1 : déterminer qui a besoin d’un accès
Vous pouvez attribuer un rôle à un utilisateur, à un groupe, à un principal de service ou à une identité managée. Pour attribuer un rôle, vous devrez peut-être spécifier l’ID unique de l’objet. L’ID a le format : 11111111-1111-1111-1111-111111111111
. Vous pouvez récupérer l’ID à l’aide du Portail Azure ou d’Azure PowerShell.
Utilisateur
Pour un utilisateur Microsoft Entra, récupérez le nom d’utilisateur principal, par exemple patlong@contoso.com ou l’ID de l’objet utilisateur. Pour récupérer l’ID de l’objet, vous pouvez utiliser Get-AzADUser.
Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id
Groupe
Pour un groupe Microsoft Entra, vous avez besoin de l’ID d’objet du groupe. Pour récupérer l’ID de l’objet, vous pouvez utiliser Get-AzADGroup.
Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id
Principal du service
Pour un principal de service Microsoft Entra (identité utilisée par une application), vous avez besoin de l’ID d’objet du principal de service. Pour récupérer l’ID de l’objet, vous pouvez utiliser Get-AzADServicePrincipal. Pour un principal de service, utilisez l’ID d’objet et non l’ID d’application.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
Identité gérée
Pour une identité managée affectée par le système ou par l’utilisateur, vous avez besoin de l’ID d’objet. Pour récupérer l’ID de l’objet, vous pouvez utiliser Get-AzADServicePrincipal.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
Étape 2 : sélectionner le rôle approprié
Les autorisations sont regroupées dans des rôles. Vous pouvez choisir parmi une liste de plusieurs rôles intégrés Azure ou utiliser vos propres rôles personnalisés. Accorder l’accès avec le moindre privilège requis étant recommandé, vous devez éviter d’attribuer un rôle plus large.
Pour lister les rôles et récupérer l’ID de rôle unique, vous pouvez utiliser Get-AzRoleDefinition.
Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id
Voici comment répertorier les détails d’un rôle particulier.
Get-AzRoleDefinition -Name <roleName>
Pour plus d’informations, consultez Répertorier les définitions de rôle Azure.
Étape 3 : identifier l’étendue nécessaire
Azure fournit quatre niveaux d’étendue : ressource, groupe de ressources, abonnement et groupe d’administration. Accorder l’accès avec le moindre privilège requis étant recommandé, vous devez éviter d’attribuer un rôle à une étendue plus large. Pour plus d’informations sur l’étendue, consultez Comprendre l’étendue.
Étendue des ressources
Pour l’étendue des ressources, vous avez besoin de l’ID de la ressource. Vous pouvez trouver l’ID de ressource en examinant les propriétés de la ressource dans le portail Azure. Un ID de ressource a le format suivant.
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
Étendue du groupe de ressources
Pour l’étendue du groupe de ressources, vous avez besoin du nom du groupe de ressources. Vous trouverez le nom dans la page Groupes de ressources du portail Azure, ou vous pouvez utiliser Get-AzResourceGroup.
Get-AzResourceGroup
Étendue de l’abonnement
Pour l’étendue d’abonnement, vous avez besoin de l’ID d’abonnement. Vous pouvez trouver l’ID dans la page Abonnements du portail Azure, ou vous pouvez utiliser Get-AzSubscription.
Get-AzSubscription
Étendue d’un groupe d’administration
Pour l’étendue d’un groupe d’administration, vous avez besoin du nom du groupe d’administration. Vous pouvez trouver le nom dans la page Groupes d’administration du portail Azure, ou vous pouvez utiliser Get-AzManagementGroup.
Get-AzManagementGroup
Étape 4 : attribuer le rôle
Pour attribuer un rôle, utilisez la commande New-AzRoleAssignment. En fonction de l’étendue, la commande a généralement l’un des formats suivants.
Étendue des ressources
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>
Étendue du groupe de ressources
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
Étendue de l’abonnement
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
Étendue d’un groupe d’administration
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
Attribuer des exemples de rôles
Attribuer un rôle pour tous les conteneurs de blobs dans l’étendue d’une ressource de compte de stockage
Attribue le rôle Contributeur aux données Blob du stockage à un principal de service associé à l’ID d’objet 55555555-5555-5555-5555-555555555555 et l’ID d’application 66666666-6666-6666-6666-666666666666 dans l’étendue des ressources d’un compte de stockage nommé 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
Attribuer un rôle pour l’étendue d’une ressource d’un conteneur de blobs spécifique
Attribue le rôle Contributeur aux données Blob du stockage à un principal de service associé à l’ID d’objet 55555555-5555-5555-5555-555555555555 et l’ID d’application 66666666-6666-6666-6666-666666666666 dans l’étendue des ressources d’un conteneur de blobs nommé 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
Attribuer un rôle pour un groupe dans l’étendue d’une ressource de réseau virtuel spécifique
Attribue le rôle Contributeur de machine virtuelle au groupe Pharma Sales Admins associé à l’ID aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa dans l’étendue des ressources d’un réseau virtuel nommé 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
Attribuer un rôle à un utilisateur dans l’étendue d’un groupe de ressources
Attribue le rôle Contributeur de machine virtuelle à l’utilisateur patlong@contoso.com dans l’étendue du groupe de ressources pharma-sales.
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
Vous pouvez également spécifier le groupe de ressources complet avec le paramètre -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
Attribuer un rôle pour un utilisateur utilisant l’ID de rôle unique dans l’étendue d’un groupe de ressources
Un nom de rôle peut changer dans certaines circonstances, par exemple :
- Vous utilisez vos propres rôles personnalisés et vous décidez d’en modifier le nom.
- Vous utilisez un rôle en préversion dont le nom contient (préversion). Lorsque le rôle est publié, le rôle est renommé.
Même si un rôle est renommé, l’ID de rôle ne change pas. Si vous utilisez des scripts ou une automatisation pour créer vos attributions de rôles, il est recommandé d’utiliser l’ID de rôle unique au lieu du nom de rôle. Par conséquent, si un rôle est renommé, vos scripts sont plus susceptibles de fonctionner.
L’exemple suivant attribue le rôle Contributeur de machine virtuelle à l’utilisateur patlong@contoso.com dans l’étendue du groupe de ressources 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
Attribuer un rôle pour une application dans l’étendue d’un groupe de ressources
Attribue le rôle Contributeur de machine virtuelle à une application associée à l’ID d’objet de principal de service 77777777-7777-7777-7777-777777777777 dans l’étendue du groupe de ressources 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
Attribuer un rôle pour un utilisateur dans l’étendue d’un abonnement
Attribuez le rôle de Lecteur à l’utilisateur annm@example.com dans l’étendue d’un abonnement.
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
Attribuer un rôle pour un utilisateur dans l’étendue d’un groupe d’administration
Attribue le rôle Lecteur de facturation à l’utilisateur alain@example.com dans l’étendue d’un groupe d’administration.
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