Verifiëren met een Azure-containerregister
Er zijn verschillende manieren om te verifiëren met een Azure-containerregister, die allemaal van toepassing zijn op een of meer scenario's voor registergebruik.
Aanbevolen manieren zijn onder andere:
- Verifiëren bij een register rechtstreeks via afzonderlijke aanmelding
- Toepassingen en container-orchestrators kunnen verificatie zonder toezicht of headless uitvoeren met behulp van een Azure Active Directory service-principal (Azure AD)
Als u een containerregister gebruikt met Azure Kubernetes Service (AKS) of een ander Kubernetes-cluster, zie Scenario's voor verificatie met Azure Container Registry vanuit Kubernetes.
Verificatieopties
De volgende tabel bevat beschikbare verificatiemethoden en typische scenario's. Zie gekoppelde inhoud voor meer informatie.
| Methode | Verificatie | Scenario's | Azure RBAC (op rollen gebaseerd toegangsbeheer van Azure) | Beperkingen |
|---|---|---|---|---|
| Afzonderlijke AD-identiteit | az acr login in Azure CLIConnect-AzContainerRegistryin Azure PowerShell |
Interactieve push/pull door ontwikkelaars, testers | Yes | AD-token moet elke 3 uur worden vernieuwd |
| AD-service-principal | docker loginaz acr login in Azure CLIConnect-AzContainerRegistryin Azure PowerShellAanmeldingsinstellingen voor register in API's of hulpprogramma's Pull-geheim van Kubernetes |
Pushen zonder toezicht vanuit CI/CD-pijplijn Pull zonder toezicht naar Azure of externe services |
Yes | De standaardwaarde voor sp-wachtwoord verloopt 1 jaar |
| Beheerde identiteit voor Azure-resources | docker loginaz acr login in Azure CLIConnect-AzContainerRegistryin Azure PowerShell |
Pushen zonder toezicht vanuit Azure CI/CD-pijplijn Pull zonder toezicht naar Azure-services |
Yes | Alleen gebruiken bij bepaalde Azure-services die beheerde identiteiten voor Azure-resources ondersteunen |
| Beheerde identiteit van AKS-cluster | Register koppelen wanneer AKS-cluster wordt gemaakt of bijgewerkt | Pull zonder toezicht naar een 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 AKS-cluster wordt gemaakt of bijgewerkt | Pull zonder toezicht 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 afzonderlijke ontwikkelaars of tester Portalimplementatie van installatie afbeelding 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 |
| Toegang token met opslagplaatsbereik | docker loginaz acr login in Azure CLIConnect-AzContainerRegistryin Azure PowerShellPull-geheim van Kubernetes |
Interactieve push/pull naar opslagplaats door afzonderlijke ontwikkelaars of tester Onbeheerde pull uit opslagplaats door afzonderlijk systeem of extern apparaat |
Yes | Momenteel niet geïntegreerd met AD-identiteit |
Afzonderlijke aanmelding met Azure AD
Wanneer u rechtstreeks met uw register werkt, zoals het binnenhalen van afbeeldingen naar en het pushen van afbeeldingen van een ontwikkelwerkstation naar een register dat u hebt gemaakt, verifieert u met behulp van uw afzonderlijke Azure-identiteit. Meld u aan bij de Azure CLI met az loginen voer vervolgens de opdracht az acr login uit:
az login
az acr login --name <acrName>
Wanneer u zich aanmeldt met , gebruikt de CLI het token dat is gemaakt tijdens de uitvoering om uw sessie naadloos te verifiëren az acr login az login bij uw register. Om de verificatiestroom te voltooien, moeten de Docker CLI en Docker-daemon zijn geïnstalleerd en worden uitgevoerd in uw omgeving. az acr logingebruikt de Docker-client om een Azure Active Directory in het bestand in te docker.config stellen. Zodra u op deze manier hebt aangemeld, worden uw referenties in de cache opgeslagen en is voor volgende opdrachten in uw sessie geen gebruikersnaam of docker wachtwoord vereist.
Tip
Gebruik ook om een afzonderlijke identiteit te verifiëren wanneer u andere artefacten dan Docker-afbeeldingen naar uw register wilt pushen of pullen, zoals az acr login OCI-artefacten.
Voor registertoegang is het token dat wordt gebruikt door 3 uur geldig. Daarom raden we u aan u altijd aan te melden bij het register voordat u az acr login een opdracht gaat docker uitvoeren. Als uw token is verlopen, kunt u het vernieuwen door de opdracht opnieuw te gebruiken om az acr login opnieuw te worden geauthenticeerd.
Het az acr login gebruik van met Azure-identiteiten biedt op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). In sommige scenario's kunt u zich aanmelden bij een register met uw eigen afzonderlijke identiteit in Azure AD of andere Azure-gebruikers configureren met specifieke Azure-rollen en -machtigingen. Voor scenario's tussen verschillende service-omgevingen of voor het afhandelen van de behoeften van een werkgroep of een ontwikkelingswerkstroom waarbij 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 verifiëren met az acr login wanneer de Docker-daemon niet wordt uitgevoerd in uw omgeving. U moet bijvoorbeeld uitvoeren in een script in Azure Cloud Shell, dat de Docker CLI levert, maar de az acr login Docker-daemon niet wordt uitgevoerd.
Voer voor dit scenario eerst az acr login uit met de parameter --expose-token . Met deze optie wordt een toegangs token beschikbaar in plaats van u aan te melden via de Docker CLI.
az acr login --name <acrName> --expose-token
In de uitvoer wordt het toegangs token weergegeven, dat hier wordt afgekort:
{
"accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
"loginServer": "myregistry.azurecr.io"
}
Voor registerverificatie wordt u aangeraden de tokenreferenties op een veilige locatie op te slaan en de aanbevolen procedures voor het beheren van docker-aanmeldingsreferenties te volgen. Sla de tokenwaarde bijvoorbeeld op in een omgevingsvariabele:
TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)
Voer vervolgens docker login uit, door 00000000-0000-0000-0000-000000000000 als gebruikersnaam door te geven en het toegangs token als wachtwoord te gebruiken:
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password $TOKEN
Op dezelfde manier kunt u het token dat wordt geretourneerd door az acr login gebruiken met de opdracht om te verifiëren bij het helm registry login register:
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Service-principal
Als u een service-principal aan uw register toewijst, 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 toegangsmogelijkheden voor verschillende toepassingen definiëren.
De beschikbare rollen voor een containerregister zijn onder andere:
AcrPull: pull
AcrPush: pull en push
Eigenaar: rollen pullen, pushen en toewijzen aan andere gebruikers
Zie rollen en machtigingen voor een volledige Azure Container Registry rollen en machtigingen.
Zie verificatie met service-principals voor CLI-scripts voor het maken van een service-principal voor verificatie met een Azure Azure Container Registry-containerregisteren meer richtlijnen.
Beheerdersaccount
Elk containerregister bevat een beheerdersaccount, dat standaard is uitgeschakeld. U kunt de gebruiker met beheerdersrechten inschakelen en de referenties beheren in de 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 afbeelding van een containerregister naar bepaalde Azure-services. Het beheerdersaccount is bijvoorbeeld nodig wanneer u de Azure Portal gebruikt om een containerafbeelding rechtstreeks vanuit een register te implementeren naar Azure Container Instances of Azure Web Apps for Containers.
Belangrijk
Het beheerdersaccount is ontworpen voor één gebruiker om toegang te krijgen tot het register, voornamelijk voor testdoeleinden. U wordt aangeraden de referenties voor het beheerdersaccount niet te delen met meerdere gebruikers. Alle gebruikers die zich bij het beheerdersaccount authenticeren, worden weergegeven als één gebruiker met push- en pull-toegang tot het register. Als u dit account wilt wijzigen of uitschakelen, wordt registertoegang uitgeschakeld voor alle gebruikers die de referenties ervan gebruiken. Afzonderlijke identiteiten worden aanbevolen voor gebruikers en service-principals voor headless scenario's.
Het beheerdersaccount wordt voorzien van twee wachtwoorden, die beide opnieuw kunnen worden ge regenereerd. Met twee wachtwoorden kunt u verbinding met het register houden door één wachtwoord te gebruiken terwijl u het andere wachtwoord opnieuw maakt. Als het beheerdersaccount is ingeschakeld, kunt u de gebruikersnaam en het wachtwoord doorgeven aan de opdracht wanneer u wordt gevraagd om docker login basisverificatie voor het register. Bijvoorbeeld:
docker login myregistry.azurecr.io
Zie de naslag voor de opdracht docker login voor aanbevolen procedures voor het beheren van aanmeldingsreferenties.
Als u de gebruiker met beheerdersrechten wilt inschakelen voor een bestaand register, kunt u de parameter van de --admin-enabled opdracht az acr update in de Azure CLI gebruiken:
az acr update -n <acrName> --admin-enabled true
U kunt de gebruiker met beheerdersrechten inschakelen in Azure Portal door in het register te navigeren, Toegangssleutels te selecteren onder INSTELLINGEN en vervolgens Inschakelen onder Gebruiker met beheerdersrechten.
