Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете использовать управляемое удостоверение для ресурсов Azure для проверки подлинности в реестре контейнеров Azure из другого ресурса Azure без необходимости предоставлять учетные данные реестра или управлять ими.
Например, настройте назначаемое пользователем или назначаемое системой управляемое удостоверение на виртуальной машине Linux для доступа к образам контейнеров из реестра контейнеров, так же легко, как и в общедоступном реестре. Кроме того, настройте кластер службы Azure Kubernetes, чтобы использовать управляемое удостоверение для извлечения образов контейнеров из реестра контейнеров Azure для развертываний pod.
Обзор управляемых удостоверений в Azure см. в статье "Что такое управляемые удостоверения для ресурсов Azure"?
Вы можете назначить управляемое удостоверение ролью с правами только на извлечение, на отправку и извлечение или с другими разрешениями в одном или нескольких частных реестрах в Azure. Полный список ролей реестра см. в обзоре разрешений и ролей реестра контейнеров Azure.
Затем используйте удостоверение для проверки подлинности в любой службе, поддерживающей управляемые удостоверения, без каких-либо учетных данных в коде.
В этой статье вы узнаете, как:
- Включите пользовательское удостоверение или системное удостоверение на виртуальной машине Azure (ВМ).
- Предоставить доступ идентификатору к контейнерному реестру Azure
- Использовать управляемое удостоверение для доступа к реестру и извлечения образа контейнера
Предпосылки
Чтобы выполнить действия, описанные в этой статье, можно использовать Azure CLI или Azure PowerShell. Используйте последнюю версию любого средства. Если у вас нет установленного средства, см. статью "Установка Azure CLI " или "Установка Azure PowerShell".
Чтобы настроить реестр контейнеров и отправить в него образ контейнера, необходимо также установить Docker локально. Docker предоставляет пакеты, которые позволяют быстро настроить Docker в системе под управлением macOS, Windows или Linux.
Если у вас еще нет реестра контейнеров Azure, создайте реестр и отправьте в него образ контейнера. Выполните действия по созданию реестра с помощью Azure CLI, Azure PowerShell или портала Azure.
В этой статье предполагается, что у вас есть aci-helloworld:v1 образ контейнера, хранящийся в реестре. В примерах используется имя реестра myContainerRegistry. Эти значения можно заменить собственными именами реестра и образов.
Создание и настройка виртуальной машины с поддержкой Docker
Создайте виртуальную машину Ubuntu с поддержкой Docker для использования с управляемым удостоверением. Кроме того, необходимо установить Azure CLI или Azure PowerShell на виртуальной машине в зависимости от того, какое средство вы хотите использовать.
Если у вас уже установлена виртуальная машина Azure с помощью Azure CLI или Azure PowerShell, вы можете перейти к следующему разделу.
Создание виртуальной машины
Развертывание виртуальной машины Ubuntu Azure по умолчанию с помощью az vm create. В следующем примере создается виртуальная машина с именем myDockerVM в существующей группе ресурсов с именем myResourceGroup:
az vm create \
--resource-group myResourceGroup \
--name myDockerVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Создание виртуальной машины занимает несколько минут. После завершения команды обратите внимание на publicIpAddress, отображаемый в Azure CLI. Используйте этот адрес для подключения SSH к виртуальной машине на следующем шаге.
Установка Docker на виртуальной машине
Затем установите Docker на виртуальной машине, чтобы он смог извлечь и запустить образы контейнеров из реестра контейнеров Azure.
После запуска виртуальной машины создайте подключение SSH к виртуальной машине. Замените publicIpAddress общедоступным IP-адресом виртуальной машины.
ssh azureuser@publicIpAddress
Выполните следующую команду, чтобы установить Docker на виртуальной машине:
sudo apt update
sudo apt install docker.io -y
После установки выполните следующую команду, чтобы проверить правильность работы Docker на виртуальной машине:
sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Установка Azure CLI или Azure PowerShell на виртуальной машине
Выполните действия, описанные в статье Установка Azure CLI с помощью apt, чтобы установить Azure CLI на виртуальной машине Ubuntu. Для этой статьи обязательно установите последнюю версию.
После установки Azure CLI выйдите из сеанса SSH.
Настройте виртуальную машину с управляемым удостоверением, назначенным пользователем
Управляемое удостоверение, назначаемое пользователем , — это автономный ресурс Azure, управляемый отдельно от ресурсов, использующих его. Управляемое удостоверение, назначаемое пользователем, можно связать с несколькими ресурсами Azure.
В этом разделе объясняется, как настроить виртуальную машину с удостоверением, назначенным пользователем, для безопасного доступа к реестру контейнеров Azure.
Создание управляемой идентичности, назначаемой пользователем
Создайте удостоверение в подписке с помощью команды az identity create . Вы можете использовать ту же группу ресурсов, которую вы использовали ранее для создания реестра контейнеров или виртуальной машины, или выбрать другую.
az identity create --resource-group myResourceGroup --name myACRId
Чтобы настроить удостоверение на следующих шагах, выполните команду az identity show для сохранения идентификатора ресурса и идентификатора субъекта-службы удостоверения в переменных.
# 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)
Вам понадобится идентификатор удостоверения на следующем шаге при входе в интерфейс командной строки из виртуальной машины, отобразите значение:
echo $userID
Идентификатор имеет форму:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId
Настройка виртуальной машины с управляемым удостоверением, назначенным пользователем
Затем настройте виртуальную машину Docker, чтобы использовать назначаемое пользователем удостоверение, созданное на предыдущем шаге.
Используется az vm identity assign для настройки виртуальной машины с помощью идентификатора, полученного на предыдущем шаге:
az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID
Предоставьте управляемому удостоверению, назначенному пользователем, доступ к реестру контейнеров
Теперь настройте идентификатор так, чтобы обеспечить его доступ к реестру контейнеров.
Необходимо назначить Container Registry Repository Reader (для реестров с поддержкой ABAC) или AcrPull (для реестров, отличных от ABAC). Это назначение роли предоставляет разрешения на загрузку данных в регистре.
Чтобы предоставить разрешения на вытягивание и отправку, назначьте либо роль Container Registry Repository Writer для реестров с поддержкой ABAC, либо роль AcrPush для реестров без поддержки ABAC.
Используйте az acr show для получения идентификатора ресурса реестра:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Используется az role assignment create для назначения требуемой роли идентификатору. В этом примере назначается роль Container Registry Repository Reader, которая предоставляет только права на извлечение из реестра, поддерживающего ABAC.
az role assignment create --assignee $spID --scope $resourceID \
--role "Container Registry Repository Reader" # For ABAC-enabled registries. Otherwise, use AcrPull for non-ABAC registries.
Используйте назначенное пользователем управляемое удостоверение для доступа к реестру
SSH в виртуальную машину Docker, настроенную с использованием удостоверения, а затем выполните следующие команды, чтобы предоставить удостоверению доступ к вашему реестру контейнеров.
На виртуальной машине выполните проверку подлинности в Azure CLI с помощью az login, используя удостоверение, полученное ранее.
az login --identity --username <userID>
Затем выполните проверку подлинности в реестре с помощью az acr login. При использовании этой команды интерфейс командной строки использует маркер Active Directory, созданный при выполнении az login , чтобы легко пройти проверку подлинности сеанса в реестре контейнеров.
az acr login --name myContainerRegistry
Вы должны увидеть сообщение Login succeeded. Затем можно выполнять docker команды без предоставления учетных данных. Например, выполните команду docker pull , чтобы извлечь aci-helloworld:v1 образ, указав имя сервера входа в реестр:
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Настройте виртуальную машину с управляемой идентичностью, назначенной системой.
Управляемое удостоверение, назначаемое системой , — это функция Azure, которая позволяет виртуальной машине автоматически управлять собственным удостоверением в Azure Active Directory. В этом разделе объясняется, как настроить виртуальную машину с помощью назначаемого системой удостоверения для безопасного доступа к реестру контейнеров Azure.
Включите управляемую удостоверенность, назначенную системой, на вашей ВМ
Используйте az vm identity assign, чтобы настроить виртуальную машину Docker с системно назначенным идентификатором.
az vm identity assign --resource-group myResourceGroup --name myDockerVM
Используйте az vm show для задания переменной значению principalId (идентификатор основного компонента службы) удостоверения виртуальной машины, чтобы использовать в последующих шагах.
spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)
Предоставьте системно назначенному управляемому идентификатору доступ к реестру контейнеров.
Теперь настройте идентификацию таким образом, чтобы она имела доступ к регистру контейнеров.
Необходимо назначить Container Registry Repository Reader (для реестров с поддержкой ABAC) или AcrPull (для реестров, отличных от ABAC). Это назначение роли предоставляет разрешения на загрузку данных в регистре.
Чтобы предоставить разрешения на вытягивание и отправку, назначьте либо роль Container Registry Repository Writer для реестров с поддержкой ABAC, либо роль AcrPush для реестров без поддержки ABAC.
Используйте az acr show для получения идентификатора ресурса реестра:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Используется az role assignment create для назначения требуемой роли идентификатору. В этом примере назначается роль Container Registry Repository Reader, которая предоставляет только права на скачивание для реестра с поддержкой ABAC.
az role assignment create --assignee $spID --scope $resourceID \
--role "Container Registry Repository Reader"
Использование управляемого удостоверения, назначаемого системой, для доступа к реестру
SSH на виртуальную машину Docker, сконфигурированную с помощью удостоверения, а затем выполните следующие команды, чтобы удостоверение получило доступ к вашему реестру контейнеров.
На виртуальной машине выполните проверку подлинности в Azure CLI с помощью удостоверения, назначенного системой, используя az login.
az login --identity
Затем выполните проверку подлинности в реестре с помощью az acr login. При использовании этой команды интерфейс командной строки использует маркер Active Directory, созданный при выполнении az login , чтобы легко пройти проверку подлинности сеанса в реестре контейнеров.
az acr login --name myContainerRegistry
Вы должны увидеть сообщение Login succeeded. Затем можно выполнять docker команды без предоставления учетных данных. Например, выполните команду docker pull , чтобы извлечь aci-helloworld:v1 образ, указав имя сервера входа в реестр:
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Связанный контент
- Узнайте больше о управляемых удостоверениях для ресурсов Azure.
- Узнайте, как использовать управляемое удостоверение, назначаемое системой или назначаемое пользователем, с помощью службы приложений и реестра контейнеров Azure.
- Узнайте, как развернуть контейнерный образ из реестра контейнеров Azure, используя управляемое удостоверение.