Tilldela Azure-roller med Hjälp av Azure CLI

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 CLI.

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 CLI.

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 az ad user show.

az ad user show --id "{principalName}" --query "id" --output tsv

Grupp

För en Microsoft Entra-grupp behöver du gruppobjektets ID. Om du vill hämta objekt-ID:t kan du använda az ad group show eller az ad group list.

az ad group show --group "{groupName}" --query "id" --output tsv

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 az ad sp-listan. För tjänstens huvudnamn använder du objekt-ID:t och inte program-ID:t.

az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"

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 az ad sp-listan.

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

Om du bara vill visa en lista över användartilldelade hanterade identiteter kan du använda az identity list.

az identity list

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 az role definition list.

az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv

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

az role definition list --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 az group list.

az group list --query "[].{name:name}" --output tsv

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 az account list.

az account list --query "[].{name:name, id:id}" --output tsv

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 az account management-group list.

az account management-group list --query "[].{name:name, id:id}" --output tsv

Steg 4: Tilldela roll

Om du vill tilldela en roll använder du kommandot az role assignment create . Beroende på omfånget har kommandot vanligtvis något av följande format.

Resursomfång

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"

Resursgruppsomfång

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"

Prenumerationsomfång

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"

Omfång för hanteringsgrupp

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"

Följande visar ett exempel på utdata när du tilldelar rollen Virtuell datordeltagare till en användare i ett resursgruppsomfång.

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

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-5555555555 vid ett resursomfång för ett lagringskonto med namnet 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"

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 vid ett resursomfång för en blobcontainer med namnet 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"

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

Tilldelar rollen Virtuell datordeltagare till Gruppen Ann Mack Team med ID 22222222-2222-2222-2222-2222-2222222 vid ett resursomfång för ett virtuellt nätverk med namnet 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"

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.

az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

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 .

az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

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

Tilldelar rollen Storage Blob Data Contributor till ett huvudnamn för tjänsten med objekt-ID 5555555-5555-5555-5555-55555555555 iresursgruppen 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"

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 44444444-4444-4444-44444444444444 i resursgruppen 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"

Tilldela en roll för ett nytt huvudnamn för tjänsten i ett resursgruppsomfång

Om du skapar ett nytt huvudnamn för tjänsten och omedelbart försöker tilldela tjänstens huvudnamn en roll kan rolltilldelningen misslyckas i vissa fall. Om du till exempel använder ett skript för att skapa en ny hanterad identitet och sedan försöker tilldela tjänstens huvudnamn en roll kan rolltilldelningen misslyckas. Orsaken till det här felet är sannolikt en replikeringsfördröjning. Tjänstens huvudnamn skapas i en region. Rolltilldelningen kan dock ske i en annan region som inte har replikerat tjänstens huvudnamn ännu. För att hantera det här scenariot bör du ange huvudtypen när du skapar rolltilldelningen.

Om du vill tilldela en roll använder du az role assignment create, anger ett värde för --assignee-object-idoch anger --assignee-principal-type sedan till ServicePrincipal.

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

I följande exempel tilldelas rollen Virtuell datordeltagare till den hanterade identiteten msi-test i resursgruppen pharma-sales omfång:

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"

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.

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

Tilldela en roll för en grupp i ett prenumerationsomfång

Tilldelar rollen Läsare till Gruppen Ann Mack Team med ID 22222222-2222-2222-2222-2222-22222222 i ett prenumerationsomfång.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

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

Tilldelar rollen Storage Blob Data Reader till alain@example.com användaren i ett prenumerationsomfång.

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

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.

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

Nästa steg