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 CLIConnect-AzContainerRegistryi Azure PowerShell |
Interaktiv push/pull av utvecklare, testare | Yes | AD-token måste förnyas var tredje timme |
| AD-tjänstens huvudnamn | docker loginaz acr login i Azure CLIConnect-AzContainerRegistryi Azure PowerShellInloggningsinstä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 loginaz acr login i Azure CLIConnect-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 loginaz acr login i Azure CLIConnect-AzContainerRegistryi Azure PowerShellKubernetes 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.
