Partager via


Utilisation des identités managées

Utilisez des identités managées Microsoft Entra pour accorder à Azure CycleCloud l’autorisation de gérer des clusters dans votre abonnement. Cette approche constitue une alternative à l’utilisation d’un principal de service. Attribuez des identités managées aux machines virtuelles CycleCloud pour fournir l’accès aux ressources Azure telles que le stockage, le coffre de clés ou les registres de conteneurs Azure.

Autorisations de machine virtuelle CycleCloud avec identité managée

CycleCloud automatise de nombreux appels à Azure Resource Manager pour gérer les clusters HPC. Cette automatisation a besoin de certaines autorisations pour CycleCloud. Vous pouvez accorder à CycleCloud cet accès en configurant un principal de service ou en affectant une identité managée à la machine virtuelle CycleCloud.

Nous vous recommandons d’utiliser une identité managée affectée par le système ou affectée par l’utilisateur pour accorder ces autorisations au lieu d’un principal de service.

Lorsque vous installez Azure CycleCloud sur une machine virtuelle Azure et que vous affectez une identité managée à la machine virtuelle, la boîte de dialogue Ajouter un abonnement fonctionne un peu différemment. La boîte de dialogue active et préélectionne l’option d’authentification d’identité managée . Il renseigne également l’ID d’abonnement avec l’abonnement pour la machine virtuelle hôte.

Ajouter des Identités Gérées d’Abonnement

Ajouter des Identités Gérées d’Abonnement

Vous pouvez toujours entrer l’ensemble standard d’informations d’identification en sélectionnant l’option d’authentification d’inscription d’application . Lorsque vous sélectionnez cette option, les champs standard apparaissent dans le formulaire. Vous pouvez également utiliser un AUTRE ID d’abonnement ; la valeur fournie est juste à des fins pratiques.

Lorsque vous utilisez une identité managée affectée par le système, laissez le champ ClientID vide. Toutefois, lorsque vous utilisez CycleCloud avec une identité managée User-Assigned, associez l’ID client à celui de l’identité managée spécifique souhaitée pour l’orchestration de cluster.

Accès au casier de stockage

Outre l’utilisation d’une identité managée pour l’orchestration de cluster sur la machine virtuelle CycleCloud, vous pouvez configurer CycleCloud pour affecter une identité managée affectée par l’utilisateur aux clusters pour le compte de stockage et l’accès au casier à partir de nœuds de cluster. Cette approche utilise l’identité managée affectée par l’utilisateur au lieu de jetons SAP dérivés de la clé d’accès partagé du compte de stockage.

Pour configurer des clusters afin qu’ils utilisent une identité managée attribuée par l’utilisateur plutôt que la clé d’accès partagé, créez une identité managée attribuée par l’utilisateur dédiée avec l’accès Lecteur de données Blob de stockage dans l’étendue du compte de stockage. Tout d’abord, créez le compte de stockage et l’identité managée affectée par l’utilisateur dans votre abonnement Azure. Ensuite, dans la section Configuration du stockage Locker de la boîte de dialogue Ajouter un abonnement , sélectionnez la nouvelle identité managée dans la liste déroulante Identité Locker et le compte de stockage dans la liste déroulante Compte de stockage .

Créer un rôle personnalisé et une identité managée pour CycleCloud

L’option la plus simple qui fournit des droits d’accès suffisants consiste à attribuer les rôles Contributor et Storage Blob Data Contributor de l’abonnement à la machine virtuelle CycleCloud en tant qu’identité managée attribuée par le système. Toutefois, le Contributor rôle a un niveau de privilège supérieur à celui requis par CycleCloud. Vous pouvez créer et attribuer un rôle personnalisé à la machine virtuelle. De même, attribuez le Storage Blob Data Contributor rôle à l’étendue du compte de stockage plutôt qu’à l’étendue de l’abonnement si vous avez déjà créé le compte de stockage.

Ce rôle couvre toutes les fonctionnalités 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/*/read",
          "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/blobServices/containers/delete",
          "Microsoft.Storage/storageAccounts/blobServices/containers/read",
          "Microsoft.Storage/storageAccounts/blobServices/containers/write",
          "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action",
          "Microsoft.Storage/storageAccounts/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/write"
        ],
        "dataActions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action"
        ],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "Name": "CycleCloud <SubscriptionId>",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
}

Veillez à remplacer <SubscriptionId> par votre ID d’abonnement. Vous limitez ce rôle à un abonnement, mais vous pouvez l’étendre à un seul groupe de ressources si vous préférez. Le nom doit être unique au locataire.

Important

Pour utiliser un rôle personnalisé, vous avez besoin d’une licence Microsoft Entra ID P1. Pour plus d’informations sur les licences, consultez les plans et les tarifs Microsoft Entra.

Autorisations facultatives

Si vous configurez CycleCloud pour utiliser un seul groupe de ressources pour chaque cluster, vous pouvez supprimer les autorisations suivantes : actions

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

Si vous n’utilisez pas CycleCloud pour affecter des identités managées aux machines virtuelles créées dans des clusters, vous pouvez supprimer les autorisations suivantes :actions

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

Avertissement

Les futures versions de CycleCloud nécessitent la possibilité d’affecter des identités managées aux machines virtuelles. Nous vous déconseillons de supprimer ces autorisations.

Création du rôle

Vous pouvez créer un rôle à partir des définitions de rôles à l’aide d’Azure CLI. Utilisez ce rôle pour créer une définition de rôle dans le locataire Azure. Lorsque le rôle existe dans le locataire, attribuez le rôle à une identité avec une portée appropriée.

L’exemple suivant montre le flux de base à l’aide d’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>

À présent, le rôle personnalisé est affecté et limité à l’identité. Vous pouvez l’utiliser avec une machine virtuelle.

Attribution de rôles à des machines virtuelles de cluster avec une identité managée

Les nœuds de cluster ont souvent besoin d’accéder aux ressources Azure. Par exemple, de nombreux clusters nécessitent l’accès au stockage Azure, au coffre de clés ou aux registres de conteneurs Azure pour exécuter leur charge de travail. Nous vous recommandons vivement d’utiliser une identité managéeUser-Assigned pour fournir des informations d’identification d’accès au lieu de transmettre des secrets ou des informations d’identification au nœud via la configuration du cluster.

Vous pouvez configurer des identités managées affectées par l’utilisateur sur les machines virtuelles de cluster à l’aide de la Azure.Identities propriété de nœud. Définissez la propriété Azure.Identities avec une liste de chaînes d'ID de ressource d'identité managée séparées par des virgules :

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