Freigeben über


Verwenden von verwalteten Identitäten

Azure AD Managed Identities kann verwendet werden, um Azure CycleCloud zum Verwalten von Clustern in Ihrem Abonnement zu gestatten (als Alternative zur Verwendung eines Service Principal). Sie können auch CycleCloud-VMs zugewiesen werden, um den Zugriff auf Azure-Ressourcen (z. B. Azure Storage, Key Vault oder Azure Container Registry) zu ermöglichen.

CycleCloud-VM-Berechtigungen mit verwalteter Identität

CycleCloud automatisiert viele Aufrufe an den Azure Resource Manager für die Verwaltung von HPC-Clustern. Für diese Automatisierung müssen CycleCloud bestimmte Berechtigungen erteilt werden. Dieser Zugriff kann CycleCloud durch Konfigurieren eines Dienstprinzipals oder durch Zuweisen einer verwalteten Identität zur CycleCloud-VM gewährt werden.

Es wird im Allgemeinen empfohlen, entweder eine vom System zugewiesenen oder User-Assigned verwaltete Identität zu verwenden, diese Berechtigungen anstelle eines Dienstprinzipals zu erteilen.

Wenn Azure CycleCloud auf einer Azure-VM mit einer ihm zugewiesenen verwalteten Identität installiert wurde, verhält sich das Dialogfeld "Cloud-Anbieterkonto erstellen" geringfügig anders. Es wird ein neues Kontrollkästchen für Managed Identity angezeigt, und die Abonnement-ID wird mit dem Abonnement der Host-VM vorausgefüllt.

Verwaltete Abonnementidentitäten hinzufügen

Verwaltete Abonnementidentitäten hinzufügen

Es ist weiterhin möglich, den Standardsatz von Anmeldeinformationen einzugeben, indem Sie einfach das Kontrollkästchen Managed Identity deaktivieren. Auf diese Weise werden dem Formular die Standardfelder hinzugefügt. Darüber hinaus ist es vollkommen akzeptabel, eine separate Abonnement-IDzu verwenden; der bereitgestellte Wert ist nur der Bequemlichkeit halber vorgesehen.

Erstellen einer benutzerdefinierten Rolle und verwalteter Identität für CycleCloud

Die einfachste Option (mit ausreichenden Zugriffsrechten) besteht darin, die Mitwirkenderolle für das Abonnement der CycleCloud-VM als System-Assigned verwaltete Identität zuzuweisen. Die Rolle "Mitwirkender" hat jedoch eine höhere Berechtigungsstufe als CycleCloud erfordert. Eine benutzerdefinierte Rollen- kann erstellt und der VM zugewiesen werden.

Diese Rolle umfasst alle CycleCloud-Features:

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

Stellen Sie sicher, dass Sie <SubscriptionId> durch Ihre Abonnement-ID ersetzen. Diese Rolle ist auf ein Abonnement festgelegt, kann aber bei Bedarf auf eine einzelne Ressourcengruppe festgelegt werden. Beachten Sie auch, dass der Name für den Mandanten eindeutig sein muss.

Wichtig

Für die Verwendung einer benutzerdefinierten Rolle ist eine Microsoft Entra ID P1-Lizenz erforderlich. Um die richtige Lizenz für Ihre Anforderungen zu finden, lesen Sie Microsoft Entra-Pläne und -Preise.

Optionale Berechtigungen

Wenn Sie CycleCloud so festlegen, dass eine einzelne Ressourcengruppe pro Cluster verwendet wird, können Sie Folgendes aus actionsentfernen:

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

Wenn Sie CycleCloud nicht verwenden, um verwaltete Identitäten virtuellen Computern zuzuweisen, die sie in Clustern erstellt, können Sie folgendes aus actionsentfernen:

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

Warnung

Zukünftige Versionen von CycleCloud erfordern die Möglichkeit, verwaltete Identitäten VMs zuzuweisen, sodass das Entfernen dieser Berechtigungen nicht empfohlen wird.

Die Rolle erstellen

Eine Rolle kann mithilfe der Rollendefinitionen über die Azure CLI erstellt werden. Verwenden Sie diese Rolle, um eine Rollendefinition innerhalb des Azure-Mandanten zu erstellen. Sobald die Rolle im Mandanten vorhanden ist, weisen Sie die Rolle einer Identität mit geeignetem Umfang zu.

Unten finden Sie den grundlegenden Ablauf mit der Azure CLI.

# 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>

Jetzt ist die benutzerdefinierte Rolle zugewiesen und der Identität zugeordnet und kann mit einer VM verwendet werden.

Zuweisen von Rollen zu Cluster-VMs mit verwalteter Identität

Es ist üblich, dass Clusterknoten Zugriff auf Azure-Ressourcen benötigen. Viele Cluster benötigen beispielsweise Zugriff auf Azure Storage, Key Vault oder Azure Container Registries, um ihre Workload auszuführen. Es wird dringend empfohlen, die erforderlichen Zugriffsanmeldeinformationen mithilfe einer User-Assigned Managed Identity zu übergeben, anstatt Geheimnisse/Anmeldeinformationen über die Clusterkonfiguration an den Knoten weiterzugeben.

User-Assigned Verwaltete Identitäten können auf den Cluster-VMs mithilfe der Azure.Identities Node-Eigenschaft konfiguriert werden. Der Wert der Azure.Identities-Eigenschaft ist eine kommagetrennte Liste der Zeichenfolgen von verwalteten Identitätsressourcen-IDs.

[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
...