Dela via


Autentisera med ett Azure-containerregister

Det finns flera sätt att autentisera med ett Azure-containerregister, som var och en gäller för ett eller flera scenarier för registeranvändning.

Rekommenderade sätt är:

  • Autentisera till ett register direkt via individuell inloggning
  • Program och containerorkestrerare kan utföra obevakad eller "huvudlös" autentisering med hjälp av en serviceprincip i Microsoft Entra.

Om du använder ett containerregister med Azure Kubernetes Service (AKS) eller ett annat Kubernetes-kluster kan du läsa Scenarier för att autentisera med Azure Container Registry från Kubernetes.

Autentiseringsalternativ

I följande tabell visas tillgängliga autentiseringsmetoder och vanliga scenarier. Mer information finns i länkat innehåll.

Metod Autentisera Scenarier Rollbaserad åtkomstkontroll för Microsoft Entra (RBAC) Begränsningar
Enskild Microsoft Entra-identitet  az acr login i Azure CLI

Connect-AzContainerRegistry i "Azure PowerShell"
Interaktiv push/pull av utvecklare, testare Ja Microsoft Entra-token måste förnyas var tredje timme
Microsoft Entra-tjänstens huvudnamn  docker login

az acr login i Azure CLI

Connect-AzContainerRegistry i Azure PowerShell

Inställningar för registerinloggning i API:er eller verktyg

Kubernetes pull-hemlighet   
Obevakad push från CI/CD-pipeline

Obevakad hämtning till Azure eller externa tjänster
Ja Standardvärdet för SP-lösenord är 1 år
Microsoft Entra-hanterad identitet för Azure-resurser  docker login

az acr login i Azure CLI

Connect-AzContainerRegistry i Azure PowerShell
Obevakad push-överföring från Azure CI/CD-pipeline

Obevakad tillgång till Azure-tjänster

En lista över scenarier för tilldelning av hanterade identitetsroller finns i scenarierna för ACR-rolltilldelning.
Ja

Microsoft Entra RBAC-rolltilldelningar med inbyggda ACR-roller

Microsoft Entra-attributbaserad åtkomstkontroll (ABAC) för Microsoft Entra-baserade lagringsplatsbehörigheter 
Använd endast från vissa Azure-tjänster som stöder hanterade identiteter för Azure-resurser
Kubelet-hanterad identitet för AKS-klusternod  Bifoga registret när AKS-klustret har skapats eller uppdaterats Obevakad hämtning till AKS-klusternoden i samma eller en annan prenumeration Nej, endast åtkomst för att hämta data Endast tillgängligt med AKS-kluster

Det går inte att använda för autentisering mellan klientorganisationer
Huvudnamn för AKS-klustertjänsten  Aktivera när AKS-kluster har skapats eller uppdaterats Oövervakad hämtning till AKS-kluster från registret i en annan Entra-klientorganisation Nej, endast åtkomst för att hämta data Endast tillgängligt med AKS-kluster
Administratörsanvändare  docker login  Interaktiv push/pull av enskild utvecklare eller testare

Portaldistribution av avbildning från register till Azure App Service eller Azure Container Instances
Nej, alltid dra och tryckåtkomst Enskilt konto per register, rekommenderas inte för flera användare
Icke-Microsoft Entra-tokenbaserad lagringsplatsbehörighet  docker login

az acr login i Azure CLI

Connect-AzContainerRegistry i Azure PowerShell

Kubernetes pull-hemlighet 
Interaktiv push/pull till lagringsplats av enskilda utvecklare eller testare

Obevakad hämtning från lagringsplatsen av enskilda system eller externa enheter
Tokenbaserade lagringsplatsbehörigheter stöder inte Rolltilldelningar i Microsoft Entra RBAC.

För Microsoft Entra-baserade lagringsplatsbehörigheter, se Microsoft Entra-attributbaserad åtkomstkontroll (ABAC) för Microsoft Entra-baserade lagringsplatsbehörigheter i stället.
Inte integrerat med Microsoft Entra-identitet

Individuell inloggning med Microsoft Entra-ID

När du arbetar med registret direkt, till exempel när du hämtar avbildningar till och överför avbildningar från en utvecklingsarbetsstation till ett register som du har skapat, autentisera med hjälp av din enskilda Azure-identitet. Logga in på Azure CLI med az login och kör sedan kommandot az acr login :

az login
az acr login --name <acrName>

När du loggar in med az acr loginanvänder CLI den token som skapades när du körde az login för att smidigt autentisera sessionen med registret. För att slutföra autentiseringsflödet måste Docker CLI- och Docker-daemon installeras och köras i din miljö. az acr login använder Docker-klienten för att ange en Microsoft Entra-token i docker.config filen. När du har loggat på det här sättet cachelagras dina autentiseringsuppgifter och efterföljande docker kommandon i sessionen kräver inget användarnamn eller lösenord.

Tips/Råd

Använd az acr login även för att autentisera en enskild identitet när du vill skicka eller hämta andra artefakter än Docker-avbildningar till registret, till exempel OCI-artefakter.

För registeråtkomst är den token som används av az acr login giltig i 3 timmar, så vi rekommenderar att du alltid loggar in i registret innan du kör ett docker kommando. Om din token upphör att gälla kan du uppdatera den az acr login med hjälp av kommandot igen för att autentisera igen.

Användning med az acr loginAzure-identiteter ger rollbaserad åtkomstkontroll (RBAC) i Azure. I vissa scenarier kanske du vill logga in i ett register med din egen individuella identitet i Microsoft Entra-ID eller konfigurera andra Azure-användare med specifika roller. Se Översikt över Azure Container Registry Entra-behörigheter och roller. För scenarier mellan tjänster eller för att hantera behoven hos en arbetsgrupp eller ett utvecklingsarbetsflöde där du inte vill hantera individuell åtkomst kan du även logga in med en hanterad identitet för Azure-resurser.

az acr login with --expose-token

I vissa fall måste du autentisera med az acr login när Docker-daemonen inte körs i din miljö. Du kan till exempel behöva köra az acr login i ett skript i Azure Cloud Shell, som tillhandahåller Docker CLI men inte kör Docker-daemonen.

I det här scenariot kör du az acr login först med parametern --expose-token . Det här alternativet exponerar en åtkomsttoken i stället för att logga in via Docker CLI.

az acr login --name <acrName> --expose-token

Utdata visar åtkomsttoken, förkortad här:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

För registerautentisering rekommenderar vi att du lagrar tokenautentiseringsuppgifterna på en säker plats och följer rekommenderade metoder för att hantera autentiseringsuppgifter för Docker-inloggning . Du kan till exempel lagra tokenvärdet i en miljövariabel:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

Kör sedan docker loginoch skicka 00000000-0000-0000-0000-000000000000 som användarnamn och använd åtkomsttoken som lösenord:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

På samma sätt kan du använda token som returneras av az acr login tillsammans med helm registry login-kommandot för att autentisera mot registret.

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

Service Principal

Om du tilldelar ett huvudnamn för tjänsten till registret kan programmet eller tjänsten använda det för huvudlös autentisering. Tjänstens huvudnamn tillåter rollbaserad åtkomstkontroll i Azure (RBAC) till ett register, och du kan tilldela flera tjänsthuvudnamn till ett register. Med flera huvudnamn för tjänsten kan du definiera olika åtkomst för olika program.

ACR-autentiseringstoken skapas vid inloggning till ACR och uppdateras vid efterföljande åtgärder. Giltighetstiden för denna token är 3 timmar.

En lista över tillgängliga roller finns i Översikt över Azure Container Registry Entra-behörigheter och roller.

CLI-skript för att skapa en tjänstehuvudprincip för autentisering med ett Azure-containerregister, och för mer information se Azure Container Registry-autentisering med tjänstens huvudprinciper.

Administratörskonto

Varje containerregister innehåller ett administratörsanvändarkonto som är inaktiverat som standard. Du kan aktivera administratörsanvändaren och hantera dess autentiseringsuppgifter i Azure-portalen, eller med hjälp av Azure CLI, Azure PowerShell eller andra Azure-verktyg. Administratörskontot har fullständig behörighet till registret.

Administratörskontot krävs för närvarande för vissa scenarier för att distribuera en avbildning från ett containerregister till vissa Azure-tjänster. Administratörskontot behövs till exempel när du använder Azure-portalen för att distribuera en containeravbildning från ett register direkt till Azure Container Instances eller Azure Web Apps for Containers.

Viktigt!

Administratörskontot är utformat för att en enskild användare ska få åtkomst till registret, främst i testsyfte. Vi rekommenderar inte att du delar autentiseringsuppgifterna för administratörskontot mellan flera användare. Alla användare som autentiserar med administratörskontot visas som en enskild användare med push- och pull-åtkomst till registret. Om du ändrar eller inaktiverar det här kontot inaktiveras registeråtkomst för alla användare som använder dess autentiseringsuppgifter. Individuell identitet rekommenderas för användare och tjänstens huvudnamn för huvudlösa scenarier.

Administratörskontot har två lösenord som båda kan återskapas. Nya lösenord som skapats för administratörskonton är tillgängliga omedelbart. Att återskapa lösenord för administratörskonton kommer att ta 60 sekunder att replikeras och bli tillgängligt. Med två lösenord kan du underhålla anslutningen till registret med hjälp av ett lösenord medan du återskapar det andra. Om administratörskontot är aktiverat kan du skicka användarnamnet och lösenordet till docker login kommandot när du uppmanas att ange grundläggande autentisering i registret. Till exempel:

docker login myregistry.azurecr.io

Rekommenderade metoder för att hantera inloggningsuppgifter finns i kommandoreferensen för docker-inloggning .

Om du vill aktivera administratörsanvändaren för ett befintligt register kan du använda parametern --admin-enabledför kommandot az acr update i Azure CLI:

az acr update -n <acrName> --admin-enabled true

Du kan aktivera administratörsanvändaren i Azure-portalen genom att navigera i registret, välja Åtkomstnycklar under INSTÄLLNINGAR och sedan Aktivera under Administratörsanvändare.

Aktivera användargränssnittet för administratörer i Azure-portalen

Logga in med ett alternativt containerverktyg i stället för Docker

I vissa scenarier måste du använda alternativa containerverktyg som podman i stället för det vanliga containerverktyget docker. Till exempel: Docker är inte längre tillgängligt i RHEL 8 och 9, så du måste byta containerverktyg.

Standardcontainerverktyget är inställt på docker för az acr login kommandon. Om du inte anger standardcontainerverktyget och docker kommandot saknas i din miljö visas följande fel:

az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.

Om du vill ändra standardcontainerverktyget som az acr login kommandot använder kan du ange miljövariabeln DOCKER_COMMAND. Till exempel:

DOCKER_COMMAND=podman \
az acr login --name <acrName>

Anmärkning

Du behöver Azure CLI version 2.59.0 eller senare installerad och konfigurerad för att använda den här funktionen. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.

Nästa steg