Udostępnij za pośrednictwem


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 Azure

Connect-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 Azure

Connect-AzContainerRegistry w programie Azure PowerShell

Ustawienia 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 Azure

Connect-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 Azure

Connect-AzContainerRegistry w programie Azure PowerShell

Wpis 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 loginpolecenia 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.

Włączanie interfejsu użytkownika użytkownika administratora w witrynie Azure Portal

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 dockerkontenera . 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.

Następne kroki