Använda en Azure-hanterad identitet i ACR-uppgifter

Aktivera en hanterad identitet för Azure-resurser i en ACR-uppgift, så att aktiviteten kan komma åt andra Azure-resurser utan att behöva ange eller hantera autentiseringsuppgifter. Använd till exempel en hanterad identitet för att aktivera ett uppgiftssteg för att hämta eller skicka containeravbildningar till ett annat register.

I den här artikeln får du lära dig hur du använder Azure CLI för att aktivera en användartilldelad eller systemtilldelad hanterad identitet för en ACR-uppgift. Du kan använda Azure Cloud Shell eller en lokal installation av Azure CLI. Om du vill använda den lokalt krävs version 2.0.68 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

I illustrationssyfte använder exempelkommandona i den här artikeln az acr task create för att skapa en grundläggande avbildningsskapandeuppgift som möjliggör en hanterad identitet. Exempelscenarier för åtkomst till skyddade resurser från en ACR-uppgift med hjälp av en hanterad identitet finns i:

Varför ska jag använda en hanterad identitet?

En hanterad identitet för Azure-resurser tillhandahåller valda Azure-tjänster med en automatiskt hanterad identitet i Microsoft Entra-ID. Du kan konfigurera en ACR-uppgift med en hanterad identitet så att uppgiften kan komma åt andra skyddade Azure-resurser utan att skicka autentiseringsuppgifter i uppgiftsstegen.

Hanterade identiteter är av två typer:

  • Användartilldelade identiteter, som du kan tilldela till flera resurser och spara så länge du vill. Användartilldelade identiteter är för närvarande i förhandsversion.

  • En systemtilldelad identitet, som är unik för en specifik resurs, till exempel en ACR-uppgift och som varar under resursens livslängd.

Du kan aktivera någon av eller båda typerna av identiteter i en ACR-uppgift. Ge identiteten åtkomst till en annan resurs, precis som alla säkerhetsobjekt. När aktiviteten körs använder den identiteten för att komma åt resursen i alla aktivitetssteg som kräver åtkomst.

Steg för att använda en hanterad identitet

Följ de här stegen på hög nivå för att använda en hanterad identitet med en ACR-uppgift.

1. (Valfritt) Skapa en användartilldelad identitet

Om du planerar att använda en användartilldelad identitet använder du en befintlig identitet eller skapar identiteten med hjälp av Azure CLI eller andra Azure-verktyg. Använd till exempel kommandot az identity create .

Om du bara planerar att använda en systemtilldelad identitet hoppar du över det här steget. Du skapar en systemtilldelad identitet när du skapar ACR-uppgiften.

2. Aktivera identitet för en ACR-uppgift

När du skapar en ACR-uppgift kan du aktivera en användartilldelad identitet, en systemtilldelad identitet eller båda. Skicka till exempel parametern --assign-identity när du kör kommandot az acr task create i Azure CLI.

Om du vill aktivera en systemtilldelad identitet skickar du --assign-identity utan värde eller assign-identity [system]. Följande exempelkommando skapar en Linux-uppgift från en offentlig GitHub-lagringsplats som skapar avbildningen hello-world och aktiverar en systemtilldelad hanterad identitet:

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

Om du vill aktivera en användartilldelad identitet skickar du --assign-identity med ett värde för identitetens resurs-ID . Följande exempelkommando skapar en Linux-uppgift från en offentlig GitHub-lagringsplats som skapar avbildningen hello-world och aktiverar en användartilldelad hanterad identitet:

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>

Du kan hämta resurs-ID:t för identiteten genom att köra kommandot az identity show . Resurs-ID:t för ID myUserAssignedIdentity i resursgruppen myResourceGroup är av formatet:

"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"

3. Bevilja identitetsbehörighet för att få åtkomst till andra Azure-resurser

Beroende på kraven för din uppgift beviljar du identitetsbehörighet för att få åtkomst till andra Azure-resurser. Exempel:

  • Tilldela den hanterade identiteten en roll med pull-, push- och pull-behörigheter eller andra behörigheter till ett målcontainerregister i Azure. Du hittar en komplett lista med registerroller i Roller och behörigheter i Azure Container Registry.
  • Tilldela den hanterade identiteten en roll för att läsa hemligheter i ett Azure-nyckelvalv.

Använd Azure CLI eller andra Azure-verktyg för att hantera rollbaserad åtkomst till resurser. Kör till exempel kommandot az role assignment create för att tilldela identiteten en roll till resursen.

I följande exempel tilldelas en hanterad identitet behörighet att hämta från ett containerregister. Kommandot anger huvud-ID:t för uppgiftsidentiteten och resurs-ID:t för målregistret.

az role assignment create \
  --assignee <principalID> \
  --scope <registryID> \
  --role acrpull

4. (Valfritt) Lägg till autentiseringsuppgifter till uppgiften

Om din uppgift behöver autentiseringsuppgifter för att hämta eller skicka avbildningar till ett annat anpassat register eller för att få åtkomst till andra resurser lägger du till autentiseringsuppgifter i uppgiften. Kör kommandot az acr task credential add för att lägga till autentiseringsuppgifter och skicka parametern --use-identity för att ange att identiteten kan komma åt autentiseringsuppgifterna.

Om du till exempel vill lägga till autentiseringsuppgifter för en systemtilldelad identitet för att autentisera med Azure-containerregistrets målregister skickar du use-identity [system]:

az acr task credential add \
    --name helloworld \
    --registry myregistry \
    --login-server targetregistry.azurecr.io \
    --use-identity [system]

Om du vill lägga till autentiseringsuppgifter för en användartilldelad identitet för att autentisera med registermålregistratorn skickar use-identity du med värdet för identitetens klient-ID. Till exempel:

az acr task credential add \
    --name helloworld \
    --registry myregistry \
    --login-server targetregistry.azurecr.io \
    --use-identity <clientID>

Du kan hämta klient-ID:t för identiteten genom att köra kommandot az identity show . Klient-ID:t är ett GUID för formuläret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Parametern --use-identity är inte valfri om registret har åtkomst till det offentliga nätverket inaktiverat och endast förlitar sig på vissa betrodda tjänster för att köra ACR-uppgifter. Se exempel på ACR-uppgifter som en betrodd tjänst.

5. Kör uppgiften

När du har konfigurerat en uppgift med en hanterad identitet kör du uppgiften. Om du till exempel vill testa en av de uppgifter som skapas i den här artikeln utlöser du den manuellt med kommandot az acr task run . Om du har konfigurerat ytterligare automatiserade aktivitetsutlösare körs aktiviteten när den utlöses automatiskt.

Nästa steg

I den här artikeln har du lärt dig hur du aktiverar och använder en användartilldelad eller systemtilldelad hanterad identitet för en ACR-uppgift. Scenarier för åtkomst till skyddade resurser från en ACR-uppgift med hjälp av en hanterad identitet finns i: