Udostępnij za pośrednictwem


Uwierzytelnianie za pomocą rejestru kontenerów platformy Azure

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 „bezgłowy” przy użyciu uprawnienia 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ść.

Metoda Jak uwierzytelnić Scenariuszy Microsoft Entra kontrola dostępu oparta na rolach (RBAC) Ograniczenia
Indywidualna tożsamość firmy Microsoft Entra  az acr login w interfejsie wiersza polecenia platformy Azure

Connect-AzContainerRegistry w programie Azure PowerShell
Interaktywne wypychanie/ściąganie przez deweloperów, testerów Tak Token Entra firmy Microsoft musi być odnawiany co 3 godziny
Tożsamość usługi Microsoft Entra  docker login

az acr login w interfejsie wiersza polecenia platformy Azure

Connect-AzContainerRegistry w programie Azure PowerShell

Ustawienia logowania rejestru w interfejsach API lub narzędziach

Sekret pobierania Kubernetes   
Nienadzorowane przesyłanie z potoku CI/CD

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 firmy Microsoft dla zasobów platformy Azure  docker login

az acr login w interfejsie wiersza polecenia platformy Azure

Connect-AzContainerRegistry w programie Azure PowerShell
Nienadzorowane wypychanie z potoku CI/CD platformy Azure

Nienadzorowane pobieranie danych do usług Azure

Aby uzyskać listę scenariuszy przypisywania ról tożsamości zarządzanej, zapoznaj się ze scenariuszami przypisywania ról ACR.
Tak

Przypisania ról w Microsoft Entra RBAC z wbudowanymi rolami ACR

Kontrola dostępu oparta na atrybutach firmy Microsoft (ABAC) dla uprawnień repozytorium opartego na usłudze Microsoft Entra 
Użyj tylko z wybranych usług platformy Azure, które obsługują tożsamości zarządzane dla zasobów platformy Azure
Zarządzana tożsamość kubeleta węzła klastra AKS  Dołącz rejestr, gdy klaster AKS jest tworzony lub aktualizowany Nienadzorowane ściąganie do węzła 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żawcami
Jednostka usługi klastra usługi AKS  Włącz po utworzeniu lub zaktualizowaniu klastra AKS Automatyczne ściąganie do klastra usługi AKS z rejestru w innej dzierżawie Entra Nie, dostęp tylko do ściągania Dostępne tylko w klastrze AKS
Użytkownik administratora  docker login  Interakcyjne wypychanie/ściąganie przez pojedynczego dewelopera lub testera

Wdrażanie obrazu z rejestru do usługi Azure App Service lub usługi Azure Container Instances w portalu
Nie, zawsze uzyskuj dostęp przez pociąganie i wypychanie Pojedyncze konto na rejestr, niezalecane dla wielu użytkowników
Uprawnienia do repozytorium opartego na tokenach firmy Innej niż Microsoft  docker login

az acr login w interfejsie wiersza polecenia platformy Azure

Connect-AzContainerRegistry w programie Azure PowerShell

Sekret pobierania 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
Uprawnienia repozytorium oparte na tokenach nie obsługują przypisania ról RBAC Microsoft Entra.

Aby uzyskać uprawnienia do repozytorium opartego na usłudze Microsoft Entra, zobacz Microsoft Entra attribute-based access control (ABAC) for Microsoft Entra-based repository permissions zamiast tego.
Obecnie nie jest zintegrowana z tożsamością Microsoft Entra

Logowanie indywidualne przy użyciu identyfikatora Entra firmy Microsoft

Podczas bezpośredniej pracy z rejestrem, na przykład przy pobieraniu obrazów na stację roboczą dewelopera i wysyłaniu obrazów z tej stacji do utworzonego rejestru, należy uwierzytelnić się, korzystając z 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 CLI używa tokenu utworzonego podczas wykonywania az login, aby bezproblemowo uwierzytelniać sesję w rejestrze. Aby ukończyć przepływ uwierzytelniania, interfejs wiersza polecenia Dockera i demon Dockera muszą być zainstalowane i uruchomione w ś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, twoje poświadczenia są buforowane, a kolejne docker polecenia w sesji nie wymagają nazwy użytkownika ani hasła.

Wskazówka

Użyj az acr login również do uwierzytelnienia tożsamości indywidualnej, gdy chcesz przesłać lub pobrać artefakty inne niż obrazy Docker do rejestru, takie jak artefakty OCI.

W przypadku dostępu do rejestru token używany przez az acr login jest ważny przez 3 godziny, dlatego zalecamy, aby przed uruchomieniem docker polecenia zawsze logować się do rejestru. Jeśli twój token wygaśnie, możesz go odświeżyć, ponownie używając polecenia az acr login do ponownego uwierzytelnienia.

Korzystanie az acr login z tożsamości Azure zapewnia kontrolę dostępu (RBAC) opartą na rolach 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. Zobacz Omówienie uprawnień i ról usługi Azure Container Registry. 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ę za pomocą az acr login, gdy demon 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

Wynik wyświetla token dostępu, skrócony tutaj.

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

W przypadku uwierzytelniania rejestru zalecamy przechowywanie poświadczenia tokenu w bezpiecznej lokalizacji i przestrzeganie zalecanych praktyk 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 przez az acr login przy użyciu polecenia helm registry login, 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. Główne usługi umożliwiają definiowanie różnego 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.

Aby uzyskać listę dostępnych ról, zobacz Azure Container Registry Entra permissions and roles overview (Omówienie uprawnień i ról usługi Azure Container Registry).

Aby uzyskać skrypty CLI służące do tworzenia jednostki usługi do uwierzytelniania się w rejestrze kontenerów Azure oraz dodatkowe wskazówki, zobacz Uwierzytelnianie usługi Azure Container Registry przy użyciu jednostek usługi.

Konto administratora

Każdy rejestr kontenerów zawiera konto użytkownika 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 jednego użytkownika w celu uzyskania dostępu do rejestru, głównie do celów testowych. Nie zalecamy udostępniania poświadczeń konta administratora przez wielu użytkowników. Wszyscy użytkownicy uwierzytelniani przy użyciu konta administratora są wyświetlani jako pojedynczy użytkownik z dostępem do przesyłania i pobierania 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. Regenerowanie haseł dla kont administratora zajmie 60 sekund, aby zmiany zostały odzwierciedlone i były 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 jedno z haseł do docker login polecenia, po wyświetleniu monitu o uwierzytelnianie podstawowe do rejestru. Przykład:

docker login myregistry.azurecr.io

Aby zapoznać się z zalecanymi praktykami dotyczącymi zarządzania poświadczeniami logowania, zobacz odniesienie do polecenia docker login.

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.

Włącz interfejs użytkownika administratora w portalu Azure

Zaloguj się za pomocą alternatywnego narzędzia kontenerowego zamiast Docker

W niektórych scenariuszach należy użyć alternatywnych narzędzi kontenerowych, takich jak podman, zamiast powszechnego narzędzia kontenerowego docker. 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 w przypadku poleceń az acr login. Jeśli nie skonfigurujesz domyślnego narzędzia kontenerowego i brakuje polecenia docker w twoim ś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. Przykład:

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

Uwaga / Notatka

Do korzystania z tej funkcji potrzebna jest wersja interfejsu wiersza polecenia platformy Azure w wersji 2.59.0 lub nowszej. Uruchom az --version, aby znaleźć wersję. Jeśli musisz zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Dalsze kroki