Autentisera med ett Azure-containerregister

Det finns flera sätt att autentisera med ett Azure-containerregister, som vart och ett kan användas i ett eller flera registeranvändningsscenarier.

Rekommenderade sätt är:

  • Autentisera till ett register direkt via enskild inloggning
  • Program och containerorkestrerare kan utföra obevakad eller "huvudlös" autentisering med hjälp av ett Azure Active Directory(Azure AD)-tjänstens huvudnamn

Om du använder ett containerregister med Azure Kubernetes Service (AKS) eller ett annat Kubernetes-kluster, se 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 Så här autentiserar du Scenarier Azure RBAC (rollbaserad åtkomstkontroll) Begränsningar
Individuell AD-identitet az acr login i Azure CLI

Connect-AzContainerRegistryi Azure PowerShell
Interaktiv push/pull av utvecklare, testare Yes AD-token måste förnyas var tredje timme
AD-tjänstens huvudnamn docker login

az acr login i Azure CLI

Connect-AzContainerRegistryi Azure PowerShell

Inloggningsinställningar för registret i API:er eller verktyg

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

Obevakad pull till Azure eller externa tjänster
Yes 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-AzContainerRegistryi Azure PowerShell
Obevakad push från Azure CI/CD-pipeline

Obevakad pull till Azure-tjänster

Yes Använd endast från utvalda Azure-tjänster som stöder hanterade identiteter för Azure-resurser
Hanterad identitet för AKS-kluster Bifoga register när AKS-kluster skapas eller uppdateras Obevakad pull till AKS-kluster i samma eller en annan prenumeration Nej, endast pull-åtkomst Endast tillgängligt med AKS-kluster

Kan inte användas för autentisering mellan klientorganisationen
Tjänstens huvudnamn för AKS-kluster Aktivera när AKS-kluster skapas eller uppdateras Obevakad pull 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 registret till Azure App Service eller Azure Container Instances
Nej, hämta och push-åtkomst alltid Enskilt konto per register, rekommenderas inte för flera användare
Åtkomsttoken för lagringsplats docker login

az acr login i Azure CLI

Connect-AzContainerRegistryi Azure PowerShell

Kubernetes pull-hemlighet
Interaktiv push/pull till lagringsplatsen av enskild utvecklare eller testare

Obevakad pull från lagringsplatsen av enskilda system eller externa enheter
Yes För närvarande inte integrerad med AD-identitet

Individuell inloggning med Azure AD

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

az login
az acr login --name <acrName>

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

Tips

Använd ä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 az acr login OCI-artefakter.

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

Användning az acr login med Azure-identiteter ger rollbaserad åtkomstkontroll i Azure (Azure RBAC). I vissa fall kanske du vill logga in i ett register med din egen enskilda identitet i Azure AD 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 i en arbetsgrupp eller ett utvecklingsarbetsflöde där du inte vill hantera enskild åtkomst kan du också 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 i ett skript i Azure Cloud Shell, som tillhandahåller Docker CLI men inte az acr login kör Docker-daemonen.

I det här scenariot kör az acr login du först med --expose-token parametern . 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örkortat här:

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

För registerautentisering rekommenderar vi att du lagrar autentiseringsuppgifterna för token på en säker plats och följer rekommenderade metoder för att hantera autentiseringsuppgifter för Docker-inloggning. Lagra till exempel 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 som användarnamn och använd 00000000-0000-0000-0000-000000000000 åtkomsttoken som lösenord:

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

På samma sätt kan du använda den token som az acr login returneras av helm registry login med kommandot för att autentisera 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 tjänsthuvudnamn kan du definiera olika åtkomst för olika program.

De tillgängliga rollerna för ett containerregister är:

  • AcrPull: pull

  • AcrPush: pull och push

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

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

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, vilket ä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 kunna komma åt registret, främst i testsyfte. Vi rekommenderar inte att du delar autentiseringsuppgifterna för administratörskontot mellan flera användare. Alla användare som autentiseras 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. Enskilda identiteter rekommenderas för användare och tjänstens huvudnamn för scenarier utan huvudnamn.

Administratörskontot har två lösenord, som båda kan återskapas. Med två lösenord kan du upprätthålla anslutningen till registret genom att använda ett lösenord medan du återskapar det andra. Om administratörskontot är aktiverat kan du skicka användarnamnet och lösenordet till kommandot när du docker login tillfrågas om grundläggande autentisering till registret. 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 för --admin-enabled 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örsanvändare i Azure Portal

Nästa steg