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 tjänstens huvudnamn 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 i Azure (Azure RBAC) Begränsningar
Enskild AD-identitet  az acr login i Azure CLI

Connect-AzContainerRegistry i Azure PowerShell
Interaktiv push/pull av utvecklare, testare Ja AD-token måste förnyas var tredje timme
AD-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
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 hämtning till Azure-tjänster

Ja Använd endast från välj Azure-tjänster som stöder hanterade identiteter för Azure-resurser
AKS-klusterhanterad identitet  Bifoga registret när AKS-klustret har skapats eller uppdaterats Obevakad hämtning till AKS-kluster i samma eller en annan prenumeration Nej, endast pull-åtkomst 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 Obevakad hämtning till AKS-kluster från registret i en annan AD-klientorganisation Nej, endast pull-åtkomst 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 hämta och push-åtkomst Enskilt konto per register, rekommenderas inte för flera användare
Lagringsplatsomfattande åtkomsttoken  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
Ja Inte integrerat med AD-identitet för närvarande

Individuell inloggning med Microsoft Entra-ID

När du arbetar med registret direkt, till exempel när du hämtar avbildningar till och push-ö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.

Dricks

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 login Azure-identiteter ger rollbaserad åtkomstkontroll i Azure (Azure RBAC). 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 Azure-roller och behörigheter. 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 med kommandot för att autentisera helm registry login med registret:

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

Tjänstens huvudnamn

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 (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. Tiden att leva för denna token är 3 timmar.

Bland de tillgängliga rollerna för ett containerregister finns:

  • AcrPull: pull

  • AcrPush: pull och push

  • Ägare: hämta, push-överföra och tilldela roller till andra användare

En fullständig lista över roller finns i Roller och behörigheter för Azure Container Registry.

Cli-skript för att skapa ett huvudnamn för tjänsten för autentisering med ett Azure-containerregister och mer information finns i Azure Container Registry-autentisering med tjänstens huvudnamn.

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 Portal 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 Portal 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 administratörskontots autentiseringsuppgifter mellan flera användare. Alla användare som autentiserar med administratörskontot visas som en enda 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. Det tar 60 sekunder att replikera och vara tillgänglig för att återskapa lösenord för administratörskonton. 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-enabled för kommandot az acr update i Azure CLI:

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

Du kan aktivera administratörsanvändaren i Azure Portal 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 Portal

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>

Kommentar

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 kan du läsa Installera Azure CLI.

Nästa steg