Een door Azure beheerde identiteit gebruiken om te verifiëren bij een Azure-containerregister
Gebruik een beheerde identiteit voor Azure-resources om te verifiëren bij een Azure-containerregister vanuit een andere Azure-resource, zonder dat u registerreferenties hoeft op te geven of te beheren. Stel bijvoorbeeld een door de gebruiker toegewezen of door het systeem toegewezen beheerde identiteit in op een Linux-VM om toegang te krijgen tot containerinstallatiekopieën uit uw containerregister, net zo eenvoudig als u een openbaar register gebruikt. U kunt ook een Azure Kubernetes Service-cluster instellen om de beheerde identiteit te gebruiken om containerinstallatiekopieën op te halen uit Azure Container Registry voor podimplementaties.
Voor dit artikel leert u meer over beheerde identiteiten en het volgende:
- Een door de gebruiker toegewezen of door het systeem toegewezen identiteit inschakelen op een Azure-VM
- De identiteit toegang verlenen tot een Azure-containerregister
- De beheerde identiteit gebruiken om toegang te krijgen tot het register en een containerinstallatiekopie op te halen
Als u de Azure-resources wilt maken, moet u voor dit artikel Azure CLI versie 2.0.55 of hoger uitvoeren. 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.
Als u een containerregister wilt instellen en er een containerinstallatiekopieën naar wilt pushen, moet Docker ook lokaal zijn geïnstalleerd. Docker biedt pakketten die eenvoudig Docker configureren op elk macOS-, Windows- of Linux-systeem.
Waarom een beheerde identiteit gebruiken?
Als u niet bekend bent met de functie voor beheerde identiteiten voor Azure-resources, raadpleegt u dit overzicht.
Nadat u geselecteerde Azure-resources met een beheerde identiteit hebt ingesteld, geeft u de identiteit de toegang tot een andere resource, net zoals elke beveiligingsprincipaal. Wijs bijvoorbeeld een beheerde identiteit een rol toe met pull-, push- en pull-machtigingen of andere machtigingen voor een privéregister in Azure. (Zie voor een volledige lijst met registerrollen Azure Container Registry-rollen en -machtigingen.) U kunt een identiteit toegang geven tot een of meer resources.
Gebruik vervolgens de identiteit om te verifiëren bij elke service die Ondersteuning biedt voor Microsoft Entra-verificatie, zonder referenties in uw code. Kies hoe u verifieert met behulp van de beheerde identiteit, afhankelijk van uw scenario. Als u de identiteit wilt gebruiken voor toegang tot een Azure-containerregister vanaf een virtuele machine, verifieert u zich met Azure Resource Manager.
Een containerregister maken
Als u nog geen Azure-containerregister hebt, maakt u een register en pusht u er een voorbeeldcontainerinstallatiekopieën naartoe. Zie Quickstart: Een privécontainerregister maken met behulp van de Azure CLI voor stappen.
In dit artikel wordt ervan uitgegaan dat u de aci-helloworld:v1
containerinstallatiekopieën hebt opgeslagen in uw register. In de voorbeelden wordt een registernaam van myContainerRegistry gebruikt. Vervang in latere stappen door uw eigen register- en installatiekopieën.
Een VM met Docker maken
Maak een virtuele Ubuntu-machine met Docker-functionaliteit. U moet ook de Azure CLI installeren op de virtuele machine. Als u al een virtuele Azure-machine hebt, kunt u deze stap overslaan om de virtuele machine te maken.
Implementeer een standaard virtuele Ubuntu Azure-machine met az vm create. In het volgende voorbeeld wordt een VIRTUELE machine met de naam myDockerVM gemaakt in een bestaande resourcegroep met de naam myResourceGroup:
az vm create \
--resource-group myResourceGroup \
--name myDockerVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Het duurt enkele minuten voordat de virtuele machine wordt gemaakt. Wanneer de opdracht is voltooid, noteert u de publicIpAddress
weergave van de Azure CLI. Gebruik dit adres om SSH-verbindingen met de virtuele machine te maken.
Docker installeren op de VIRTUELE machine
Als u Docker-containers op uw virtuele machine wilt uitvoeren, moet u Docker installeren. Deze sectie bevat de stappen voor het installeren van Docker op een Ubuntu-VM, zodat uw VM gereed is om containerinstallatiekopieën op te halen en uit te voeren vanuit uw Azure Container Registry.
Nadat de VM is uitgevoerd, maakt u een SSH-verbinding met de virtuele machine. Vervang publicIpAddress door het openbare IP-adres van uw VIRTUELE machine.
ssh azureuser@publicIpAddress
Voer de volgende opdracht uit om Docker te installeren op de virtuele machine:
sudo apt update
sudo apt install docker.io -y
Voer na de installatie de volgende opdracht uit om te controleren of Docker correct wordt uitgevoerd op de VM:
sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
De Azure CLI installeren
Volg de stappen in Azure CLI installeren met apt om de Azure CLI op uw virtuele Ubuntu-machine te installeren. Zorg ervoor dat u versie 2.0.55 of hoger voor dit artikel installeert.
Sluit de SSH-sessie af.
Voorbeeld 1: Toegang met een door de gebruiker toegewezen identiteit
Een identiteit maken
Maak een identiteit in uw abonnement met behulp van de opdracht az identity create . U kunt dezelfde resourcegroep gebruiken die u eerder hebt gebruikt om het containerregister of de virtuele machine of een andere te maken.
az identity create --resource-group myResourceGroup --name myACRId
Als u de identiteit in de volgende stappen wilt configureren, gebruikt u de opdracht az identity show om de resource-id en service-principal-id van de identiteit op te slaan in variabelen.
# Get resource ID of the user-assigned identity
userID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)
# Get service principal ID of the user-assigned identity
spID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)
Omdat u de id van de identiteit in een latere stap nodig hebt wanneer u zich aanmeldt bij de CLI vanaf uw virtuele machine, geeft u de waarde weer:
echo $userID
De id is van het formulier:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId
De VIRTUELE machine configureren met de identiteit
Met de volgende opdracht az vm identity assign configureert u uw Docker-VM met de door de gebruiker toegewezen identiteit:
az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID
Identiteit toegang verlenen tot het containerregister
Configureer nu de identiteit voor toegang tot uw containerregister. Gebruik eerst de opdracht az acr show om de resource-id van het register op te halen:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Gebruik de opdracht az role assignment create om de AcrPull-rol toe te wijzen aan de identiteit. Deze rol biedt pull-machtigingen voor het register. Als u zowel pull- als pushmachtigingen wilt opgeven, wijst u de rol AcrPush toe.
az role assignment create --assignee $spID --scope $resourceID --role acrpull
De identiteit gebruiken om toegang te krijgen tot het register
SSH naar de virtuele Docker-machine die is geconfigureerd met de identiteit. Voer de volgende Azure CLI-opdrachten uit met behulp van de Azure CLI die op de VIRTUELE machine is geïnstalleerd.
Verifieer eerst bij de Azure CLI met az login, met behulp van de identiteit die u hebt geconfigureerd op de virtuele machine. Vervang <userID>
hiervoor de id van de identiteit die u in een vorige stap hebt opgehaald.
az login --identity --username <userID>
Verifieer vervolgens bij het register met az acr login. Wanneer u deze opdracht gebruikt, gebruikt de CLI het Active Directory-token dat is gemaakt toen u de sessie naadloos hebt geverifieerd az login
met het containerregister. (Afhankelijk van de installatie van uw VIRTUELE machine moet u deze opdracht en docker-opdrachten mogelijk uitvoeren met sudo
.)
az acr login --name myContainerRegistry
Er wordt een Login succeeded
bericht weergegeven. Vervolgens kunt u opdrachten uitvoeren docker
zonder referenties op te geven. Voer bijvoorbeeld docker pull uit om de aci-helloworld:v1
installatiekopie op te halen, waarbij u de naam van de aanmeldingsserver van uw register opgeeft. De naam van de aanmeldingsserver bestaat uit de naam van uw containerregister (allemaal kleine letters), gevolgd door .azurecr.io
, mycontainerregistry.azurecr.io
bijvoorbeeld.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
De VM configureren met een door het systeem beheerde identiteit
Een door het systeem toegewezen beheerde identiteit is een functie van Azure waarmee uw virtuele machine automatisch een eigen identiteit in Azure Active Directory kan beheren. In deze sectie wordt uitgelegd hoe u uw VIRTUELE machine configureert met een door het systeem toegewezen identiteit om veilig toegang te krijgen tot uw Azure Container Registry.
De VM configureren met een door het systeem beheerde identiteit
Met de volgende opdracht az vm identity assign configureert u uw Docker-VM met een door het systeem toegewezen identiteit:
az vm identity assign --resource-group myResourceGroup --name myDockerVM
Gebruik de opdracht az vm show om een variabele in te stellen op de waarde van principalId
(de service-principal-id) van de identiteit van de virtuele machine, zodat u deze in latere stappen kunt gebruiken.
spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)
Identiteit toegang verlenen tot het containerregister
Configureer nu de identiteit voor toegang tot uw containerregister. Gebruik eerst de opdracht az acr show om de resource-id van het register op te halen:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Gebruik de opdracht az role assignment create om de AcrPull-rol toe te wijzen aan de identiteit. Deze rol biedt pull-machtigingen voor het register. Als u zowel pull- als pushmachtigingen wilt opgeven, wijst u de rol AcrPush toe.
az role assignment create --assignee $spID --scope $resourceID --role acrpull
De identiteit gebruiken om toegang te krijgen tot het register
SSH naar de virtuele Docker-machine die is geconfigureerd met de identiteit. Voer de volgende Azure CLI-opdrachten uit met behulp van de Azure CLI die op de VIRTUELE machine is geïnstalleerd.
Verifieer eerst de Azure CLI met az login met behulp van de door het systeem toegewezen identiteit op de virtuele machine.
az login --identity
Verifieer vervolgens bij het register met az acr login. Wanneer u deze opdracht gebruikt, gebruikt de CLI het Active Directory-token dat is gemaakt toen u de sessie naadloos hebt geverifieerd az login
met het containerregister. (Afhankelijk van de installatie van uw VIRTUELE machine moet u deze opdracht en docker-opdrachten mogelijk uitvoeren met sudo
.)
az acr login --name myContainerRegistry
Er wordt een Login succeeded
bericht weergegeven. Vervolgens kunt u opdrachten uitvoeren docker
zonder referenties op te geven. Voer bijvoorbeeld docker pull uit om de aci-helloworld:v1
installatiekopie op te halen, waarbij u de naam van de aanmeldingsserver van uw register opgeeft. De naam van de aanmeldingsserver bestaat uit de naam van uw containerregister (allemaal kleine letters), gevolgd door .azurecr.io
, mycontainerregistry.azurecr.io
bijvoorbeeld.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Volgende stappen
In dit artikel hebt u geleerd hoe u beheerde identiteiten gebruikt met Azure Container Registry en hoe u het volgende kunt doen:
- Een door de gebruiker toegewezen of door het systeem toegewezen identiteit inschakelen in een Azure-VM
- De identiteit toegang verlenen tot een Azure-containerregister
- De beheerde identiteit gebruiken om toegang te krijgen tot het register en een containerinstallatiekopie op te halen
- Meer informatie over beheerde identiteiten voor Azure-resources.
- Meer informatie over het gebruik van een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit met App Service en Azure Container Registry.
- Meer informatie over het implementeren van een containerinstallatiekopieën uit Azure Container Registry met behulp van een beheerde identiteit.