Uso delle identità gestite
Le identità gestite di Azure AD possono essere usate per autorizzare Azure CycleCloud a gestire i cluster alla tua sottoscrizione (in alternativa all'uso di un'entità del servizio ). Possono anche essere assegnati alle VM CycleCloud per fornire l'accesso alle risorse di Azure, come Storage, Key Vault o i Registri dei contenitori di Azure.
Autorizzazioni VM di CycleCloud con identità gestita
CycleCloud automatizza molte chiamate ad Azure Resource Manager ai fini della gestione dei cluster HPC. Questa automazione richiede determinate autorizzazioni da concedere 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à assegnata dal sistema o un'identità gestita User-Assigned per concedere tali autorizzazioni anziché un'entità principale del servizio.
Quando Azure CycleCloud è stato installato in una macchina virtuale di Azure con un'identità gestita assegnata, la finestra di dialogo Create Cloud Provider Account si comporta in modo leggermente diverso. Sarà disponibile una nuova casella di spunta per identità gestita e l'ID della sottoscrizione verrà precompilato con la sottoscrizione della macchina virtuale host.
È 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 abbonamento separato ; il valore fornito è solo a titolo di comodità.
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 di collaboratore ha un livello di privilegi superiore rispetto a quello richiesto da CycleCloud. È possibile creare un ruolo personalizzato e assegnarlo alla macchina virtuale.
Questo ruolo copre tutte le funzionalità 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"
}
Assicurati di sostituire <SubscriptionId>
con l'ID della sottoscrizione. Questo ruolo è limitato a una sottoscrizione, ma può essere limitato a un singolo gruppo di risorse, se preferito. Si noti inoltre che il nome deve essere univoco per l'inquilino.
Importante
L'uso di un ruolo personalizzato richiede una licenza microsoft Entra ID P1. Per trovare la licenza appropriata per le tue esigenze, vedere piani e prezzi di Microsoft Entra.
Autorizzazioni facoltative
Se si definisce l'ambito CycleCloud per usare un singolo gruppo di risorse per ogni cluster, è possibile rimuovere quanto segue da actions
:
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
Se non si usa CycleCloud per assegnare identità gestite alle macchine virtuali create all'interno dei cluster, è possibile rimuovere quanto segue da actions
:
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
Avvertimento
Le versioni future di CycleCloud richiederanno la possibilità di assegnare identità gestite alle macchine virtuali, quindi la rimozione di queste autorizzazioni non è consigliata.
Creazione del ruolo
È possibile creare un ruolo dalle definizioni di ruolo tramite Azure CLI . Usare questo ruolo per creare una definizione di ruolo all'interno del tenant di Azure. Una volta che il ruolo è stato creato nel tenant, assegna 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>
Ora il ruolo personalizzato viene assegnato e ambito all'identità e può essere utilizzato con una VM.
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 Azure Storage, Key Vault o Azure Container Registries per eseguire il carico di lavoro. Si raccomanda vivamente di passare le credenziali di accesso necessarie usando un User-Assigned Identità gestita anziché passare segreti e credenziali al nodo tramite la configurazione del cluster.
User-Assigned Le Identità Gestite possono essere configurate nelle macchine virtuali del cluster usando la proprietà del nodo Azure.Identities
. Il valore della proprietà Azure.Identities
è un elenco di ID risorsa di Identità Gestita separati da virgole.
[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
...