Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) is het autorisatiesysteem om de toegang tot Azure-resources te beheren. Als u toegang wilt verlenen, wijst u rollen toe aan gebruikers, groepen, service-principals of beheerde identiteiten voor een bepaald bereik. In dit artikel wordt beschreven hoe u rollen toewijst met behulp van Azure CLI.
Vereiste voorwaarden
Als u rollen wilt toewijzen, moet u het volgende hebben:
-
Microsoft.Authorization/roleAssignments/write
machtigingen, zoals op rollen gebaseerd toegangsbeheerbeheerder - Bash in Azure Cloud Shell of Azure CLI
Stappen voor het toewijzen van een Azure-rol
Een rol toewijzen bestaat uit drie elementen: beveiligingsprincipaal, roldefinitie en bereik.
Stap 1: bepalen wie toegang nodig heeft
U kunt een rol toewijzen aan een gebruiker, groep, service-principal of beheerde identiteit. Als u een rol wilt toewijzen, moet u mogelijk de unieke id van het object opgeven. De id heeft de volgende indeling: 11111111-1111-1111-1111-111111111111
. U kunt de id ophalen met behulp van Azure Portal of Azure CLI.
gebruiker
Voor een Microsoft Entra-gebruiker haalt u de principal-naam van de gebruiker op, zoals patlong@contoso.com of de gebruikersobject-id. Als u de object-id wilt ophalen, kunt u az ad user show gebruiken.
az ad user show --id "{principalName}" --query "id" --output tsv
Groep
Voor een Microsoft Entra-groep hebt u de groepsobject-id nodig. Als u de object-id wilt ophalen, kunt u az ad group show of az ad group list gebruiken.
az ad group show --group "{groupName}" --query "id" --output tsv
Service principal
Voor een Microsoft Entra-service-principal (identiteit die door een toepassing wordt gebruikt), hebt u de object-id van de service-principal nodig. Als u de object-id wilt ophalen, kunt u az ad sp list gebruiken. Gebruik voor een service-principal de object-id en niet de toepassings-id.
az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"
beheerde identiteit
Voor een door het systeem toegewezen of een door de gebruiker toegewezen beheerde identiteit hebt u de object-id nodig. Als u de object-id wilt ophalen, kunt u az ad sp list gebruiken.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Als u alleen door de gebruiker toegewezen beheerde identiteiten wilt vermelden, kunt u az identity list gebruiken.
az identity list
Stap 2: Selecteer de juiste rol
Machtigingen worden gegroepeerd in rollen. U kunt kiezen uit een lijst met verschillende ingebouwde Azure-rollen of u kunt uw eigen aangepaste rollen gebruiken. Het is een best practice om toegang te verlenen met de minimale bevoegdheid die nodig is, dus vermijd het toewijzen van een bredere rol.
Als u rollen wilt weergeven en de unieke rol-id wilt ophalen, kunt u az role definition list gebruiken.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
U kunt als volgt de details van een bepaalde rol weergeven.
az role definition list --name "{roleName}"
Zie Lijst met Azure-roldefinities voor meer informatie.
Stap 3: het benodigde bereik identificeren
Azure biedt vier bereikniveaus: resource, resourcegroep, abonnement en beheergroep. Het is een best practice om toegang te verlenen met de minimale bevoegdheid die nodig is, dus vermijd het toewijzen van een rol in een breder bereik. Zie Begrijp het bereik voor meer informatie over het bereik.
Resourcebereik
Voor het resourcebereik hebt u de resource-id voor de resource nodig. U kunt de resource-id vinden door de eigenschappen van de resource in Azure Portal te bekijken. Een resource-id heeft de volgende indeling.
/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}
Resourcegroepbereik
Voor het toepassingsgebied van de resourcegroep hebt u de naam van de resourcegroep nodig. U vindt de naam op de pagina Resourcegroepen in Azure Portal of u kunt az group list gebruiken.
az group list --query "[].{name:name}" --output tsv
Abonnementsbereik
Voor het abonnementsbereik hebt u de abonnements-id nodig. U vindt de id op de pagina Abonnementen in Azure Portal of u kunt az account list gebruiken.
az account list --query "[].{name:name, id:id}" --output tsv
Bereik van beheergroep
Voor het bereik van de beheergroep hebt u de naam van de beheergroep nodig. U vindt de naam op de pagina Beheergroepen in Azure Portal of u kunt az account management-group list gebruiken.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Stap 4: Rol toewijzen
Als u een rol wilt toewijzen, gebruikt u de opdracht az role assignment create . Afhankelijk van het bereik heeft de opdracht doorgaans een van de volgende indelingen.
Resourcebereik
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"
Bereik van resourcegroep
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Abonnementsbereik
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"
Bereik van beheergroep
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"
Hieronder ziet u een voorbeeld van de uitvoer wanneer u de rol Inzender voor virtuele machines toewijst aan een gebruiker binnen het bereik van een resourcegroep.
{
"canDelegate": null,
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"name": "{roleAssignmentId}",
"principalId": "{principalId}",
"principalType": "User",
"resourceGroup": "{resourceGroupName}",
"roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
"scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"type": "Microsoft.Authorization/roleAssignments"
}
Rolvoorbeelden toewijzen
Een rol toewijzen voor alle blobcontainers binnen de resourcescope van een opslagaccount
Kent de rol Bijdrager voor opslagblobgegevens toe aan een service-principal met object-id 55555555-5555-5555-5555-555555555555 voor een opslagaccount met de naam storage12345.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
Een rol toewijzen voor een specifiek resourcebereik voor blobcontainers
Wijst de rol Inzender voor opslagblobgegevens toe aan een service-principal met object-id 55555555-5555-5555-5555-555555555555 voor een blobcontainer genaamd blob-container-01.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "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"
Een rol toewijzen voor een groep in een specifiek resourcebereik voor een virtueel netwerk
Wijst de rol Virtual Machine Contributor toe aan de groep Ann Mack Team met ID 22222222-2222-2222-2222-222222222222 binnen de ressourcescope voor een virtueel netwerk genaamd pharma-sales-project-network.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"
Een rol toewijzen voor een gebruiker binnen het bereik van een resourcegroep
Wijst de rol Inzender voor virtuele machines toe aan patlong@contoso.com de gebruiker op het bereik van de resourcegroep pharma-sales.
az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Een rol toewijzen aan een gebruiker met behulp van de unieke rol-ID op het niveau van een resourcegroep
Er zijn een paar keer dat een rolnaam kan worden gewijzigd, bijvoorbeeld:
- U gebruikt uw eigen aangepaste rol en u besluit de naam te wijzigen.
- U gebruikt een preview-rol met (preview) in de naam. Wanneer de rol wordt vrijgegeven, wordt de naam van de rol gewijzigd.
Zelfs als de naam van een rol wordt gewijzigd, verandert de rol-id niet. Als u scripts of automatisering gebruikt om uw roltoewijzingen te maken, is het een best practice om de unieke rol-id te gebruiken in plaats van de rolnaam. Als de naam van een rol wordt gewijzigd, werken uw scripts waarschijnlijker.
In het volgende voorbeeld wordt de rol Virtual Machine Contributor toegewezen aan de patlong@contoso.com gebruiker binnen de scope van de resourcegroep pharma-sales.
az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Een rol toewijzen voor alle blobcontainers binnen het bereik van een resourcegroep
Wijst de rol Storage Blob Data Contributor toe aan een service-principal met object-id 55555555-5555-5555-5555-555555555555 binnen het bereik van de resourcegroep Example-Storage-rg.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"
Een rol toewijzen voor een toepassing binnen het bereik van een resourcegroep
Hiermee wijst u de rol Virtual Machine Contributor toe aan een toepassing met service-principal-object-id 44444444-4444-4444-4444-444444444444 binnen de resourcegroep pharma-sales.
az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Een rol toewijzen aan een nieuwe service-principal binnen het bereik van een resourcegroep
Als u een nieuwe service-principal maakt en onmiddellijk probeert een rol toe te wijzen aan die service-principal, kan die roltoewijzing in sommige gevallen mislukken. Als u bijvoorbeeld een script gebruikt om een nieuwe beheerde identiteit te maken en vervolgens probeert een rol toe te wijzen aan die service-principal, kan de roltoewijzing mislukken. De reden voor deze fout is waarschijnlijk een replicatievertraging. De service-principal wordt in één regio gemaakt; De roltoewijzing kan echter plaatsvinden in een andere regio die de service-principal nog niet heeft gerepliceerd. Als u dit scenario wilt aanpakken, moet u het principal-type opgeven bij het maken van de roltoewijzing.
Als u een rol wilt toewijzen, gebruikt u az role assignment create, geeft u een waarde op voor --assignee-object-id
en stelt u deze vervolgens in --assignee-principal-type
ServicePrincipal
op .
az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
In het volgende voorbeeld wordt de rol Bijdrager voor virtuele machines toegewezen aan de msi-test beheerde identiteit op de resourcegroep pharma-sales bereik.
az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Een rol toewijzen voor een gebruiker binnen een abonnementsbereik
Wijst de rol Lezer toe aan de annm@example.com gebruiker binnen een abonnementsbereik.
az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Een rol toewijzen voor een groep binnen een abonnementsbereik
Wijst de rol Lezer toe aan de groep Ann Mack Team met id 22222222-2222-2222-2222-222222222222 voor een abonnementsbereik.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Een rol toewijzen voor alle blobcontainers op abonnementsniveau
Wijst de rol Opslagblobgegevenslezer toe aan de alain@example.com gebruiker op abonnementsniveau.
az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Een rol toewijzen voor een gebruiker binnen een bereik van een beheergroep
Wijst de rol Factureringslezer toe aan de alain@example.com gebruiker binnen een bereik van een beheergroep.
az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"