Utilisation d’identités managées
Les identités managées Azure AD peuvent être utilisées pour autoriser Azure CycleCloud à gérer des clusters dans votre abonnement (comme alternative à l’utilisation d’un principal de service ). Ils peuvent également être affectés aux machines virtuelles CycleCloud pour fournir l’accès aux ressources Azure (telles que stockage, coffre de clés ou registres de conteneurs Azure).
Autorisations de machine virtuelle CycleCloud avec l’identité managée
CycleCloud automatise de nombreux appels à Azure Resource Manager à des fins de gestion des clusters HPC. Cette automatisation nécessite que certaines autorisations soient accordées à CycleCloud. Cet accès peut être accordé à CycleCloud en configurant un principal de service ou en affectant une Managed Identity à la machine virtuelle CycleCloud.
Il est généralement recommandé d'utiliser soit une identity assignée par le système , soit une Managed Identity User-Assigned pour accorder ces autorisations, plutôt qu'un principal de service.
Quand Azure CycleCloud a été installé sur une machine virtuelle Azure avec une identité managée qui lui est affectée, la boîte de dialogue Créer un compte de fournisseur de cloud se comporte légèrement différemment. Une nouvelle case à cocher sera disponible pour l’identité managée et l’ID d’abonnement sera préalablement rempli avec l’abonnement de la machine virtuelle hôte.
Il est toujours possible d’entrer l’ensemble standard d’informations d’identification en décochant simplement la case Identité managée. Dans ce cas, les champs standard seront ajoutés au formulaire. En outre, il est parfaitement acceptable d’utiliser un ID d’abonnement distinct; la valeur fournie est juste à des fins pratiques.
Créer un rôle personnalisé et une identité managée pour CycleCloud
L’option la plus simple (avec des droits d’accès suffisants) consiste à attribuer le rôle contributeur de l’abonnement à la machine virtuelle CycleCloud en tant qu’identité managée System-Assigned. Toutefois, le rôle contributeur a un niveau de privilège supérieur à celui requis par CycleCloud. Un rôle personnalisé peut être créé et affecté à la machine virtuelle.
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/*/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"
}
Veillez à remplacer <SubscriptionId>
par votre ID d’abonnement. Ce rôle est limité à un abonnement, mais il peut être étendu à un seul groupe de ressources si vous le souhaitez. Notez également que le nom doit être unique au locataire.
Important
L’utilisation d’un rôle personnalisé nécessite une licence Microsoft Entra ID P1. Pour trouver la licence appropriée pour vos besoins, consultez plans Microsoft Entra et la tarification.
Autorisations facultatives
Si vous appliquez CycleCloud pour utiliser un groupe de ressources unique par cluster, vous pouvez supprimer les éléments suivants de 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 qu’il crée dans des clusters, vous pouvez supprimer les éléments suivants de 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 à des machines virtuelles. Par conséquent, la suppression de ces autorisations n’est pas recommandée.
Création du rôle
Un rôle peut être créé à partir des définitions de rôles via l'Azure CLI. Utilisez ce rôle pour créer une définition de rôle dans le locataire Azure. Une fois que le rôle existe dans le locataire, assignez le rôle à une identité avec le champ d'application approprié.
Vous trouverez ci-dessous 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 attribué et limité à l’identité et peut être utilisé avec une machine virtuelle.
Attribution de rôles à des machines virtuelles de cluster avec une identité managée
Il est courant que les nœuds de cluster nécessitent l’accès 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. Il est fortement recommandé de transmettre les informations d’identification d’accès requises à l’aide d’une User-Assigned Managed Identity plutôt que de passer des secrets/informations d’identification au nœud via la configuration du cluster.
Les identités gérées User-Assigned peuvent être configurées sur les machines virtuelles du cluster à l’aide de la propriété de nœud Azure.Identities
. La valeur de la propriété Azure.Identities
est une liste séparée par des virgules de chaînes d’ID de ressource d’identité managée :
[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
...