Korzystanie z tożsamości zarządzanych
Azure AD tożsamości zarządzane mogą służyć do uprawnienia usługi Azure CycleCloud do zarządzania klastrami w ramach subskrypcji (alternatywą dla używania jednostki usługi). Mogą one być również przypisane do maszyn wirtualnych CycleCloud w celu zapewnienia dostępu do zasobów platformy Azure (takich jak Magazyn, Key Vault lub Rejestry kontenerów platformy Azure).
Uprawnienia maszyny wirtualnej CycleCloud z tożsamością zarządzaną
Usługa CycleCloud automatyzuje wiele wywołań do usługi Azure Resource Manager na potrzeby zarządzania klastrami HPC. Ta automatyzacja wymaga udzielenia pewnych uprawnień usłudze CycleCloud. Ten dostęp może zostać udzielony usłudze CycleCloud przez skonfigurowanie jednostki usługi lub przypisanie tożsamości zarządzanej do maszyny wirtualnej CycleCloud.
Zazwyczaj zaleca się użycie tożsamości zarządzanejprzypisanej przez system lub przypisanej przez użytkownika w celu udzielenia tych uprawnień, a nie jednostki usługi.
Po zainstalowaniu usługi Azure CycleCloud na maszynie wirtualnej platformy Azure z przypisaną tożsamością zarządzaną okno dialogowe Tworzenie konta dostawcy usług w chmurze będzie działać nieco inaczej. Zostanie wyświetlone nowe pole wyboru tożsamości zarządzanej , a identyfikator subskrypcji zostanie wstępnie wypełniony subskrypcją maszyny wirtualnej hosta.
Nadal można wprowadzić standardowy zestaw poświadczeń, usuwając zaznaczenie pola wyboru Tożsamość zarządzana . W związku z tym do formularza zostaną dodane standardowe pola. Ponadto do przyjęcia jest użycie oddzielnego identyfikatora subskrypcji; podana wartość jest tylko dla wygody.
Tworzenie roli niestandardowej i tożsamości zarządzanej dla aplikacji CycleCloud
Najprostszą opcją (z wystarczającymi prawami dostępu) jest przypisanie roli współautora subskrypcji do maszyny wirtualnej CycleCloud jako tożsamości zarządzanej System-Assigned. Jednak rola współautora ma wyższy poziom uprawnień niż wymaga usługa CycleCloud. Rolę niestandardową można utworzyć i przypisać do maszyny wirtualnej.
Poniżej zamieszczono wystarczające zasady dla większości funkcji CycleCloud.
{
"assignableScopes": [
"/"
],
"description": "CycleCloud Orchestrator Role",
"permissions": [
{
"actions": [
"Microsoft.Commerce/RateCard/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/disks/*",
"Microsoft.Compute/images/read",
"Microsoft.Compute/locations/usages/read",
"Microsoft.Compute/register/action",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/*",
"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action",
"Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read",
"Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write",
"Microsoft.Network/*/read",
"Microsoft.Network/locations/*/read",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/publicIPAddresses/write",
"Microsoft.Network/publicIPAddresses/delete",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/register/action",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/resources/read",
"Microsoft.Resources/subscriptions/operationresults/read",
"Microsoft.Storage/*/read",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/register/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/write"
],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"Name": "CycleCloud",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
Ważne
Użycie roli niestandardowej wymaga licencji Azure AD — wersja Premium P1. Aby znaleźć odpowiednią licencję na twoje wymagania, zobacz Porównanie ogólnie dostępnych funkcji wersji Bezpłatna, Podstawowa i Premium.
Uprawnienia opcjonalne
Aby umożliwić usłudze CycleCloud przypisanie tożsamości zarządzanych do maszyn wirtualnych tworzonych w ramach klastrów, dodaj następujące polecenie "actions"
:
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
Aby umożliwić usłudze CycleCloud tworzenie grup zasobów na klaster i zarządzanie nimi (zalecane, jeśli jest to dozwolone przez zasady), dodaj następujące "actions"
polecenie:
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
Tworzenie roli
Rolę można utworzyć na podstawie definicji ról za pośrednictwem interfejsu wiersza polecenia platformy Azure . Ta rola służy do tworzenia definicji roli w dzierżawie platformy Azure. Po utworzeniu roli w dzierżawie przypisz rolę do tożsamości z odpowiednim zakresem.
Poniżej przedstawiono podstawowy przepływ przy użyciu interfejsu wiersza polecenia platformy Azure.
# Create a custom role definition
az role definition create --role-definition role.json
# Create user identity
az identity create --name <name>
# Assign the custom role to the identity with proper scope
az role assignment create --role <CycleCloudRole> --assignee-object-id <identity-id> --scope <subscription>
Teraz rola niestandardowa jest przypisywana i ograniczona do tożsamości i może być używana z maszyną wirtualną.
Przypisywanie ról do maszyn wirtualnych klastra przy użyciu tożsamości zarządzanej
Często węzły klastra wymagają dostępu do zasobów platformy Azure. Na przykład wiele klastrów wymaga dostępu do usługi Azure Storage, Key Vault lub rejestrów kontenerów platformy Azure w celu uruchomienia obciążenia. Zdecydowanie zaleca się przekazanie poświadczeń dostępu wymaganych przy użyciu tożsamości zarządzanej przypisanej przez użytkownika zamiast przekazywania wpisów tajnych/poświadczeń do węzła za pośrednictwem konfiguracji klastra.
User-Assigned tożsamości zarządzane można skonfigurować na maszynach wirtualnych klastra Azure.Identities
przy użyciu właściwości node. Wartość Azure.Identities
właściwości jest rozdzielaną przecinkami listą ciągów identyfikatora zasobu tożsamości zarządzanej:
[cluster sample]
...
[[node defaults]]
...
Azure.Identities = $ManagedServiceIdentity
...
[parameters Required Settings]
...
[[parameter ManagedServiceIdentity]]
ParameterType = Azure.ManagedIdentity
Label = MSI Identity
Description = The resource ID of the Managed Service Identity to apply to the nodes
...