Použití spravované identity Azure k ověření v registru kontejneru Azure

Použijte spravovanou identitu pro prostředky Azure k ověření v registru kontejneru Azure z jiného prostředku Azure, aniž byste museli zadávat nebo spravovat přihlašovací údaje registru. Například na virtuálním počítači s Linuxem nastavte spravovanou identitu přiřazenou uživatelem nebo systémem, abyste měli přístup k imagím kontejnerů z vašeho registru kontejneru, a to snadno, když používáte veřejný registr. Nebo nastavte cluster Azure Kubernetes Service tak, aby používal svou spravovanou identitu k vyžádání imagí kontejnerů ze služby Azure Container Registry pro nasazení podů.

V tomto článku se dozvíte další informace o spravovaných identitách a o tom, jak:

  • Povolení identity přiřazené uživatelem nebo systémem na virtuálním počítači Azure
  • Udělení přístupu identit ke službě Azure Container Registry
  • Použití spravované identity pro přístup k registru a vyžádání image kontejneru

Pokud chcete vytvořit prostředky Azure, tento článek vyžaduje, abyste spustili Azure CLI verze 2.0.55 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Pokud chcete nastavit registr kontejneru a odeslat do ní image kontejneru, musíte mít také nainstalovaný Docker místně. Docker nabízí balíčky pro snadnou konfiguraci Dockeru v libovolném systému macOS, Windows nebo Linux.

Proč používat spravovanou identitu?

Pokud ještě neznáte funkci spravovaných identit pro prostředky Azure, podívejte se na tento přehled.

Po nastavení vybraných prostředků Azure se spravovanou identitou dejte identitě přístup, který chcete použít k jinému prostředku, stejně jako jakýkoli objekt zabezpečení. Například přiřaďte spravovanou identitu roli s vyžádáním změn, zápisem a vyžádáním změn nebo jinými oprávněními k privátnímu registru v Azure. (Úplný seznam rolí registru najdete v tématu Role a oprávnění služby Azure Container Registry.) Identitě můžete udělit přístup k jednomu nebo více prostředkům.

Pak použijte identitu k ověření ve všech službách, které podporují ověřování Microsoft Entra bez jakýchkoli přihlašovacích údajů ve vašem kódu. V závislosti na vašem scénáři zvolte způsob ověřování pomocí spravované identity. Pokud chcete použít identitu pro přístup k registru kontejneru Azure z virtuálního počítače, ověřte se pomocí Azure Resource Manageru.

Vytvoření registru kontejneru

Pokud ještě nemáte registr kontejneru Azure, vytvořte registr a nasdílejte do něj ukázkovou image kontejneru. Postup najdete v tématu Rychlý start: Vytvoření privátního registru kontejneru pomocí Azure CLI.

Tento článek předpokládá, že máte image kontejneru uloženou aci-helloworld:v1 v registru. Příklady používají název registru myContainerRegistry. V dalších krocích nahraďte vlastními názvy registrů a imagí.

Vytvoření virtuálního počítače s podporou Dockeru

Vytvořte virtuální počítač s Ubuntu s podporou Dockeru. Na virtuální počítač je také potřeba nainstalovat Azure CLI . Pokud už máte virtuální počítač Azure, přeskočte tento krok a vytvořte virtuální počítač.

Nasazení výchozího virtuálního počítače s Ubuntu Azure pomocí příkazu az vm create Následující příklad vytvoří virtuální počítač myDockerVM v existující skupině prostředků myResourceGroup:

az vm create \
    --resource-group myResourceGroup \
    --name myDockerVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

Vytvoření virtuálního počítače trvá několik minut. Po dokončení příkazu si poznamenejte publicIpAddress zobrazení v Azure CLI. Tuto adresu použijte k vytvoření připojení SSH k virtuálnímu počítači.

Instalace Dockeru na virtuální počítač

Pokud chcete na virtuálním počítači spouštět kontejnery Dockeru, musíte nainstalovat Docker. Tato část obsahuje postup instalace Dockeru na virtuální počítač s Ubuntu a zajištění připravenosti virtuálního počítače na vyžádání a spouštění imagí kontejneru ze služby Azure Container Registry.

Po spuštění virtuálního počítače vytvořte připojení SSH k virtuálnímu počítači. Nahraďte publicIpAddress veřejnou IP adresou vašeho virtuálního počítače.

ssh azureuser@publicIpAddress

Spuštěním následujícího příkazu nainstalujte Docker na virtuální počítač:

sudo apt update
sudo apt install docker.io -y

Po instalaci spusťte následující příkaz a ověřte, že je na virtuálním počítači správně spuštěný Docker:

sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

Instalace Azure CLI

Postupujte podle kroků v tématu Instalace Azure CLI s apt pro instalaci Azure CLI na virtuální počítač s Ubuntu. V tomto článku se ujistěte, že nainstalujete verzi 2.0.55 nebo novější.

Ukončete relaci SSH.

Příklad 1: Přístup s identitou přiřazenou uživatelem

Vytvoření identity

Vytvořte ve svém předplatném identitu pomocí příkazu az identity create . Můžete použít stejnou skupinu prostředků, kterou jste použili dříve k vytvoření registru kontejneru nebo virtuálního počítače nebo jiné skupiny prostředků.

az identity create --resource-group myResourceGroup --name myACRId

Pokud chcete nakonfigurovat identitu v následujících krocích, pomocí příkazu az identity show uložte ID prostředku a ID instančního objektu identity do proměnných.

# 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)

Vzhledem k tomu, že při přihlášení k rozhraní příkazového řádku z virtuálního počítače potřebujete ID identity v pozdějším kroku, zobrazte hodnotu:

echo $userID

ID je ve formuláři:

/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId

Konfigurace virtuálního počítače s identitou

Následující příkaz az vm identity assign nakonfiguruje virtuální počítač Dockeru s identitou přiřazenou uživatelem:

az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID

Udělení přístupu identit k registru kontejneru

Teď nakonfigurujte identitu pro přístup k registru kontejneru. Nejprve pomocí příkazu az acr show získejte ID prostředku registru:

resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)

Pomocí příkazu az role assignment create přiřaďte k identitě roli AcrPull. Tato role poskytuje oprávnění k přijetí změn registru. Pokud chcete poskytnout oprávnění pro vyžádání změn i nabízení, přiřaďte roli AcrPush.

az role assignment create --assignee $spID --scope $resourceID --role acrpull

Použití identity pro přístup k registru

Připojte se pomocí protokolu SSH k virtuálnímu počítači Dockeru, který je nakonfigurovaný s identitou. Pomocí Azure CLI nainstalovaného na virtuálním počítači spusťte následující příkazy Azure CLI.

Nejprve se pomocí příkazu az login pomocí příkazu az login ověřte pomocí identity, kterou jste na virtuálním počítači nakonfigurovali. Nahraďte <userID>ID identity, kterou jste získali v předchozím kroku.

az login --identity --username <userID>

Pak se ověřte v registru pomocí příkazu az acr login. Když použijete tento příkaz, rozhraní příkazového řádku použije token služby Active Directory vytvořený při spuštění az login k bezproblémovému ověření relace pomocí registru kontejneru. (V závislosti na nastavení virtuálního počítače možná budete muset spustit tento příkaz a příkazy Dockeru s sudo.)

az acr login --name myContainerRegistry

Měla by se zobrazit Login succeeded zpráva. Pak můžete spouštět docker příkazy bez zadání přihlašovacích údajů. Například spuštěním příkazu docker pull stáhněte aci-helloworld:v1 image a zadejte název přihlašovacího serveru vašeho registru. Název přihlašovacího serveru se skládá z názvu registru kontejneru (všechna malá písmena) následovaného .azurecr.io – například mycontainerregistry.azurecr.io.

docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1

Konfigurace virtuálního počítače s identitou spravovanou systémem

Spravovaná identita přiřazená systémem je funkce Azure, která umožňuje vašemu virtuálnímu počítači automaticky spravovat vlastní identitu v Azure Active Directory. Tato část vysvětluje, jak nakonfigurovat virtuální počítač s identitou přiřazenou systémem pro bezpečný přístup ke službě Azure Container Registry.

Konfigurace virtuálního počítače s identitou spravovanou systémem

Následující příkaz az vm identity assign nakonfiguruje virtuální počítač Dockeru s identitou přiřazenou systémem:

az vm identity assign --resource-group myResourceGroup --name myDockerVM

Pomocí příkazu az vm show nastavte proměnnou na hodnotu principalId (ID instančního objektu) identity virtuálního počítače, která se použije v dalších krocích.

spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)

Udělení přístupu identit k registru kontejneru

Teď nakonfigurujte identitu pro přístup k registru kontejneru. Nejprve pomocí příkazu az acr show získejte ID prostředku registru:

resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)

Pomocí příkazu az role assignment create přiřaďte k identitě roli AcrPull. Tato role poskytuje oprávnění k přijetí změn registru. Pokud chcete poskytnout oprávnění pro vyžádání změn i nabízení, přiřaďte roli AcrPush.

az role assignment create --assignee $spID --scope $resourceID --role acrpull

Použití identity pro přístup k registru

Připojte se pomocí protokolu SSH k virtuálnímu počítači Dockeru, který je nakonfigurovaný s identitou. Pomocí Azure CLI nainstalovaného na virtuálním počítači spusťte následující příkazy Azure CLI.

Nejprve pomocí příkazu az login ověřte Azure CLI pomocí identity přiřazené systémem na virtuálním počítači.

az login --identity

Pak se ověřte v registru pomocí příkazu az acr login. Když použijete tento příkaz, rozhraní příkazového řádku použije token služby Active Directory vytvořený při spuštění az login k bezproblémovému ověření relace pomocí registru kontejneru. (V závislosti na nastavení virtuálního počítače možná budete muset spustit tento příkaz a příkazy Dockeru s sudo.)

az acr login --name myContainerRegistry

Měla by se zobrazit Login succeeded zpráva. Pak můžete spouštět docker příkazy bez zadání přihlašovacích údajů. Například spuštěním příkazu docker pull stáhněte aci-helloworld:v1 image a zadejte název přihlašovacího serveru vašeho registru. Název přihlašovacího serveru se skládá z názvu registru kontejneru (všechna malá písmena) následovaného .azurecr.io – například mycontainerregistry.azurecr.io.

docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1

Další kroky

V tomto článku jste se seznámili s používáním spravovaných identit se službou Azure Container Registry a s postupy:

  • Povolení identity přiřazené uživatelem nebo systémem na virtuálním počítači Azure
  • Udělení přístupu identit ke službě Azure Container Registry
  • Použití spravované identity pro přístup k registru a vyžádání image kontejneru