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 CLIConnect-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 CLIConnect-AzContainerRegistry i Azure PowerShellInstä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 CLIConnect-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 CLIConnect-AzContainerRegistry i Azure PowerShellKubernetes 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 login
anvä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 login
och 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.
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.