Ověřování pomocí registru kontejneru Azure

Existuje několik způsobů ověřování pomocí registru kontejneru Azure, z nichž každá se vztahuje na jeden nebo více scénářů použití registru.

Mezi doporučené způsoby patří:

  • Ověření v registru přímo prostřednictvím individuálního přihlášení
  • Aplikace a orchestrátory kontejnerů můžou provádět bezobslužné nebo bezobslužné ověřování pomocí instančního objektu Microsoft Entra .

Pokud používáte registr kontejneru se službou Azure Kubernetes Service (AKS) nebo jiným clusterem Kubernetes, přečtěte si o scénářích ověřování ve službě Azure Container Registry z Kubernetes.

Možnosti ověřování

Následující tabulka uvádí dostupné metody ověřování a typické scénáře. Podrobnosti najdete v propojeném obsahu.

metoda Ověření Scénáře Řízení přístupu na základě role v Azure (Azure RBAC) Omezení
Individuální identita AD  az acr login v Azure CLI

Connect-AzContainerRegistry v Azure PowerShellu
Interaktivní nabízení změn a přijetí změn vývojáři, testeři Ano Token AD se musí obnovit každých 3 hodiny.
Instanční objekt AD  docker login

az acr login v Azure CLI

Connect-AzContainerRegistry v Azure PowerShellu

Nastavení přihlášení registru v rozhraních API nebo nástrojích

Tajný kód vyžádané replikace Kubernetes   
Bezobslužné nabízení z kanálu CI/CD

Bezobslužné přijetí změn do Azure nebo externích služeb
Ano Výchozí platnost hesla SP je 1 rok
Spravovaná identita pro prostředky Azure  docker login

az acr login v Azure CLI

Connect-AzContainerRegistry v Azure PowerShellu
Bezobslužné nabízení z kanálu CI/CD Azure

Bezobslužné přijetí změn do služeb Azure

Ano Používejte pouze z vybraných služeb Azure, které podporují spravované identity pro prostředky Azure.
Spravovaná identita clusteru AKS  Připojení registru při vytvoření nebo aktualizaci clusteru AKS Bezobslužné přijetí změn do clusteru AKS ve stejném nebo jiném předplatném Ne, pouze přístup k vyžádání změn K dispozici pouze s clusterem AKS

Nejde použít pro ověřování mezi tenanty
Instanční objekt clusteru AKS  Povolení při vytvoření nebo aktualizaci clusteru AKS Bezobslužné přijetí změn do clusteru AKS z registru v jiném tenantovi AD Ne, pouze přístup k vyžádání změn K dispozici pouze s clusterem AKS
Uživatel s rolí správce  docker login  Interaktivní nabízení změn a vyžádání od jednotlivých vývojářů nebo testerů

Nasazení image z registru do služby Aplikace Azure Service nebo služby Azure Container Instances
Ne, vždy vyžádat a odeslat přístup Jeden účet na registr, nedoporučuje se pro více uživatelů
Přístupový token v oboru úložiště  docker login

az acr login v Azure CLI

Connect-AzContainerRegistry v Azure PowerShellu

Tajný kód vyžádané replikace Kubernetes 
Interaktivní nabízení a vyžádání změn do úložiště jednotlivými vývojáři nebo testery

Bezobslužné vyžádání z úložiště jednotlivými systémy nebo externími zařízeními
Ano Není aktuálně integrováno s identitou AD

Individuální přihlášení pomocí Microsoft Entra ID

Při přímé práci s registrem, například při načítání imagí do vývojové pracovní stanice do registru, který jste vytvořili, se ověřte pomocí vaší individuální identity Azure. Přihlaste se k Azure CLI pomocí příkazu az login a spusťte příkaz az acr login :

az login
az acr login --name <acrName>

Když se přihlásíte pomocí az acr login, rozhraní příkazového řádku použije token vytvořený při spuštění az login k bezproblémovému ověření relace s registrem. K dokončení toku ověřování musí být rozhraní příkazového řádku Dockeru a démon Dockeru nainstalované a spuštěné ve vašem prostředí. az acr login používá klienta Dockeru k nastavení tokenu Microsoft Entra v docker.config souboru. Po přihlášení tímto způsobem se přihlašovací údaje ukládají do mezipaměti a následné docker příkazy ve vaší relaci nevyžadují uživatelské jméno ani heslo.

Tip

Používá se az acr login také k ověření individuální identity, pokud chcete do registru odeslat nebo vyžádat artefakty jiné než image Dockeru, jako jsou artefakty OCI.

Pro přístup k registru je token používaný az acr login 3 hodiny platný, proto doporučujeme, abyste se před spuštěním docker příkazu vždy přihlásili k registru. Pokud platnost tokenu vyprší, můžete ho az acr login znovu aktualizovat pomocí příkazu k opětovnému ověření.

Použití az acr login s identitami Azure poskytuje řízení přístupu na základě role v Azure (Azure RBAC). V některých scénářích se můžete chtít přihlásit k registru s vlastní individuální identitou v Microsoft Entra ID nebo nakonfigurovat jiné uživatele Azure s konkrétními rolemi a oprávněními Azure. Pro scénáře napříč službami nebo zpracování potřeb pracovní skupiny nebo vývojového pracovního postupu, kde nechcete spravovat individuální přístup, se můžete přihlásit také pomocí spravované identity pro prostředky Azure.

az acr login with --expose-token

V některých případech je potřeba provést ověření v az acr login případě, že proces démon Dockeru není ve vašem prostředí spuštěný. Například možná budete muset spustit az acr login ve skriptu v Azure Cloud Shellu, který poskytuje Rozhraní příkazového řádku Dockeru, ale nespustí proces démona Dockeru.

Pro tento scénář spusťte az acr login nejprve s parametrem --expose-token . Tato možnost místo přihlášení prostřednictvím rozhraní příkazového řádku Dockeru zpřístupňuje přístupový token.

az acr login --name <acrName> --expose-token

Výstup zobrazí přístupový token, zkráceně zde:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

Pro ověřování registru doporučujeme uložit přihlašovací údaje tokenu do bezpečného umístění a postupovat podle doporučených postupů pro správu přihlašovacích údajů Dockeru . Například uložte hodnotu tokenu do proměnné prostředí:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

Pak spusťte příkaz , který předá docker login00000000-0000-0000-0000-000000000000 jako uživatelské jméno a použije přístupový token jako heslo:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

Podobně můžete token vrácený příkazem az acr login helm registry login použít k ověření v registru:

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

Instanční objekt

Pokud k registru přiřadíte instanční objekt , vaše aplikace nebo služba ho můžou použít k bezobslužné ověřování. Instanční objekty umožňují řízení přístupu na základě role v Azure (Azure RBAC) k registru a k registru můžete přiřadit více instančních objektů. Několik instančních objektů umožňuje definovat jiný přístup pro různé aplikace.

Ověřovací token ACR se vytvoří při přihlášení k ACR a aktualizuje se při následných operacích. Doba života pro tento token je 3 hodiny.

Mezi dostupné role registru kontejneru patří:

  • AcrPull: pull

  • AcrPush: pull and push

  • Vlastník: vyžádání, nasdílení změn a přiřazování rolí jiným uživatelům

Úplný seznam rolí najdete v tématu Role a oprávnění služby Azure Container Registry.

Skripty rozhraní příkazového řádku pro vytvoření instančního objektu pro ověřování pomocí registru kontejneru Azure a další pokyny najdete v tématu Ověřování azure Container Registry pomocí instančních objektů.

Účet správce

Každý registr kontejneru obsahuje uživatelský účet správce, který je ve výchozím nastavení zakázaný. Uživatele s rolí správce a jeho přihlašovací údaje můžete povolit na webu Azure Portal nebo pomocí Azure CLI, Azure PowerShellu nebo jiných nástrojů Azure. Účet správce má úplná oprávnění k registru.

Účet správce se v současné době vyžaduje pro některé scénáře nasazení image z registru kontejneru do určitých služeb Azure. Například účet správce je potřeba, když pomocí webu Azure Portal nasadíte image kontejneru z registru přímo do služby Azure Container Instances nebo Azure Web Apps for Containers.

Důležité

Účet správce je určený pro přístup jednoho uživatele k registru, zejména pro účely testování. Nedoporučujeme sdílet přihlašovací údaje účtu správce s více uživateli. Všichni uživatelé, kteří se ověřují pomocí účtu správce, se zobrazí jako jeden uživatel s přístupem k registru s oprávněním sdílet a přijímat změny. Změna nebo zakázání tohoto účtu zakáže přístup registru pro všechny uživatele, kteří používají jeho přihlašovací údaje. Individuální identita se doporučuje pro uživatele a instanční objekty pro bezobslužné scénáře.

Účet správce je k dispozici se dvěma hesly, z nichž obě se dají znovu vygenerovat. Nová hesla vytvořená pro účty správců jsou k dispozici okamžitě. Opakované vygenerování hesel pro účty správců bude trvat 60 sekund, než se replikují a budou dostupné. Dvě hesla umožňují udržovat připojení k registru pomocí jednoho hesla, zatímco znovu vygenerujete druhé. Pokud je účet správce povolený, můžete uživatelské jméno a heslo docker login předat příkazu po zobrazení výzvy k základnímu ověřování do registru. Příklad:

docker login myregistry.azurecr.io

Doporučené postupy pro správu přihlašovacích údajů najdete v referenčních informacích k příkazům docker login .

Pokud chcete povolit uživatele správce pro existující registr, můžete použít --admin-enabled parametr příkazu az acr update v Azure CLI:

az acr update -n <acrName> --admin-enabled true

Uživatele správce můžete povolit na webu Azure Portal tak, že přejdete do registru, vyberete Přístupové klíče v části NASTAVENÍ a pak v části Uživatel s oprávněním správce povolíte.

Povolení uživatelského rozhraní správce na webu Azure Portal

Přihlášení pomocí alternativního nástroje kontejneru místo Dockeru

V některých scénářích musíte místo běžného nástroje dockerkontejneru použít alternativní nástroje podman kontejneru. Například: Docker už není k dispozici v RHEL 8 a 9, takže musíte přepnout nástroj kontejneru.

Výchozí nástroj kontejneru je nastavený na docker az acr login příkazy. Pokud nenastavíte výchozí nástroj pro kontejner a docker příkaz ve vašem prostředí chybí, zobrazí se následující chyba:

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.

Chcete-li změnit výchozí nástroj kontejneru az acr login , který příkaz používá, můžete nastavit proměnnou DOCKER_COMMANDprostředí . Příklad:

DOCKER_COMMAND=podman \
az acr login --name <acrName>

Poznámka:

K použití této funkce potřebujete nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.59.0 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.

Další kroky