Share via


Uso di identità gestite

Le identità gestite di Azure AD possono essere usate per autorizzare Azure CycleCloud a gestire i cluster nella sottoscrizione(in alternativa all'uso di un'entità servizio). Possono anche essere assegnati alle macchine virtuali CycleCloud per fornire l'accesso alle risorse di Azure, ad esempio Archiviazione, Key Vault o Registri Contenitori di Azure.

Autorizzazioni vm CycleCloud con identità gestita

CycleCloud automatizza molte chiamate al Resource Manager di Azure ai fini della gestione dei cluster HPC. Per questa automazione è necessario concedere determinate autorizzazioni a CycleCloud. Questo accesso può essere concesso a CycleCloud configurando un'entità servizio o assegnando un'identità gestita alla macchina virtuale CycleCloud.

In genere è consigliabile usare un'identità gestita assegnata dal sistema o assegnata dall'utente per concedere tali autorizzazioni anziché un'entità servizio.

Quando Azure CycleCloud è stato installato in una macchina virtuale di Azure con un'identità gestita assegnata, la finestra di dialogo Crea account cloud provider avrà un comportamento leggermente diverso. Sarà disponibile una nuova casella di controllo per Identità gestita e l'ID sottoscrizione verrà prepopolato con la sottoscrizione della macchina virtuale host.

Aggiungere identità gestite della sottoscrizione

Aggiungere identità gestite della sottoscrizione

È comunque possibile immettere il set standard di credenziali deselezionando semplicemente la casella di controllo Identità gestita . A tale scopo, i campi standard verranno aggiunti al modulo. Inoltre, è perfettamente accettabile usare un ID sottoscrizione separato; il valore specificato è solo per praticità.

Creare un ruolo personalizzato e un'identità gestita per CycleCloud

L'opzione più semplice (con diritti di accesso sufficienti) consiste nell'assegnare il ruolo collaboratore per la sottoscrizione alla macchina virtuale CycleCloud come identità gestita System-Assigned. Tuttavia, il ruolo collaboratore ha un livello di privilegi superiore a quello richiesto da CycleCloud. È possibile creare e assegnare un ruolo personalizzato alla macchina virtuale.

Di seguito è riportato un criterio sufficiente per la maggior parte delle funzionalità di 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.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"
}

Importante

L'uso di un ruolo personalizzato richiede una licenza Azure AD Premium P1. Per trovare la licenza appropriata per i requisiti, vedere Confronto delle funzionalità disponibili a livello generale delle edizioni Free, Basic e Premium.

Autorizzazioni facoltative

Per abilitare CycleCloud per assegnare identità gestite alle macchine virtuali create all'interno dei cluster, aggiungere quanto segue "actions":

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

Per abilitare CycleCloud per creare e gestire gruppi di risorse per ogni cluster (consigliato, se consentito dai criteri), aggiungere quanto segue "actions":

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

Creazione del ruolo

È possibile creare un ruolo dalle definizioni di ruolo tramite l'interfaccia della riga di comando di Azure . Usare questo ruolo per creare una definizione di ruolo all'interno del tenant di Azure. Una volta che il ruolo esiste nel tenant, assegnare il ruolo a un'identità con ambito appropriato.

Di seguito è riportato il flusso di base usando l'interfaccia della riga di comando di 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>

A questo momento il ruolo personalizzato viene assegnato e con ambito all'identità e può essere usato con una macchina virtuale.

Assegnazione di ruoli alle macchine virtuali del cluster con identità gestita

È comune che i nodi del cluster richiedano l'accesso alle risorse di Azure. Ad esempio, molti cluster richiedono l'accesso ad Archiviazione di Azure, Key Vault o Registri Azure Container per eseguire il carico di lavoro. È consigliabile passare le credenziali di accesso necessarie usando un'identità gestita assegnata dall'utente anziché passare segreti/credenziali al nodo tramite la configurazione del cluster.

User-Assigned le identità gestite possono essere configurate nelle macchine virtuali del cluster usando la Azure.Identities proprietà node. Il valore della Azure.Identities proprietà è un elenco delimitato da virgole di stringhe ID risorsa identità gestita:

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