Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kontrola dostępu oparta na rolach (RBAC) platformy Azure to system autoryzacji używany do zarządzania dostępem do zasobów platformy Azure. Aby udzielić dostępu, należy przydzielić role użytkownikom, grupom, jednostkom usługowym lub tożsamościom zarządzanym w określonym zakresie. W tym artykule opisano sposób przypisywania ról przy użyciu interfejsu wiersza polecenia platformy Azure.
Wymagania wstępne
Aby przypisać role, musisz mieć następujące elementy:
-
Microsoft.Authorization/roleAssignments/writeuprawnienia, takie jak administrator kontroli dostępu opartej na rolach - Powłoka Bash w usłudze Azure Cloud Shell lub interfejsie wiersza polecenia platformy Azure
Kroki przypisywania roli platformy Azure
Aby przypisać rolę, potrzeba trzech elementów: podmiotu zabezpieczeń, definicji roli i zakresu.
Krok 1. Określanie, kto potrzebuje dostępu
Rolę można przypisać do użytkownika, grupy, jednostki usługi lub tożsamości zarządzanej. Aby przypisać rolę, może być konieczne określenie unikatowego identyfikatora obiektu. Identyfikator ma format: 11111111-1111-1111-1111-111111111111. Identyfikator można uzyskać przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
Użytkownik
W przypadku użytkownika Entra firmy Microsoft pobierz główną nazwę użytkownika, taką jak patlong@contoso.com lub identyfikator obiektu użytkownika. Aby uzyskać identyfikator obiektu, możesz użyć az ad user show.
az ad user show --id "{principalName}" --query "id" --output tsv
Grupa
W przypadku grupy Entra firmy Microsoft potrzebny jest identyfikator obiektu grupy. Aby uzyskać identyfikator obiektu, możesz użyć polecenia az ad group show lub az ad group list.
az ad group show --group "{groupName}" --query "id" --output tsv
Główna usługa
W przypadku jednostki usługi Entra firmy Microsoft (tożsamości używanej przez aplikację) potrzebny jest identyfikator obiektu jednostki usługi. Aby uzyskać identyfikator obiektu, możesz użyć az ad sp list. W przypadku jednostki usługi użyj identyfikatora obiektu, zamiast identyfikatora aplikacji.
az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"
Tożsamość zarządzana
W przypadku tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika potrzebny jest identyfikator obiektu. Aby uzyskać identyfikator obiektu, możesz użyć az ad sp list.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Aby wyświetlić listę tożsamości zarządzanych przypisanych przez użytkownika, użyj az identity list.
az identity list
Krok 2. Wybieranie odpowiedniej roli
Uprawnienia są grupowane razem w role. Możesz wybrać z listy kilku wbudowanych ról platformy Azure lub użyć własnych ról niestandardowych. Najlepszym rozwiązaniem jest udzielanie dostępu z najniższymi wymaganymi uprawnieniami, dlatego należy unikać przypisywania szerszej roli.
Aby wyświetlić listę ról i uzyskać unikatowy identyfikator roli, możesz użyć az role definition list.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
Poniżej przedstawiono sposób wyświetlania listy szczegółów określonej roli.
az role definition list --name "{roleName}"
Aby uzyskać więcej informacji, zobacz Lista definicji ról Azure.
Krok 3. Identyfikowanie wymaganego zakresu
Platforma Azure oferuje cztery poziomy zakresu: zasób, grupę zasobów, subskrypcję i grupę zarządzania. Najlepszym rozwiązaniem jest udzielanie dostępu z najniższymi wymaganymi uprawnieniami, dlatego należy unikać przypisywania roli w szerszym zakresie. Aby uzyskać więcej informacji na temat zakresu, zobacz Omówienie zakresu.
Zakres zasobów
Aby określić zakres zasobów, potrzebny jest jego identyfikator. Identyfikator zasobu można znaleźć, przeglądając właściwości zasobu w witrynie Azure Portal. Identyfikator zasobu ma następujący format.
/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}
Zakres grupy zasobów
W przypadku zakresu grupy zasobów potrzebna jest nazwa grupy zasobów. Nazwę można znaleźć na stronie Grupy zasobów w portalu Azure lub użyć az group list.
az group list --query "[].{name:name}" --output tsv
Zakres subskrypcji
W przypadku zakresu subskrypcji potrzebny jest identyfikator subskrypcji. Identyfikator można znaleźć na stronie Subskrypcje w portalu Azure albo użyć polecenia az account list.
az account list --query "[].{name:name, id:id}" --output tsv
Zakres grupy zarządzania
W przypadku zakresu grupy zarządzania potrzebna jest nazwa grupy zarządzania. Nazwę można znaleźć na stronie Grupy zarządzania w portalu Azure lub użyć polecenia az account management-group list.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Krok 4. Przypisywanie roli
Aby przypisać rolę, użyj polecenia az role assignment create . W zależności od zakresu polecenie zwykle ma jeden z następujących formatów.
Zakres zasobów
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"
Zakres grupy zasobów
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Zakres subskrypcji
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"
Zakres grupy zarządzania
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"
Poniżej przedstawiono przykład danych wyjściowych podczas przypisywania roli Współtwórca maszyny wirtualnej do użytkownika w obrębie grupy zasobów.
{
"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"
}
Przykłady przypisywania ról
Przypisz rolę dla wszystkich kontenerów obiektów blob w zakresie zasobów konta magazynowego
Przypisuje rolę Współautor danych Blob w magazynie do jednostki usługi z identyfikatorem obiektu 55555555-5555-5555-5555-555555555555 w zakresie zasobów dla konta magazynu o nazwie 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"
Przydziel rolę dla określonego zasobu kontenera blob.
Przypisuje rolę Współautora danych magazynu BLOB jednostce usługi z identyfikatorem obiektu 55555555-5555-5555-5555-555555555555 w obrębie zasobu dla kontenera BLOB o nazwie 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"
Przypisywanie roli dla grupy w określonym zakresie zasobów sieci wirtualnej
Przypisuje rolę Kontrybutor maszyny wirtualnej grupie Ann Mack Team o identyfikatorze 22222222-2222-2222-2222-222222222222 na poziomie zasobów dla sieci wirtualnej o nazwie 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"
Przypisywanie roli użytkownika w zakresie grupy zasobów
Przypisuje rolę Współautor maszyny wirtualnej użytkownikowi w zakresie grupy zasobów patlong@contoso.com.
az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Przypisywanie roli dla użytkownika przy użyciu unikatowego identyfikatora roli w zakresie grupy zasobów
Istnieje kilka razy, gdy nazwa roli może ulec zmianie, na przykład:
- Używasz własnej roli niestandardowej i decydujesz się zmienić nazwę.
- Używasz roli podglądu, która ma (Preview) w nazwie. Gdy rola zostanie udostępniona, jej nazwa zostanie przemianowana.
Nawet jeśli nazwa roli zostanie zmieniona, identyfikator roli nie ulegnie zmianie. Jeśli używasz skryptów lub automatyzacji do tworzenia przypisań ról, najlepszym rozwiązaniem jest użycie unikatowego identyfikatora roli zamiast nazwy roli. W związku z tym, jeśli nazwa roli zostanie zmieniona, skrypty mają większe szanse na działanie.
Poniższy przykład przypisuje rolę Współautor maszyny wirtualnej użytkownikowi w zakresie grupy zasobów patlong@contoso.com.
az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Przypisywanie roli dla wszystkich kontenerów obiektów blob w zakresie grupy zasobów
Przypisuje rolę Współautor danych obiektu blob usługi Storage głównemu składnikowi usługi z identyfikatorem obiektu 55555555-5555-5555-5555-555555555555 w zakresie grupy zasobów 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"
Przypisywanie roli dla aplikacji w zakresie grupy zasobów
Przypisuje rolę Współautor maszyny wirtualnej dla aplikacji z identyfikatorem obiektu głównego usługi o identyfikatorze 44444444-4444-4444-4444-444444444444 w zakresie grupy zasobów 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"
Przypisywanie roli dla nowej jednostki usługi w zakresie grupy zasobów
Jeśli tworzysz nową jednostkę usługi i natychmiast spróbujesz przypisać rolę do tej jednostki usługi, przypisanie tej roli może zakończyć się niepowodzeniem w niektórych przypadkach. Jeśli na przykład użyjesz skryptu do utworzenia nowej tożsamości zarządzanej, a następnie spróbujesz przypisać rolę do tej jednostki usługi, przypisanie roli może zakończyć się niepowodzeniem. Przyczyną tego błędu jest prawdopodobnie opóźnienie replikacji. Jednostka usługi jest tworzona w jednym regionie; Jednak przypisanie roli może wystąpić w innym regionie, który jeszcze nie zreplikował jednostki usługi. Aby rozwiązać ten scenariusz, należy określić główny typ podmiotu podczas tworzenia przypisania roli.
Aby przypisać rolę, użyj az role assignment create, określ wartość --assignee-object-id, a następnie ustaw wartość --assignee-principal-type na ServicePrincipal.
az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Poniższy przykład przypisuje rolę Współuczestnik maszyny wirtualnej do zarządzanej tożsamości msi-test w zakresie grupy zasobów pharma-sales.
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"
Przypisywanie roli użytkownika w zakresie subskrypcji
Przypisuje rolę Czytelnik użytkownikowi w zakresie subskrypcji.
az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Przypisz rolę grupie w zakresie subskrypcji
Przypisuje rolę Czytelnik grupie Ann Mack Team o identyfikatorze 22222222-2222-2222-2222-222222222222 w zakresie subskrypcji.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Przypisywanie roli dla wszystkich kontenerów obiektów blob w zakresie subskrypcji
Przypisuje użytkownikowi rolę alain@example.com w zakresie subskrypcji.
az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Przypisz rolę użytkownikowi w kontekście grupy zarządzania
Przypisuje rolę Czytelnik rozliczeń użytkownikowi alain@example.com w ramach grupy zarządzania.
az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"