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
- Přečtěte si další informace o spravovaných identitách pro prostředky Azure.
- Naučte se používat spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem se službou App Service a Službou Azure Container Registry.
- Zjistěte, jak nasadit image kontejneru ze služby Azure Container Registry pomocí spravované identity.