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 CLIConnect-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 CLIConnect-AzContainerRegistry v Azure PowerShelluNastavení 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 CLIConnect-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 CLIConnect-AzContainerRegistry v Azure PowerShelluTajný 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 login
00000000-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.
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 docker
kontejneru 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_COMMAND
prostř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.