Usare un'identità gestita da Azure in Attività del Registro Azure Container
Abilitare un'identità gestita per risorse di Azure in un'attività del Registro Azure Container, in modo che l'attività possa accedere ad altre risorse di Azure senza dover fornire o gestire credenziali. Ad esempio, usare un'identità gestita per consentire a un passaggio di un’attività di eseguire il pull o il push di immagini del contenitore in un altro registro.
Questo articolo illustra come usare l'interfaccia della riga di comando di Azure per abilitare un'identità gestita assegnata dall'utente o assegnata dal sistema in un'attività del Registro Azure Container. È possibile usare Azure Cloud Shell o un'installazione locale dell'interfaccia della riga di comando di Azure. Se si preferisce l'interfaccia locale, è necessario usare la versione 2.0.68 o successive. Eseguire az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
A scopo illustrativo, i comandi di esempio in questo articolo usano az acr task create per creare un'attività di compilazione di immagini di base che abilita un'identità gestita. Per scenari di esempio su come accedere alle risorse protette da un'attività del Registro Azure Container tramite un'identità gestita, vedere:
- Autenticazione tra più registri
- Accedere a risorse esterne con segreti archiviati in Azure Key Vault
Perché usare un'identità gestita?
Un'identità gestita per risorse di Azure fornisce servizi di Azure selezionati con un'identità gestita automaticamente in Microsoft Entra ID. È possibile configurare un'attività del Registro Azure Container con un'identità gestita in modo che l'attività possa accedere ad altre risorse di Azure protette, senza passare credenziali nei passaggi dell'attività.
Esistono due tipi di identità gestite:
Identità assegnate dall'utente, che possono essere assegnate a più risorse e sono conservate per il tempo desiderato. Le identità assegnate dall'utente sono attualmente in anteprima.
Un'identità assegnata dal sistema, che è univoca per una risorsa specifica come un'attività del Registro Azure Container e ha la stessa durata della risorsa.
È possibile abilitare uno o entrambi i tipi di identità in un'attività del Registro Azure Container. Concedere all'identità l'accesso a un'altra risorsa, proprio come per qualsiasi entità di sicurezza. Quando l'attività viene eseguita, usa l'identità per accedere alla risorsa in tutti i passaggi dell'attività che richiedono l'accesso.
Procedura per usare un'identità gestita
Seguire questi passaggi generali per usare un'identità gestita con un'attività del Registro Azure Container.
1. (Facoltativo) Creare un'identità assegnata dall'utente
Se si prevede di usare un'identità assegnata dall'utente, usare un'identità esistente o crearne una usando l'interfaccia della riga di comando di Azure o altri strumenti di Azure. Ad esempio, usare il comando az identity create.
Se si prevede di usare solo un'identità assegnata dal sistema, ignorare questo passaggio. Si crea un'identità assegnata dal sistema durante la creazione dell’attività del Registro Azure Container.
2. Abilitare l'identità in un'attività del Registro Azure Container
Quando si crea un'attività del registro Azure Container, è possibile abilitare facoltativamente un'identità assegnata dall'utente, un'identità assegnata dal sistema o entrambe. Ad esempio, passare il parametro --assign-identity
quando si esegue il comando az acr task create nell'interfaccia della riga di comando di Azure.
Per abilitare un'identità assegnata dal sistema, passare --assign-identity
senza alcun valore o assign-identity [system]
. Il comando di esempio seguente crea un'attività Linux da un repository GitHub pubblico che compila l'immagine hello-world
e abilita un'identità gestita assegnata dal sistema:
az acr task create \
--image hello-world:{{.Run.ID}} \
--name hello-world --registry MyRegistry \
--context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
--file Dockerfile \
--commit-trigger-enabled false \
--assign-identity
Per abilitare un'identità assegnata dall'utente, passare --assign-identity
con un valore dell'ID della risorsa dell'identità. Il comando di esempio seguente crea un'attività Linux da un repository GitHub pubblico che compila l'immagine hello-world
e abilita un'identità gestita assegnata dall'utente:
az acr task create \
--image hello-world:{{.Run.ID}} \
--name hello-world --registry MyRegistry \
--context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
--file Dockerfile \
--commit-trigger-enabled false
--assign-identity <resourceID>
È possibile ottenere l'ID della risorsa dell'identità eseguendo il comando az identity show. L'ID della risorsa per l'ID myUserAssignedIdentity nel gruppo di risorse myResourceGroup è nel formato seguente:
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"
3. Concedere le autorizzazioni di identità per accedere ad altre risorse di Azure
A seconda dei requisiti dell'attività, concedere le autorizzazioni di identità per accedere ad altre risorse di Azure. Alcuni esempi:
- Assegnare l'identità gestita a un ruolo con autorizzazioni pull, push e pull o di altro tipo a un registro contenitori di destinazione in Azure. Per un elenco completo dei ruoli di registro, vedere Ruoli e autorizzazioni di Registro Azure Container.
- Assegnare l'identità gestita a un ruolo per leggere segreti in un insieme di credenziali delle chiavi di Azure.
Usare l'interfaccia della riga di comando di Azure o altri strumenti di Azure per gestire l'accesso alle risorse basato su ruoli. Ad esempio, eseguire il comando az role assignment create per assegnare all'identità un ruolo alla risorsa.
Nell'esempio seguente, le autorizzazioni di pull vengono assegnate a un’identità gestita da un registro contenitori. Il comando specifica l'ID entità dell'identità dell'attività e l'ID risorsa del registro di destinazione.
az role assignment create \
--assignee <principalID> \
--scope <registryID> \
--role acrpull
4. (Facoltativo) Aggiungere credenziali all'attività
Se l'attività richiede credenziali per eseguire il pull o il push di immagini in un altro registro personalizzato o per accedere ad altre risorse, aggiungere le credenziali all'attività. Eseguire il comando az acr task credential add per aggiungere credenziali e passare il parametro --use-identity
per indicare che l'identità può accedere alle credenziali.
Ad esempio, per aggiungere credenziali per un'identità assegnata dal sistema per l'autenticazione con il registro azure container targetregistry, passare use-identity [system]
:
az acr task credential add \
--name helloworld \
--registry myregistry \
--login-server targetregistry.azurecr.io \
--use-identity [system]
Per aggiungere credenziali per un'identità assegnata dall'utente per l'autenticazione con il registro targetregistry, passare use-identity
con un valore dell'ID client dell'identità. Ad esempio:
az acr task credential add \
--name helloworld \
--registry myregistry \
--login-server targetregistry.azurecr.io \
--use-identity <clientID>
È possibile ottenere l'ID client dell'identità eseguendo il comando az identity show. L'ID client è un GUID di formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Il parametro --use-identity
non è facoltativo se il registro ha l'accesso alla rete pubblica disabilitato e si basa solo su determinati servizi attendibili per eseguire attività del Registro Azure Container. Vedere esempio di Attività del Registro Azure Container come servizio attendibile.
5. Eseguire l'attività
Dopo aver configurato un'attività con un'identità gestita, eseguire l'attività. Ad esempio, per testare una delle attività create in questo articolo, attivarla manualmente usando il comando az acr task run. Se sono stati configurati trigger di attività automatica aggiuntivi, l'attività viene eseguita quando attivata automaticamente.
Passaggi successivi
In questo articolo si è appreso come abilitare e usare un'identità gestita assegnata dall'utente o assegnata dal sistema in un'attività del Registro Azure Container. Per gli scenari di accesso a risorse protette da un'attività del Registro Azure Container tramite un'identità gestita, vedere: