Azure-rollen toewijzen met behulp van Azure CLI

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.

Vereisten

Als u rollen wilt toewijzen, hebt u het volgende nodig:

Stappen voor het toewijzen van een Azure-rol

Een rol toewijzen bestaat uit drie elementen: beveiligingsprincipal, 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 indeling: 11111111-1111-1111-1111-111111111111. U kunt de id ophalen met behulp van de Azure Portal of Azure CLI.

Gebruiker

Haal voor een Azure AD gebruiker de user principal name op, zoals patlong@contoso.com of de id van het gebruikersobject. 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 Azure AD 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 Azure AD service-principal (identiteit die wordt gebruikt door een toepassing), hebt u de object-id van de service-principal nodig. U kunt az ad sp list gebruiken om de object-id op te halen. 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 door de gebruiker toegewezen beheerde identiteit hebt u de object-id nodig. U kunt az ad sp list gebruiken om de object-id op te halen.

az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"

Als u alleen door de gebruiker toegewezen beheerde identiteiten wilt weergeven, 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 minste bevoegdheden die nodig zijn, 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 Azure-roldefinities weergeven 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 bevoegdheden die nodig zijn, dus vermijd het toewijzen van een rol met een breder bereik. Zie 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 te kijken naar de eigenschappen van de resource in de Azure Portal. Een resource-id heeft de volgende indeling.

/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}

Bereik van de resourcegroep

Voor het bereik van de resourcegroep hebt u de naam van de resourcegroep nodig. U vindt de naam op de pagina Resourcegroepen in de 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 de 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 de 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

Gebruik de opdracht az role assignment create om een rol toe te wijzen. 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 de resourcegroep

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--resource-group "{resourceGroupName}"

Abonnementsbereik

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--subscription "{subscriptionNameOrId}"

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 in 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"
}

Voorbeelden van rollen toewijzen

Een rol toewijzen voor alle blobcontainers in het resourcebereik van een opslagaccount

Wijst de rol Inzender voor opslagblobgegevens toe aan een service-principal met object-id 555555-5555-5555-55555-555555555555 voor een resourcebereik 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 blobcontainerresourcebereik

Hiermee wordt de rol Inzender voor opslagblobgegevens toegewezen aan een service-principal met object-id 555555-5555-5555-55555-55555555555 voor een resourcebereik voor een blobcontainer met de naam 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

Hiermee wordt de rol Inzender voor virtuele machines toegewezen aan de groep Ann Mack Team met id 222222-2222-2222-2222-2222222222222222 voor een virtueel netwerk met de naam 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 aan een gebruiker in het bereik van een resourcegroep

Hiermee wijst u de rol Inzender voor virtuele machines toe aan patlong@contoso.com de gebruiker binnen het bereik van de resourcegroep pharma-sales .

az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Een rol toewijzen aan een gebruiker met behulp van de unieke rol-id in het bereik van een resourcegroep

Er zijn enkele keren dat de naam van een rol kan worden gewijzigd, bijvoorbeeld:

  • U gebruikt uw eigen aangepaste rol en u besluit de naam te wijzigen.
  • U gebruikt een voorbeeldrol 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, wordt de rol-id niet gewijzigd. 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. Dus als de naam van een rol wordt gewijzigd, werken uw scripts waarschijnlijk beter.

In het volgende voorbeeld wordt de rol Inzender voor virtuele machines toegewezen aan de patlong@contoso.com gebruiker binnen het bereik van de resourcegroep pharma-sales .

az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--resource-group "pharma-sales"

Een rol toewijzen voor alle blobcontainers in het bereik van een resourcegroep

Wijst de rol Inzender voor opslagblobgegevens toe aan een service-principal met object-id 555555-5555-5555-55555-555555555555 in het resourcegroepbereik Example-Storage-rg .

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--resource-group "Example-Storage-rg"

U kunt ook de volledig gekwalificeerde resourcegroep opgeven met de --scope parameter :

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 in het bereik van een resourcegroep

Hiermee wordt de rol Inzender voor virtuele machines toegewezen aan een toepassing met service-principal-object-id 444444-4444-44444-44444444444444444444444 bij het resourcegroepbereik pharma-sales .

az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Een rol toewijzen voor een nieuwe service-principal in 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-iden stelt u in --assignee-principal-type op ServicePrincipal.

az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--resource-group "{resourceGroupName}" \
--scope "/subscriptions/{subscriptionId}"

In het volgende voorbeeld wordt de rol Inzender voor virtuele machines toegewezen aan de beheerde identiteit msi-test binnen het bereik van de resourcegroep pharma-sales :

az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Een rol toewijzen aan een gebruiker in een abonnementsbereik

Hiermee wordt de rol Lezer toegewezen aan de annm@example.com gebruiker binnen een abonnementsbereik.

az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--subscription "00000000-0000-0000-0000-000000000000"

Een rol toewijzen voor een groep in een abonnementsbereik

Wijst de rol Lezer toe aan de groep Ann Mack Team met id 2222222-2222-2222-2222-2222222222222222222 in abonnementsbereik.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--subscription "00000000-0000-0000-0000-000000000000"

Een rol toewijzen voor alle blobcontainers in een abonnementsbereik

Hiermee wijst u de rol Lezer van opslagblobgegevens toe aan de alain@example.com gebruiker binnen een abonnementsbereik.

az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Een rol toewijzen aan een gebruiker binnen het bereik van een beheergroep

Wijst de rol Factureringslezer toe aan de alain@example.com gebruiker binnen het bereik van een beheergroep.

az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"

Volgende stappen