Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 CLIConnect-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 loginaz 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 |
| Microsoft Entra-hanterad identitet för Azure-resurser | docker loginaz acr login i Azure CLIConnect-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 loginaz 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 |
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.
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.