Co to są role niestandardowe na platformie Azure?
Czasami wbudowane role nie zapewniają dokładnego poziomu dostępu, którego potrzebujesz. Używając ról niestandardowych, można zdefiniować role odpowiadające określonym wymaganiom organizacji. Utworzone role niestandardowe platformy Azure można przypisywać do użytkowników, grup i jednostek usługi w zakresie subskrypcji, grupy zasobów lub zasobu.
W tej lekcji dowiesz się więcej o rolach niestandardowych w kontroli dostępu opartej na rolach (RBAC) platformy Azure.
Role firmy Microsoft Entra i platformy Azure
Role firmy Microsoft Entra i role platformy Azure są często mylone podczas pierwszej pracy z platformą Azure. Role firmy Microsoft Entra zapewniają mechanizm zarządzania uprawnieniami do zasobów firmy Microsoft Entra, takich jak konta użytkowników i hasła. Role platformy Azure oferują szereg możliwości precyzyjnego zarządzania zasobami tej platformy, takimi jak maszyny wirtualne.
W poniższej tabeli przedstawiono subtelne różnice między sposobem konfigurowania tych dwóch elementów i zarządzania nimi:
Role na platformie Azure | Role Microsoft Entra |
---|---|
Zarządzanie dostępem do zasobów platformy Azure, takich jak maszyny wirtualne, magazyn czy sieci | Zarządzanie dostępem do zasobów firmy Microsoft Entra, takich jak konta użytkowników i hasła |
Wiele poziomów zakresów (grupa zarządzania, subskrypcja, grupa zasobów, zasób) | Zakres obejmujący tylko poziom dzierżawy |
Informacje o rolach dostępne za pośrednictwem witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell, szablonów usługi Azure Resource Manager oraz interfejsu API REST | Informacje o rolach dostępne w witrynie Azure Admin Portal, Centrum administracyjne platformy Microsoft 365, Microsoft Graph, Microsoft Graph PowerShell |
W naszym scenariuszu potrzebujemy roli niestandardowej do zarządzania maszynami wirtualnymi platformy Azure w zakresie subskrypcji, dlatego musimy używać ról niestandardowych w kontroli dostępu opartej na rolach platformy Azure.
Przypisywanie i określanie zakresu ról niestandardowych
Użytkownicy z rolami administratora dostępu użytkowników lub właściciela mogą tworzyć lub przypisywać role niestandardowe w kontroli dostępu opartej na rolach platformy Azure.
Role niestandardowe można przypisać do:
Podmiot zabezpieczeń | Podsumowanie |
---|---|
Użytkownik | Osoba, która ma profil w identyfikatorze Entra firmy Microsoft |
Grupa | Zestaw użytkowników utworzonych w usłudze Microsoft Entra ID |
Jednostki usługi | Tożsamość zabezpieczeń, przy użyciu której aplikacje lub usługi uzyskują dostęp do określonych zasobów platformy Azure |
Tożsamość zarządzana | Tożsamość w usłudze Microsoft Entra ID, która jest automatycznie zarządzana przez platformę Azure |
Zakres przypisań i odpowiadające mu uprawnienia można określać dla różnych poziomów na platformie Azure. Dostępne zakresy:
- Subskrypcja
- Grupa zasobów
- Pojedynczy zasób
Definicja i struktura roli
Definicja roli niestandardowej stanowi kolekcję różnych uprawnień. Każda definicja obejmuje dozwolone operacje, takie jak odczyt, zapis czy usuwanie. Definicja składa się z następujących struktur:
{
"Name": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}
W poniższym przykładzie przedstawiono definicję roli Współautor :
{
"Name": "Contributor",
"Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"IsCustom": false,
"Description": "Lets you manage everything except access to resources.",
"Actions": [
"*"
],
"NotActions": [
"Microsoft.Authorization/*/Delete",
"Microsoft.Authorization/*/Write",
"Microsoft.Authorization/elevateAccess/Action",
"Microsoft.Blueprint/blueprintAssignments/write",
"Microsoft.Blueprint/blueprintAssignments/delete"
],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/"
]
}
Każdą definicję roli deklaruje się przy użyciu następującego formatu:
{Company}.{ProviderName}/{resourceType}/{action}
Część akcji zawiera zazwyczaj jedną z następujących akcji:
- *
- odczyt
- zapis
- action
- delete
Definiowanie roli niestandardowej do zarządzania maszynami wirtualnymi
Aby łatwiej dobrać uprawnienia, które powinna zawierać definicja roli, skorzystaj z listy operacji dostawców zasobów w narzędziu Azure Resource Manager. Poszukaj wbudowanych ról platformy Azure, które mają uprawnienia zbliżone do potrzebnych.
Przeglądanie wbudowanych ról
W naszym scenariuszu wbudowana rola Współautor maszyny wirtualnej ma więcej uprawnień niż wymagania pracowników, a logowanie administratora maszyny wirtualnej nie ma wystarczającej ilości.
Następujące polecenie interfejsu wiersza polecenia platformy Azure zwraca uprawnienia dla wbudowanej roli Współautor maszyny wirtualnej:
az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'
Poniższa lista zawiera uprawnienia dla wbudowanej roli Współautor maszyny wirtualnej:
[
"Microsoft.Authorization/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/locations/*",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.DevTestLab/schedules/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Network/applicationGateways/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatRules/join/action",
"Microsoft.Network/loadBalancers/probes/join/action",
"Microsoft.Network/loadBalancers/read",
"Microsoft.Network/locations/*",
"Microsoft.Network/networkInterfaces/*",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.RecoveryServices/locations/*",
"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
"Microsoft.RecoveryServices/Vaults/backupPolicies/read",
"Microsoft.RecoveryServices/Vaults/backupPolicies/write",
"Microsoft.RecoveryServices/Vaults/read",
"Microsoft.RecoveryServices/Vaults/usages/read",
"Microsoft.RecoveryServices/Vaults/write",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.SqlVirtualMachine/*",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Support/*"
]
Aby uzyskać tę listę w programie PowerShell, uruchom następujące polecenie:
Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json
W naszym scenariuszu chcemy roli niestandardowej, która umożliwia monitorowanie i ponowne uruchamianie maszyn wirtualnych dla określonej subskrypcji, dlatego chcemy uwzględnić następujące akcje w zakresie na poziomie subskrypcji:
- Dostęp do odczytu zasobów obliczeniowych, sieciowych i magazynowych
- Możliwość uruchamiania i ponownego uruchamiania maszyn wirtualnych
- Dostęp do grup zasobów w subskrypcji
- Dostęp do zasobów monitorowania
Istnieją pewne operacje w definicji roli Współautor maszyny wirtualnej, których możemy użyć, na przykład "Microsoft.Insights/alertRules/*"
do monitorowania, ale ponowne uruchomienie, a niektóre inne nie są wymienione jako akcje w tej definicji roli.
Znajdowanie operacji dostawcy zasobów
Akcję ponownego uruchamiania maszyny wirtualnej można znaleźć na liście operacji dostawcy zasobów usługi Azure Resource Manager lub uruchamiając następujące polecenie programu PowerShell w celu zwrócenia operacji dla maszyn wirtualnych:
Get-AzProviderOperation */virtualMachines/*
Na liście zostanie zwrócona następująca operacja ponownego uruchomienia:
Operation : Microsoft.Compute/virtualMachines/restart/action
OperationName : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName : Virtual Machines
Description : Restarts the virtual machine
IsDataAction : False
Aby uzyskać najnowszą listę operacji dostawcy zasobów, możesz użyć polecenia cmdlet programu Azure PowerShell Get-AzProviderOperation
. W interfejsie wiersza polecenia platformy Azure użyj polecenia az provider operation show
. Opublikowaną listę dostawców zasobów i operacji można znaleźć w zawartości RBAC platformy Azure w witrynie Docs.
Tworzenie definicji roli Operator maszyny wirtualnej
Załóżmy, że wybraliśmy potrzebne elementy, przeglądając powiązane wbudowane definicje ról oraz listę operacji dostawcy zasobów. Uzyskaliśmy następującą definicję naszej roli niestandardowej. Użyjemy tej definicji dla naszej roli niestandardowej.
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}