Udostępnij za pośrednictwem


Korzystanie z tożsamości zarządzanych

Tożsamości zarządzane przez Azure AD mogą służyć do nadawania uprawnień usłudze Azure CycleCloud do zarządzania klastrami w Twojej subskrypcji (zamiast używania jednostki usługi). Można je również przypisać do maszyn wirtualnych CycleCloud w celu zapewnienia dostępu do zasobów platformy Azure (takich jak magazyn, usługa Key Vault lub rejestry kontenerów platformy Azure).

Uprawnienia CycleCloud VM przy użyciu zarządzanej tożsamości

Usługa CycleCloud automatyzuje wiele wywołań usługi Azure Resource Manager na potrzeby zarządzania klastrami HPC. Ta automatyzacja wymaga udzielenia pewnych uprawnień usłudze CycleCloud. Dostęp do CycleCloud można nadać przez skonfigurowanie jednostki usługi (Service Principal) lub przypisanie tożsamości zarządzanej (Managed Identity) do maszyny wirtualnej CycleCloud.

Zazwyczaj zaleca się użycie przypisanej przez system lub User-Assigned tożsamości zarządzanej 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 zachowa się nieco inaczej. Dla tożsamości zarządzanej pojawi się nowe pole wyboru, a identyfikator subskrypcji zostanie wstępnie wypełniony subskrypcją maszyny wirtualnej hosta.

Dodaj tożsamości zarządzane subskrypcji

Dodaj tożsamości zarządzane subskrypcjami

Nadal można wprowadzić standardowy zestaw poświadczeń, usuwając zaznaczenie pola wyboru tożsamości zarządzanej. W tym celu do formularza zostaną dodane standardowe pola. Ponadto jest całkowicie akceptowalne 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. Rola współautora ma jednak wyższy poziom uprawnień niż usługa CycleCloud wymaga. Można utworzyć niestandardową rolę i przypisać ją do maszyny wirtualnej.

Ta rola obejmuje wszystkie funkcje usługi CycleCloud:

{
    "assignableScopes": [
      "/subscriptions/<SubscriptionId>"
    ],
    "description": "CycleCloud Orchestrator Role",
    "permissions": [
      {
        "actions": [
          "Microsoft.Authorization/*/read",
          "Microsoft.Authorization/roleAssignments/*",
          "Microsoft.Authorization/roleDefinitions/*",
          "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/write",
          "Microsoft.Resources/subscriptions/resourceGroups/delete",
          "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 <SubscriptionId>",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
}

Pamiętaj, aby zastąpić <SubscriptionId> identyfikatorem subskrypcji. Ta rola jest ograniczona do subskrypcji, ale może być ograniczona do pojedynczej grupy zasobów, jeśli jest to preferowane. Należy również pamiętać, że nazwa musi być unikatowa dla najemcy.

Ważny

Użycie roli niestandardowej wymaga licencji Microsoft Entra ID P1. Aby znaleźć odpowiednią licencję dla swoich wymagań, zobacz plany i cennik firmy Microsoft Entra.

Opcjonalne uprawnienia

Jeśli ograniczasz użycie CycleCloud do używania jednej grupy zasobów na każdą klasę, możesz usunąć następujące elementy z actions:

          "Microsoft.Resources/subscriptions/resourceGroups/write",
          "Microsoft.Resources/subscriptions/resourceGroups/delete",

Jeśli nie używasz usługi CycleCloud do przypisywania tożsamości zarządzanych do maszyn wirtualnych tworzonych w klastrach, możesz usunąć następujące elementy z actions:

          "Microsoft.Authorization/*/read",
          "Microsoft.Authorization/roleAssignments/*",
          "Microsoft.Authorization/roleDefinitions/*",

Ostrzeżenie

Przyszłe wersje usługi CycleCloud będą wymagać możliwości przypisywania tożsamości zarządzanych do maszyn wirtualnych, dlatego usunięcie tych uprawnień nie jest zalecane.

Tworzenie roli

Rolę można utworzyć na podstawie definicji ról za pomocą interfejsu wiersza polecenia platformy Azure . Użyj tej roli, aby utworzyć definicję roli w dzierżawie platformy Azure. Gdy rola istnieje w dzierżawie, przypisz rolę do tożsamości z właściwym 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 powiązana z 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

Węzły klastra często 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ę przekazywać poświadczenia dostępu wymagane przez tożsamość zarządzaną User-Assigned zamiast przekazywać tajemnice/poświadczenia do węzła za pośrednictwem konfiguracji klastra.

User-Assigned tożsamości zarządzane można skonfigurować na maszynach wirtualnych klastra przy użyciu właściwości węzła Azure.Identities. Wartość właściwości Azure.Identities to rozdzielona przecinkami lista 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
...