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:
Microsoft.Authorization/roleAssignments/write
behörigheter, till exempel rollbaserad administratör för åtkomstkontroll- Bash i Azure Cloud Shell eller Azure CLI
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 i resursgruppen 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-id
och 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"