Co to są role niestandardowe na platformie Azure?

Ukończone

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.

Diagram that shows relationship of Azure roles and Microsoft Entra roles.

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 Administracja istratora lub właściciela dostępu użytkowników 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

Diagram that shows the scopes for role assignment and their relationship to each other.

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
  • Usuń…

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 Administracja istratora maszyny wirtualnej nie ma wystarczającej liczby uprawnień.

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

Sprawdź swoją wiedzę

1.

Co obejmuje definicja roli niestandardowej na platformie Azure?

2.

Jakie polecenia pomagają określić, które operacje dodać do definicji roli niestandardowej?