Verifiëren met een Azure-containerregister
Er zijn verschillende manieren om te verifiëren met een Azure-containerregister, die elk van toepassing is op een of meer scenario's voor registergebruik.
Aanbevolen manieren zijn onder andere:
- Rechtstreeks verifiëren bij een register via afzonderlijke aanmelding
- Toepassingen en containerorchestrators kunnen zonder toezicht of 'headless' verificatie uitvoeren met behulp van een Microsoft Entra-service-principal
Als u een containerregister gebruikt met Azure Kubernetes Service (AKS) of een ander Kubernetes-cluster, raadpleegt u Scenario's voor verificatie met Azure Container Registry vanuit Kubernetes.
Verificatieopties
De volgende tabel bevat beschikbare verificatiemethoden en typische scenario's. Zie de gekoppelde inhoud voor meer informatie.
Wijze | Verifiëren | Scenario's | Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) | Beperkingen |
---|---|---|---|---|
Afzonderlijke AD-identiteit | az acr login in Azure CLIConnect-AzContainerRegistry in Azure PowerShell |
Interactieve push/pull door ontwikkelaars, testers | Ja | AD-token moet elke 3 uur worden vernieuwd |
AD-service-principal | docker login az acr login in Azure CLIConnect-AzContainerRegistry in Azure PowerShellRegisteraanmeldingsinstellingen in API's of hulpprogramma's Kubernetes pull-geheim |
Push zonder toezicht vanuit CI/CD-pijplijn Onbeheerde pull naar Azure of externe services |
Ja | Standaard verlopen sp-wachtwoord is 1 jaar |
Beheerde identiteit voor Azure-resources | docker login az acr login in Azure CLIConnect-AzContainerRegistry in Azure PowerShell |
Push zonder toezicht vanuit Azure CI/CD-pijplijn Pull zonder toezicht naar Azure-services |
Ja | Alleen van bepaalde Azure-services gebruiken die beheerde identiteiten voor Azure-resources ondersteunen |
Beheerde identiteit van AKS-cluster | Register bijvoegen wanneer AKS-cluster is gemaakt of bijgewerkt | Onbeheerde pull naar AKS-cluster in hetzelfde of een ander abonnement | Nee, alleen pull-toegang | Alleen beschikbaar met AKS-cluster Kan niet worden gebruikt voor verificatie tussen tenants |
Service-principal voor AKS-cluster | Inschakelen wanneer een AKS-cluster is gemaakt of bijgewerkt | Onbeheerde pull naar AKS-cluster vanuit register in een andere AD-tenant | Nee, alleen pull-toegang | Alleen beschikbaar met AKS-cluster |
Gebruiker met beheerdersrechten | docker login |
Interactieve push/pull door individuele ontwikkelaar of tester Portalimplementatie van installatiekopieën van register naar Azure-app Service of Azure Container Instances |
Nee, altijd pull- en pushtoegang | Eén account per register, niet aanbevolen voor meerdere gebruikers |
Toegangstoken binnen het bereik van de opslagplaats | docker login az acr login in Azure CLIConnect-AzContainerRegistry in Azure PowerShellKubernetes pull-geheim |
Interactieve push/pull naar opslagplaats door individuele ontwikkelaar of tester Pull zonder toezicht uit de opslagplaats per afzonderlijk systeem of extern apparaat |
Ja | Momenteel niet geïntegreerd met AD-identiteit |
Individuele aanmelding met Microsoft Entra-id
Wanneer u rechtstreeks met uw register werkt, zoals het ophalen van installatiekopieën naar en het pushen van installatiekopieën van een ontwikkelwerkstation naar een register dat u hebt gemaakt, verifieert u zich met behulp van uw afzonderlijke Azure-identiteit. Meld u aan bij de Azure CLI met az login en voer vervolgens de opdracht az acr login uit:
az login
az acr login --name <acrName>
Wanneer u zich aanmeldt, az acr login
gebruikt de CLI het token dat is gemaakt toen u de sessie naadloos met uw register hebt geverifieerd az login
. Als u de verificatiestroom wilt voltooien, moeten de Docker CLI en docker-daemon worden geïnstalleerd en uitgevoerd in uw omgeving. az acr login
gebruikt de Docker-client om een Microsoft Entra-token in het docker.config
bestand in te stellen. Zodra u zich op deze manier hebt aangemeld, worden uw referenties in de cache opgeslagen en hebben volgende docker
opdrachten in uw sessie geen gebruikersnaam of wachtwoord nodig.
Tip
az acr login
Gebruik ook om een afzonderlijke identiteit te verifiëren wanneer u andere artefacten dan Docker-installatiekopieën naar uw register wilt pushen of ophalen, zoals OCI-artefacten.
Voor registertoegang is het token dat wordt az acr login
gebruikt gedurende 3 uur geldig. Daarom wordt u aangeraden u altijd aan te melden bij het register voordat u een docker
opdracht uitvoert. Als uw token verloopt, kunt u het vernieuwen met behulp van de az acr login
opdracht opnieuw om opnieuw te verifiëren.
Het gebruik met az acr login
Azure-identiteiten biedt op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). Voor sommige scenario's kunt u zich aanmelden bij een register met uw eigen afzonderlijke identiteit in Microsoft Entra ID of andere Azure-gebruikers met specifieke Azure-rollen en -machtigingen configureren. Voor scenario's tussen services of voor het afhandelen van de behoeften van een werkgroep of een ontwikkelwerkstroom waarvoor u geen afzonderlijke toegang wilt beheren, kunt u zich ook aanmelden met een beheerde identiteit voor Azure-resources.
az acr login with --expose-token
In sommige gevallen moet u zich verifiëren az acr login
wanneer de Docker-daemon niet wordt uitgevoerd in uw omgeving. U moet az acr login
bijvoorbeeld uitvoeren in een script in Azure Cloud Shell, dat de Docker CLI biedt, maar de Docker-daemon niet uitvoert.
Voer az acr login
voor dit scenario eerst uit met de --expose-token
parameter. Met deze optie wordt een toegangstoken weergegeven in plaats van u aan te melden via de Docker CLI.
az acr login --name <acrName> --expose-token
De uitvoer geeft het toegangstoken weer, afgekort hier:
{
"accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
"loginServer": "myregistry.azurecr.io"
}
Voor registerverificatie raden we u aan om de tokenreferentie op een veilige locatie op te slaan en aanbevolen procedures te volgen voor het beheren van docker-aanmeldingsreferenties . Sla bijvoorbeeld de tokenwaarde op in een omgevingsvariabele:
TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)
Voer vervolgens het volgende uit docker login
, waarbij u de gebruikersnaam doorgeeft 00000000-0000-0000-0000-000000000000
en het toegangstoken als wachtwoord gebruikt:
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
Op dezelfde manier kunt u het token gebruiken dat wordt geretourneerd door az acr login
de helm registry login
opdracht om te verifiëren met het register:
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Service-principal
Als u een service-principal toewijst aan uw register, kan uw toepassing of service deze gebruiken voor headless verificatie. Service-principals staan op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) toe aan een register en u kunt meerdere service-principals toewijzen aan een register. Met meerdere service-principals kunt u verschillende toegang voor verschillende toepassingen definiëren.
ACR-verificatietoken wordt gemaakt bij aanmelding bij de ACR en wordt vernieuwd bij volgende bewerkingen. De time to live voor dat token is 3 uur.
De beschikbare rollen voor een containerregister zijn onder andere:
AcrPull: pull
AcrPush: pull en push
Eigenaar: rollen ophalen, pushen en toewijzen aan andere gebruikers
Zie Azure Container Registry-rollen en -machtigingen voor een volledige lijst met rollen.
Voor CLI-scripts voor het maken van een service-principal voor verificatie met een Azure-containerregister en meer richtlijnen raadpleegt u Azure Container Registry-verificatie met service-principals.
Beheerdersaccount
Elk containerregister omvat een beheerdersaccount, dat standaard is uitgeschakeld. U kunt de gebruiker met beheerdersrechten inschakelen en de referenties ervan beheren in Azure Portal, of met behulp van de Azure CLI, Azure PowerShell of andere Azure-hulpprogramma's. Het beheerdersaccount heeft volledige machtigingen voor het register.
Het beheerdersaccount is momenteel vereist voor sommige scenario's voor het implementeren van een installatiekopieën van een containerregister naar bepaalde Azure-services. Het beheerdersaccount is bijvoorbeeld nodig wanneer u Azure Portal gebruikt om een containerinstallatiekopieën rechtstreeks vanuit een register te implementeren naar Azure Container Instances of Azure Web Apps for Containers.
Belangrijk
Het beheerdersaccount is bedoeld om één gebruiker toegang te bieden tot het register, voornamelijk voor testdoeleinden. Het wordt niet aangeraden om de referenties van het beheerdersaccount te delen tussen meerdere gebruikers. Alle gebruikers die zich met het beheerdersaccount verifiëren, worden weergegeven als één gebruiker met push- en pull-toegang tot het register. Als u dit account wijzigt of uitschakelt, wordt registertoegang uitgeschakeld voor alle gebruikers die de referenties gebruiken. Afzonderlijke identiteit wordt aanbevolen voor gebruikers en service-principals voor hoofdloze scenario's.
Het beheerdersaccount wordt geleverd met twee wachtwoorden, die beide opnieuw kunnen worden gegenereerd. Nieuwe wachtwoorden die zijn gemaakt voor beheerdersaccounts zijn onmiddellijk beschikbaar. Het opnieuw genereren van wachtwoorden voor beheerdersaccounts duurt 60 seconden om te repliceren en beschikbaar te zijn. Met twee wachtwoorden kunt u verbinding met het register onderhouden door het ene wachtwoord te gebruiken terwijl u het andere opnieuw genereert. Als het beheerdersaccount is ingeschakeld, kunt u de gebruikersnaam en het wachtwoord doorgeven aan de docker login
opdracht wanneer u wordt gevraagd om basisverificatie naar het register. Voorbeeld:
docker login myregistry.azurecr.io
Zie de referentie voor de docker-aanmeldingsopdracht voor aanbevolen procedures voor het beheren van aanmeldingsreferenties.
Als u de gebruiker met beheerdersrechten voor een bestaand register wilt inschakelen, kunt u de --admin-enabled
parameter van de opdracht az acr update in de Azure CLI gebruiken:
az acr update -n <acrName> --admin-enabled true
U kunt de gebruiker met beheerdersrechten in de Azure-portal inschakelen door in uw register te navigeren, toegangssleutels te selecteren onder INSTELLINGEN en vervolgens inschakelen onder Gebruiker beheerder.
Aanmelden met een alternatief containerhulpprogramma in plaats van Docker
In sommige scenario's moet u alternatieve containerhulpprogramma's gebruiken, zoals podman
in plaats van het algemene containerhulpprogramma docker
. Bijvoorbeeld: Docker is niet meer beschikbaar in RHEL 8 en 9, dus u moet overschakelen van containerhulpprogramma.
Het standaardcontainerhulpprogramma is ingesteld docker
op voor az acr login
opdrachten. Als u het standaardcontainerhulpprogramma niet instelt en de docker
opdracht ontbreekt in uw omgeving, wordt de volgende fout weergegeven:
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.
Als u het standaardcontainerhulpprogramma wilt wijzigen dat door de az acr login
opdracht wordt gebruikt, kunt u de omgevingsvariabele DOCKER_COMMAND
instellen. Bijvoorbeeld:
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Notitie
U hebt Azure CLI versie 2.59.0 of hoger geïnstalleerd en geconfigureerd om deze functie te kunnen gebruiken. Voer az --version
uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.