Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj tożsamości zarządzanej dla zasobów platformy Azure , aby uwierzytelnić się w rejestrze kontenerów platformy Azure z innego zasobu platformy Azure bez konieczności podawania poświadczeń rejestru ani zarządzania nimi. Na przykład skonfiguruj zarządzaną tożsamość przypisaną przez użytkownika lub przez system na wirtualnej maszynie z Linuxem, aby uzyskać dostęp do obrazów kontenerów z rejestru kontenerów równie łatwo jak z rejestru publicznego. Możesz też skonfigurować klaster usługi Azure Kubernetes Service do używania swojej tożsamości zarządzanej do ściągania obrazów kontenerów z usługi Azure Container Registry na potrzeby wdrożeń zasobników.
W tym artykule dowiesz się więcej na temat tożsamości zarządzanych oraz jak:
- Włączanie tożsamości przypisanej przez użytkownika lub przypisanej przez system na maszynie wirtualnej platformy Azure
- Udzielanie tożsamości dostępu do rejestru kontenerów platformy Azure
- Używanie tożsamości zarządzanej do uzyskiwania dostępu do rejestru i ściągania obrazu kontenera
Aby utworzyć zasoby platformy Azure, ten artykuł wymaga uruchomienia interfejsu wiersza polecenia platformy Azure w wersji 2.0.55 lub nowszej. Uruchom az --version
, aby znaleźć wersję. Jeśli musisz zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Aby skonfigurować rejestr kontenerów i wypchnąć do niego obraz kontenera, musisz mieć również zainstalowaną lokalnie platformę Docker. Platforma Docker udostępnia pakiety, które łatwo konfigurują platformę Docker w dowolnym systemie macOS, Windows lub Linux .
Dlaczego warto używać tożsamości zarządzanej?
Jeśli nie znasz funkcji tożsamości zarządzanych dla zasobów platformy Azure, zapoznaj się z tym omówieniem.
Po skonfigurowaniu wybranych zasobów platformy Azure przy użyciu tożsamości zarządzanej, nadaj tej tożsamości dostęp do innego zasobu, podobnie jak w przypadku każdego uprawnionego podmiotu. Na przykład przypisz zarządzaną tożsamość rolę z uprawnieniami ściągania, wypychania lub innymi uprawnieniami do prywatnego rejestru na platformie Azure. (Aby uzyskać pełną listę ról rejestru, zobacz Omówienie uprawnień i ról usługi Azure Container Registry Entra). Możesz nadać tożsamości dostęp do jednego lub większej liczby zasobów.
Następnie użyj tożsamości, aby uwierzytelnić się w dowolnej usłudze obsługującej uwierzytelnianie firmy Microsoft Entra bez żadnych poświadczeń w kodzie. Wybierz sposób uwierzytelniania przy użyciu tożsamości zarządzanej, w zależności od scenariusza. Aby użyć tożsamości w celu uzyskania dostępu do rejestru kontenerów platformy Azure z maszyny wirtualnej, należy uwierzytelnić się w usłudze Azure Resource Manager.
Tworzenie rejestru kontenerów
Jeśli nie masz jeszcze rejestru kontenerów platformy Azure, utwórz rejestr i wypchnij do niego przykładowy obraz kontenera. Aby uzyskać instrukcje, zobacz Szybki start: tworzenie prywatnego rejestru kontenerów przy użyciu interfejsu wiersza polecenia platformy Azure.
W tym artykule założono, że masz obraz kontenera aci-helloworld:v1
przechowywany w rejestrze. W przykładach użyto nazwy rejestru myContainerRegistry. Zastąp swoje własne nazwy rejestru i obrazu w kolejnych krokach.
Tworzenie maszyny wirtualnej z obsługą platformy Docker
Utwórz maszynę wirtualną z systemem Ubuntu z obsługą platformy Docker. Musisz również zainstalować interfejs wiersza polecenia platformy Azure na maszynie wirtualnej. Jeśli masz już maszynę wirtualną platformy Azure, pomiń ten krok, aby utworzyć maszynę wirtualną.
Wdróż domyślną maszynę wirtualną z systemem Ubuntu Azure za pomocą polecenia az vm create. Poniższy przykład tworzy maszynę wirtualną o nazwie myDockerVM w istniejącej grupie zasobów o nazwie myResourceGroup:
az vm create \
--resource-group myResourceGroup \
--name myDockerVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Utworzenie maszyny wirtualnej może potrwać kilka minut. Po zakończeniu wykonywania polecenia zanotuj publicIpAddress
wyświetlany przez Azure CLI. Użyj tego adresu, aby nawiązać połączenia SSH z maszyną wirtualną.
Instalowanie platformy Docker na maszynie wirtualnej
Aby uruchomić kontenery platformy Docker na maszynie wirtualnej, należy zainstalować platformę Docker. Ta sekcja zawiera kroki instalacji platformy Docker na maszynie wirtualnej z systemem Ubuntu, dzięki czemu maszyna wirtualna jest gotowa do ściągania i uruchamiania obrazów kontenerów z usługi Azure Container Registry.
Po uruchomieniu maszyny wirtualnej utwórz połączenie SSH z maszyną wirtualną. Zastąp publicIpAddress publicznym adresem IP swojej maszyny wirtualnej.
ssh azureuser@publicIpAddress
Uruchom następujące polecenie, aby zainstalować platformę Docker na maszynie wirtualnej:
sudo apt update
sudo apt install docker.io -y
Po zakończeniu instalacji uruchom następujące polecenie, aby sprawdzić, czy platforma Docker działa prawidłowo na maszynie wirtualnej:
sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Instalacja Azure CLI
Wykonaj kroki opisane w artykule Instalowanie interfejsu wiersza polecenia platformy Azure przy użyciu narzędzia apt , aby zainstalować interfejs wiersza polecenia platformy Azure na maszynie wirtualnej z systemem Ubuntu. W tym artykule upewnij się, że zainstalowano wersję 2.0.55 lub nowszą.
Zamknij sesję SSH.
Przykład 1. Dostęp przy użyciu tożsamości przypisanej przez użytkownika
Tworzenie tożsamości
Utwórz tożsamość w subskrypcji przy użyciu polecenia az identity create . Możesz użyć tej samej grupy zasobów, która była wcześniej używana do utworzenia rejestru kontenerów lub maszyny wirtualnej albo innej.
az identity create --resource-group myResourceGroup --name myACRId
Aby skonfigurować tożsamość w poniższych krokach, użyj polecenia az identity show , aby zapisać identyfikator zasobu tożsamości i identyfikator jednostki usługi w zmiennych.
# Get resource ID of the user-assigned identity
userID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)
# Get service principal ID of the user-assigned identity
spID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)
Ponieważ identyfikator tożsamości jest potrzebny w późniejszym kroku podczas logowania się do interfejsu wiersza polecenia z maszyny wirtualnej, pokaż wartość:
echo $userID
Identyfikator ma postać:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId
Konfigurowanie maszyny wirtualnej przy użyciu tożsamości
Następujące polecenie az vm identity assign konfiguruje maszynę wirtualną platformy Docker przy użyciu tożsamości przypisanej przez użytkownika:
az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID
Udzielanie tożsamości dostępu do rejestru kontenerów
Teraz skonfiguruj tożsamość, aby uzyskać dostęp do rejestru kontenerów. Najpierw użyj polecenia az acr show , aby uzyskać identyfikator zasobu rejestru:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Użyj polecenia az role assignment create , aby przypisać poprawną rolę do tożsamości. Należy przypisać Container Registry Repository Reader
(w przypadku rejestrów z włączoną usługą ABAC) lub AcrPull
(w przypadku rejestrów innych niż ABAC). To przypisanie roli zapewnia uprawnienia ściągnięcia do rejestru.
Aby zapewnić zarówno uprawnienia ściągania, jak i wypychania, przypisz Container Registry Repository Writer
rolę dla rejestrów z włączoną usługą ABAC lub AcrPush
rolę dla rejestrów bez włączonej usługi ABAC.
Aby uzyskać więcej informacji na temat usługi Microsoft Entra ABAC, zobacz Microsoft Entra-based repository permissions (Uprawnienia repozytorium oparte na usłudze Microsoft Entra).
az role assignment create --assignee $spID --scope $resourceID \
--role "Container Registry Repository Reader" # For ABAC-enabled registries. Otherwise, use AcrPull for non-ABAC registries.
Uzyskiwanie dostępu do rejestru przy użyciu tożsamości
Zaloguj się przez SSH z maszyną wirtualną Docker skonfigurowaną z tożsamością. Uruchom następujące polecenia interfejsu wiersza polecenia platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure zainstalowanego na maszynie wirtualnej.
Najpierw należy uwierzytelnić się w interfejsie wiersza polecenia platformy Azure za pomocą polecenia az login przy użyciu tożsamości skonfigurowanej na maszynie wirtualnej. W polu <userID>
zastąp identyfikator tożsamości pobranej w poprzednim kroku.
az login --identity --username <userID>
Następnie uwierzytelnij się w rejestrze za pomocą az acr login. W przypadku korzystania z tego polecenia interfejs wiersza polecenia używa tokenu usługi Active Directory utworzonego podczas uruchamiania az login
w celu bezproblemowego uwierzytelniania sesji w rejestrze kontenerów. (W zależności od konfiguracji maszyny wirtualnej może być konieczne uruchomienie tego polecenia i poleceń platformy Docker za pomocą sudo
polecenia .
az acr login --name myContainerRegistry
Powinien zostać wyświetlony Login succeeded
komunikat. Następnie można uruchamiać docker
polecenia bez podawania poświadczeń. Na przykład uruchom docker pull, aby ściągnąć aci-helloworld:v1
obraz, określając serwer logowania rejestru. Nazwa serwera logowania składa się z nazwy rejestru kontenerów (wszystkie małe litery), a następnie .azurecr.io
— na przykład mycontainerregistry.azurecr.io
.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Konfigurowanie maszyny wirtualnej przy użyciu tożsamości zarządzanej przez system
Tożsamość zarządzana przypisana przez system to funkcja platformy Azure, która umożliwia maszynie wirtualnej automatyczne zarządzanie własną tożsamością w usłudze Azure Active Directory. W tej sekcji wyjaśniono, jak skonfigurować maszynę wirtualną przy użyciu tożsamości przypisanej przez system w celu bezpiecznego uzyskiwania dostępu do usługi Azure Container Registry.
Konfigurowanie maszyny wirtualnej przy użyciu tożsamości zarządzanej przez system
Następujące polecenie az vm identity assign konfiguruje maszynę wirtualną platformy Docker przy użyciu tożsamości przypisanej przez system:
az vm identity assign --resource-group myResourceGroup --name myDockerVM
Użyj polecenia az vm show , aby ustawić zmienną na wartość principalId
(identyfikator jednostki usługi) tożsamości maszyny wirtualnej, aby użyć jej w kolejnych krokach.
spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)
Udzielanie tożsamości dostępu do rejestru kontenerów
Teraz skonfiguruj tożsamość, aby uzyskać dostęp do rejestru kontenerów. Najpierw użyj polecenia az acr show , aby uzyskać identyfikator zasobu rejestru:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Użyj polecenia az role assignment create , aby przypisać poprawną rolę do tożsamości. Należy przypisać Container Registry Repository Reader
(w przypadku rejestrów z włączoną usługą ABAC) lub AcrPull
(w przypadku rejestrów innych niż ABAC). To przypisanie roli zapewnia uprawnienia do pobierania z rejestru.
Aby zapewnić zarówno uprawnienia ściągania, jak i wypychania, przypisz Container Registry Repository Writer
rolę dla rejestrów z włączoną usługą ABAC lub AcrPush
rolę dla rejestrów bez włączonej usługi ABAC.
Aby uzyskać więcej informacji na temat usługi Microsoft Entra ABAC, zobacz Microsoft Entra-based repository permissions (Uprawnienia repozytorium oparte na usłudze Microsoft Entra).
az role assignment create --assignee $spID --scope $resourceID \
--role "Container Registry Repository Reader" # For ABAC-enabled registries. Otherwise, use AcrPull for non-ABAC registries.
Uzyskiwanie dostępu do rejestru przy użyciu tożsamości
Zaloguj się przez SSH z maszyną wirtualną Docker skonfigurowaną z tożsamością. Uruchom następujące polecenia interfejsu wiersza polecenia platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure zainstalowanego na maszynie wirtualnej.
Najpierw należy uwierzytelnić interfejs wiersza polecenia platformy Azure za pomocą polecenia az login przy użyciu tożsamości przypisanej przez system na maszynie wirtualnej.
az login --identity
Następnie uwierzytelnij się w rejestrze za pomocą az acr login. W przypadku korzystania z tego polecenia interfejs wiersza polecenia używa tokenu usługi Active Directory utworzonego podczas uruchamiania az login
w celu bezproblemowego uwierzytelniania sesji w rejestrze kontenerów. (W zależności od konfiguracji maszyny wirtualnej może być konieczne uruchomienie tego polecenia i poleceń platformy Docker za pomocą sudo
polecenia .
az acr login --name myContainerRegistry
Powinien zostać wyświetlony Login succeeded
komunikat. Następnie można uruchamiać docker
polecenia bez podawania poświadczeń. Na przykład uruchom docker pull, aby ściągnąć aci-helloworld:v1
obraz, określając serwer logowania rejestru. Nazwa serwera logowania składa się z nazwy rejestru kontenerów (wszystkie małe litery), a następnie .azurecr.io
— na przykład mycontainerregistry.azurecr.io
.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Dalsze kroki
W tym artykule dowiedziałeś się, jak korzystać z zarządzanych tożsamości w usłudze Azure Container Registry i jak:
- Włączanie tożsamości przypisanej przez użytkownika lub przypisanej przez system na maszynie wirtualnej platformy Azure
- Udzielanie tożsamości dostępu do rejestru kontenerów platformy Azure
- Używanie tożsamości zarządzanej do uzyskiwania dostępu do rejestru i ściągania obrazu kontenera
- Dowiedz się więcej o tożsamościach zarządzanych dla zasobów platformy Azure.
- Dowiedz się, jak używać tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika w usługach App Service i Azure Container Registry.
- Dowiedz się, jak wdrożyć obraz kontenera z usługi Azure Container Registry przy użyciu tożsamości zarządzanej.