Uwierzytelnij za pomocą usługi Azure Container Registry
Istnieje kilka sposobów uwierzytelniania w rejestrze kontenerów platformy Azure, z których każdy ma zastosowanie do co najmniej jednego scenariusza użycia rejestru.
Zalecane sposoby obejmują:
- Uwierzytelnianie w rejestrze bezpośrednio za pomocą indywidualnego logowania
- Aplikacje i orkiestratory kontenerów mogą wykonywać uwierzytelnianie nienadzorowane lub "headless" przy użyciu jednostki usługi Microsoft Entra
Jeśli używasz rejestru kontenerów z usługą Azure Kubernetes Service (AKS) lub innym klastrem Kubernetes, zobacz Scenariusze uwierzytelniania w usłudze Azure Container Registry z platformy Kubernetes.
Opcje uwierzytelniania
W poniższej tabeli wymieniono dostępne metody uwierzytelniania i typowe scenariusze. Aby uzyskać szczegółowe informacje, zobacz połączoną zawartość.
Method | Jak uwierzytelnić | Scenariusze | Kontrola dostępu oparta na rolach platformy Azure (Azure RBAC) | Ograniczenia |
---|---|---|---|---|
Tożsamość indywidualnej usługi AD | az acr login w interfejsie wiersza polecenia platformy AzureConnect-AzContainerRegistry w programie Azure PowerShell |
Interaktywne wypychanie/ściąganie przez deweloperów, testerów | Tak | Token usługi AD musi być odnawiany co 3 godziny |
Jednostka usługi AD | docker login az acr login w interfejsie wiersza polecenia platformy AzureConnect-AzContainerRegistry w programie Azure PowerShellUstawienia logowania rejestru w interfejsach API lub narzędziach Wpis tajny ściągania rozwiązania Kubernetes |
Wypychanie nienadzorowane z potoku ciągłej integracji/ciągłego wdrażania Nienadzorowane ściąganie na platformę Azure lub usługi zewnętrzne |
Tak | Domyślny czas wygaśnięcia hasła sp to 1 rok |
Tożsamość zarządzana dla zasobów platformy Azure | docker login az acr login w interfejsie wiersza polecenia platformy AzureConnect-AzContainerRegistry w programie Azure PowerShell |
Wypychanie nienadzorowane z potoku ciągłej integracji/ciągłego wdrażania platformy Azure Nienadzorowane ściąganie do usług platformy Azure |
Tak | Użyj tylko z wybranych usług platformy Azure, które obsługują tożsamości zarządzane dla zasobów platformy Azure |
Tożsamość zarządzana klastra usługi AKS | Dołączanie rejestru podczas tworzenia lub aktualizowania klastra usługi AKS | Nienadzorowane ściąganie do klastra usługi AKS w tej samej lub innej subskrypcji | Nie, dostęp tylko do ściągania | Dostępne tylko w klastrze usługi AKS Nie można używać do uwierzytelniania między dzierżawami |
Jednostka usługi klastra usługi AKS | Włącz po utworzeniu lub zaktualizowaniu klastra usługi AKS | Nienadzorowane ściąganie do klastra usługi AKS z rejestru w innej dzierżawie usługi AD | Nie, dostęp tylko do ściągania | Dostępne tylko w klastrze usługi AKS |
Administrator | docker login |
Interakcyjne wypychanie/ściąganie przez pojedynczego dewelopera lub testera Wdrażanie obrazu z rejestru do usługi aplikacja systemu Azure Service lub Azure Container Instances w portalu |
Nie, zawsze ściągaj i wypychaj dostęp | Pojedyncze konto na rejestr, niezalecane dla wielu użytkowników |
Token dostępu o zakresie repozytorium | docker login az acr login w interfejsie wiersza polecenia platformy AzureConnect-AzContainerRegistry w programie Azure PowerShellWpis tajny ściągania rozwiązania Kubernetes |
Interaktywne wypychanie/ściąganie do repozytorium przez pojedynczego dewelopera lub testera Nienadzorowane ściąganie z repozytorium przez pojedynczy system lub urządzenie zewnętrzne |
Tak | Obecnie nie jest zintegrowana z tożsamością usługi AD |
Logowanie indywidualne przy użyciu identyfikatora Entra firmy Microsoft
Podczas bezpośredniej pracy z rejestrem, na przykład ściągania obrazów do i wypychania obrazów z utworzonej stacji roboczej deweloperów do utworzonego rejestru, uwierzytelnij się przy użyciu indywidualnej tożsamości platformy Azure. Zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login, a następnie uruchom polecenie az acr login:
az login
az acr login --name <acrName>
Po zalogowaniu się za pomocą az acr login
polecenia interfejs wiersza polecenia używa tokenu utworzonego podczas wykonywania az login
w celu bezproblemowego uwierzytelniania sesji w rejestrze. Aby ukończyć przepływ uwierzytelniania, interfejs wiersza polecenia platformy Docker i demon platformy Docker muszą być zainstalowane i uruchomione w danym środowisku. az acr login
używa klienta platformy Docker do ustawienia tokenu docker.config
Microsoft Entra w pliku. Po zalogowaniu się w ten sposób poświadczenia są buforowane, a kolejne docker
polecenia w sesji nie wymagają nazwy użytkownika ani hasła.
Napiwek
Służy az acr login
również do uwierzytelniania pojedynczej tożsamości, gdy chcesz wypchnąć lub ściągnąć artefakty inne niż obrazy platformy Docker do rejestru, takie jak artefakty OCI.
W przypadku dostępu do rejestru token używany przez az acr login
program jest ważny przez 3 godziny, dlatego zalecamy, aby przed uruchomieniem docker
polecenia zawsze logować się do rejestru. Jeśli token wygaśnie, możesz odświeżyć go ponownie, używając polecenia w celu ponownego az acr login
uwierzytelnienia.
Korzystanie az acr login
z tożsamości platformy Azure zapewnia kontrolę dostępu opartą na rolach (RBAC) platformy Azure. W niektórych scenariuszach możesz zalogować się do rejestru przy użyciu własnej tożsamości w usłudze Microsoft Entra ID lub skonfigurować innych użytkowników platformy Azure z określonymi rolami i uprawnieniami platformy Azure. W scenariuszach obejmujących wiele usług lub w celu obsługi potrzeb grupy roboczej lub przepływu pracy programowania, w którym nie chcesz zarządzać dostępem indywidualnym, możesz również zalogować się przy użyciu tożsamości zarządzanej dla zasobów platformy Azure.
az acr login with --expose-token
W niektórych przypadkach musisz uwierzytelnić się az acr login
przy użyciu, gdy demon platformy Docker nie jest uruchomiony w danym środowisku. Na przykład może być konieczne uruchomienie az acr login
skryptu w usłudze Azure Cloud Shell, który udostępnia interfejs wiersza polecenia platformy Docker, ale nie uruchamia demona platformy Docker.
W tym scenariuszu uruchom najpierw polecenie az acr login
z parametrem --expose-token
. Ta opcja uwidacznia token dostępu zamiast logowania za pośrednictwem interfejsu wiersza polecenia platformy Docker.
az acr login --name <acrName> --expose-token
Dane wyjściowe wyświetla token dostępu, skrócony tutaj:
{
"accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
"loginServer": "myregistry.azurecr.io"
}
W przypadku uwierzytelniania rejestru zalecamy przechowywanie poświadczeń tokenu w bezpiecznej lokalizacji i stosowanie zalecanych rozwiązań w celu zarządzania poświadczeniami logowania platformy Docker. Na przykład zapisz wartość tokenu w zmiennej środowiskowej:
TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)
Następnie uruchom polecenie docker login
, przekazując 00000000-0000-0000-0000-000000000000
jako nazwę użytkownika i używając tokenu dostępu jako hasło:
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
Podobnie można użyć tokenu zwróconego za pomocą az acr login
helm registry login
polecenia , aby uwierzytelnić się w rejestrze:
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Jednostka usługi
Jeśli przypiszesz jednostkę usługi do rejestru, aplikacja lub usługa może jej używać do uwierzytelniania bezgłowego. Jednostki usługi umożliwiają kontrolę dostępu opartą na rolach (RBAC) platformy Azure do rejestru i można przypisać wiele jednostek usługi do rejestru. Wiele jednostek usługi umożliwia definiowanie innego dostępu dla różnych aplikacji.
Token uwierzytelniania usługi ACR jest tworzony podczas logowania do usługi ACR i jest odświeżany po kolejnych operacjach. Czas wygaśnięcia tego tokenu wynosi 3 godziny.
Dostępne role rejestru kontenerów obejmują:
AcrPull: ściąganie
AcrPush: ściąganie i wypychanie
Właściciel: ściąganie, wypychanie i przypisywanie ról innym użytkownikom
Aby uzyskać pełną listę ról, zobacz Role i uprawnienia usługi Azure Container Registry.
Aby uzyskać skrypty interfejsu wiersza polecenia służące do tworzenia jednostki usługi na potrzeby uwierzytelniania za pomocą rejestru kontenerów platformy Azure i więcej wskazówek, zobacz Uwierzytelnianie usługi Azure Container Registry przy użyciu jednostek usługi.
Konto administratora
Każdy rejestr kontenerów zawiera konto administratora, które jest domyślnie wyłączone. Możesz włączyć użytkownika administratora i zarządzać jego poświadczeniami w witrynie Azure Portal lub przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub innych narzędzi platformy Azure. Konto administratora ma pełne uprawnienia do rejestru.
Konto administratora jest obecnie wymagane w niektórych scenariuszach, aby wdrożyć obraz z rejestru kontenerów do niektórych usług platformy Azure. Na przykład konto administratora jest potrzebne, gdy używasz witryny Azure Portal do wdrażania obrazu kontenera z rejestru bezpośrednio w usłudze Azure Container Instances lub Azure Web Apps for Containers.
Ważne
Konto administratora jest przeznaczone dla pojedynczego użytkownika z dostępem do rejestru, głównie do celów testowych. Nie zalecamy udostępniania poświadczeń konta administratora wielu użytkownikom. Wszyscy użytkownicy uwierzytelniający się przy użyciu konta administratora są wyświetlani jako pojedynczy użytkownik z dostępem wypychania i ściągania do rejestru. Zmiana lub wyłączenie tego konta powoduje wyłączenie dostępu do rejestru dla wszystkich użytkowników, którzy używają swoich poświadczeń. Indywidualna tożsamość jest zalecana dla użytkowników i jednostek usługi w scenariuszach bezgłowych.
Konto administratora jest dostarczane z dwoma hasłami, z których oba mogą być ponownie generowane. Nowe hasła utworzone dla kont administratorów są dostępne natychmiast. Ponowne generowanie haseł dla kont administratorów potrwa 60 sekund, aby replikować i być dostępne. Dwa hasła umożliwiają utrzymywanie połączenia z rejestrem przy użyciu jednego hasła podczas ponownego generowania drugiego. Jeśli konto administratora jest włączone, możesz przekazać nazwę użytkownika i hasło do docker login
polecenia po wyświetleniu monitu o uwierzytelnianie podstawowe do rejestru. Na przykład:
docker login myregistry.azurecr.io
Aby zapoznać się z zalecanymi rozwiązaniami dotyczącymi zarządzania poświadczeniami logowania, zobacz dokumentację poleceń logowania platformy Docker.
Aby włączyć użytkownika administratora dla istniejącego rejestru, możesz użyć --admin-enabled
parametru polecenia az acr update w interfejsie wiersza polecenia platformy Azure:
az acr update -n <acrName> --admin-enabled true
Możesz włączyć użytkownika administratora w witrynie Azure Portal, przechodząc do rejestru, wybierając pozycję Klucze dostępu w obszarze USTAWIENIA, a następnie pozycję Włącz w obszarze Użytkownik administracyjny.
Logowanie przy użyciu alternatywnego narzędzia kontenera zamiast platformy Docker
W niektórych scenariuszach należy użyć alternatywnych narzędzi kontenerów, takich jak podman
zamiast wspólnego narzędzia docker
kontenera . Na przykład: Platforma Docker nie jest już dostępna w systemach RHEL 8 i 9, więc musisz przełączyć narzędzie kontenera.
Domyślne narzędzie kontenera jest ustawione na docker
dla az acr login
poleceń. Jeśli nie ustawisz domyślnego narzędzia kontenera i docker
brakuje polecenia w środowisku, zostanie wyświetlony następujący błąd:
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.
Aby zmienić domyślne narzędzie kontenera używane przez az acr login
polecenie, można ustawić zmienną środowiskową DOCKER_COMMAND
. Na przykład:
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Uwaga
Do korzystania z tej funkcji potrzebna jest wersja interfejsu wiersza polecenia platformy Azure w wersji 2.59.0 lub nowszej. Uruchom polecenie az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.