Аутентификация в реестре контейнеров AzureAuthenticate with an Azure container registry

Существует несколько способов аутентификации в реестре контейнеров Azure, каждый из которых подходит для одного или нескольких сценариев использования реестра.There are several ways to authenticate with an Azure container registry, each of which is applicable to one or more registry usage scenarios.

Рекомендуется включить проверку подлинности в реестре напрямую через отдельное имя входа, а приложения и управляющие контейнеры могут выполнять автоматическую или бездисплейную проверку подлинности с помощью субъекта-службыAzure Active Directory (Azure AD).Recommended ways include authenticating to a registry directly via individual login, or your applications and container orchestrators can perform unattended, or "headless," authentication by using an Azure Active Directory (Azure AD) service principal.

Параметры проверки подлинностиAuthentication options

В следующей таблице перечислены доступные методы проверки подлинности и рекомендуемые сценарии.The following table lists available authentication methods and recommended scenarios. Дополнительные сведения см. в разделе связанное содержимое.See linked content for details.

МетодMethod Проверка подлинностиHow to authenticate СценарииScenarios  RBACRBAC  ОграниченияLimitations 
Индивидуальное удостоверение AD Individual AD identity  az acr login в Azure CLI az acr login in Azure CLI  Интерактивные push-уведомления, разработчики, тестировщикиInteractive push/pull by developers, testers  ДаYes  Маркер AD должен обновляться каждые 3 часаAD token must be renewed every 3 hours 
Субъект-служба AD AD service principal  docker login

az acr loginв Azure CLIaz acr login in Azure CLI

Параметры входа в реестр в API или ИнструментарийRegistry login settings in APIs or tooling

Секретный запрос Kubernetes   Kubernetes pull secret   
Автоматическая отправка из конвейера CI/CDUnattended push from CI/CD pipeline

Автоматическое извлечение в Azure или внешние службыUnattended pull to Azure or external services 
ДаYes  Срок действия пароля SP по умолчанию — 1 годSP password default expiry is 1 year 
Интеграция с AKS Integrate with AKS  Присоединение реестра при создании или обновлении кластера AKSAttach registry when AKS cluster created or updated  Автоматическое извлечение в кластер AKSUnattended pull to AKS cluster  Нет, только по запросуNo, pull access only  Доступно только в кластере AKSOnly available with AKS cluster 
Управляемое удостоверение для ресурсов Azure Managed identity for Azure resources  docker login

az acr login в Azure CLIaz acr login in Azure CLI
Автоматическая отправка из конвейера Azure CI/CDUnattended push from Azure CI/CD pipeline

Автоматическое извлечение в службы AzureUnattended pull to Azure services

ДаYes  Используйте только службы Azure, которые поддерживают управляемые удостоверения для ресурсов AzureUse only from Azure services that support managed identities for Azure resources
Пользователь с правами администратора Admin user  docker login  Интерактивное push-уведомление для отдельного разработчика или тестераInteractive push/pull by individual developer or tester  Нет, всегда вытягивание и принудительный доступNo, always pull and push access  Одна учетная запись на реестр, не рекомендуется для нескольких пользователейSingle account per registry, not recommended for multiple users 
Маркер доступа с областью действия репозитория Repository-scoped access token  docker login

az acr loginв Azure CLIaz acr login in Azure CLI
Интерактивная отправка и извлечение в репозиторий отдельным разработчиком или инженером-тестировщикомInteractive push/pull to repository by individual developer or tester

Автоматическая отправка и извлечение в репозитории по отдельным системным или внешним устройствамUnattended push/pull to repository by individual system or external device 
ДаYes  В настоящее время не интегрировано с удостоверением ADNot currently integrated with AD identity 

Отдельный вход с помощью Azure ADIndividual login with Azure AD

При работе с реестром напрямую, например при извлечении образов на рабочую станцию разработки и отправке образов с нее, выполняйте аутентификацию с помощью команды az acr login в Azure CLI.When working with your registry directly, such as pulling images to and pushing images from a development workstation, authenticate by using the az acr login command in the Azure CLI:

az acr login --name <acrName>

При входе с помощью команды az acr login интерфейс командной строки использует маркер, созданный при выполнении команды az login, чтобы прозрачно выполнить аутентификацию вашего сеанса в реестре.When you log in with az acr login, the CLI uses the token created when you executed az login to seamlessly authenticate your session with your registry. Чтобы завершить поток проверки подлинности, необходимо установить и запустить DOCKER в вашей среде.To complete the authentication flow, Docker must be installed and running in your environment. az acr loginиспользует клиент DOCKER для установки маркера Azure Active Directory в docker.config файле.az acr login uses the Docker client to set an Azure Active Directory token in the docker.config file. После входа таким образом ваши учетные данные сохраняются в кэше, и при последующем выполнении команд docker в вашем сеансе не потребуется вводить имя пользователя или пароль.Once you've logged in this way, your credentials are cached, and subsequent docker commands in your session do not require a username or password.

Совет

Также используйте az acr login для проверки подлинности отдельного удостоверения, если вы хотите передать артефакты, отличные от образов DOCKER, в реестр, например артефакты OCI.Also use az acr login to authenticate an individual identity when you want to push or pull artifacts other than Docker images to your registry, such as OCI artifacts.

Для доступа к реестру маркер, используемый az acr login в, действителен в течение 3 часов, поэтому рекомендуется всегда выполнять вход в реестр перед выполнением docker команды.For registry access, the token used by az acr login is valid for 3 hours, so we recommend that you always log in to the registry before running a docker command. Если срок действия маркера истекает, его можно обновить его с помощью команды az acr login, чтобы повторно пройти аутентификацию.If your token expires, you can refresh it by using the az acr login command again to reauthenticate.

Использование az acr login с удостоверениями Azure обеспечивает доступ на основе ролей.Using az acr login with Azure identities provides role-based access. В некоторых случаях может потребоваться войти в реестр с собственным удостоверением в Azure AD.For some scenarios, you may want to log in to a registry with your own individual identity in Azure AD. Для сценариев перекрестных служб или для решения задач Рабочей группы или процесса разработки, где вы не хотите управлять отдельным доступом, вы также можете войти в систему с помощью управляемого удостоверения для ресурсов Azure.For cross-service scenarios or to handle the needs of a workgroup or a development workflow where you don't want to manage individual access, you can also log in with a managed identity for Azure resources.

Субъект-службаService principal

Если назначить субъект-службу для реестра, приложение или служба сможет использовать его для автоматической аутентификации.If you assign a service principal to your registry, your application or service can use it for headless authentication. Использование субъектов-служб обеспечивает доступ к реестру на основе ролей, и одному реестру можно назначить несколько субъектов-служб.Service principals allow role-based access to a registry, and you can assign multiple service principals to a registry. Применение нескольких субъектов-служб позволяет определить разные права доступа для приложений.Multiple service principals allow you to define different access for different applications.

Доступные роли для реестра контейнеров включают:The available roles for a container registry include:

  • AcrPull: извлечениеAcrPull: pull

  • AcrPush: извлечение и отправкаAcrPush: pull and push

  • Владелец: извлечение, отправка и назначение ролей другим пользователям.Owner: pull, push, and assign roles to other users

Полный список ролей см. в статье, посвященной ролям и разрешениям реестра контейнеров Azure.For a complete list of roles, see Azure Container Registry roles and permissions.

Сведения о создании субъекта-службы для проверки подлинности в реестре контейнеров Azure с помощью сценариев CLI см. в статье Проверка подлинности реестра контейнеров Azure с субъектами-службами.For CLI scripts to create a service principal for authenticating with an Azure container registry, and more guidance, see Azure Container Registry authentication with service principals.

Учетная запись администратораAdmin account

Каждый реестр контейнеров содержит учетную запись администратора, которая отключена по умолчанию.Each container registry includes an admin user account, which is disabled by default. Вы можете включить учетную запись администратора и управлять ее учетными данными на портале Azure или с помощью Azure CLI либо других средств Azure.You can enable the admin user and manage its credentials in the Azure portal, or by using the Azure CLI or other Azure tools.

Важно!

Учетная запись администратора предоставляет доступ к реестру одному пользователю. Она предназначена, главным образом, для тестирования.The admin account is designed for a single user to access the registry, mainly for testing purposes. Не рекомендуется совместно использовать учетные данные учетной записи администратора между несколькими пользователями.We do not recommend sharing the admin account credentials among multiple users. Все пользователи, выполняющие аутентификацию с учетной записью администратора, отображаются как один пользователь с возможностью извлечения данных из реестра и отправки данных в него.All users authenticating with the admin account appear as a single user with push and pull access to the registry. Изменив или отключив эту учетную запись, вы ограничите доступ к реестру для пользователей, использующих эти учетные данные.Changing or disabling this account disables registry access for all users who use its credentials. Для пользователей и субъектов-служб в сценариях автоматического входа рекомендуется использовать отдельные удостоверения.Individual identity is recommended for users and service principals for headless scenarios.

Учетной записи администратора предоставляются два пароля, каждый из которых можно создать повторно.The admin account is provided with two passwords, both of which can be regenerated. Благодаря этому вы можете подключаться к реестру, используя один пароль, пока второй создается повторно.Two passwords allow you to maintain connection to the registry by using one password while you regenerate the other. Если учетная запись администратора включена, вы можете указать в команде docker login имя пользователя и пароль, когда будет предложено выполнить базовую аутентификацию в реестре.If the admin account is enabled, you can pass the username and either password to the docker login command when prompted for basic authentication to the registry. Пример:For example:

docker login myregistry.azurecr.io 

Рекомендации по управлению учетными данными для входа см. в справочнике по командам DOCKER login .For best practices to manage login credentials, see the docker login command reference.

Чтобы включить учетную запись администратора для существующего реестра, можно использовать параметр --admin-enabled в команде az acr update в Azure CLI.To enable the admin user for an existing registry, you can use the --admin-enabled parameter of the az acr update command in the Azure CLI:

az acr update -n <acrName> --admin-enabled true

Чтобы включить учетную запись администратора на портале Azure, перейдите к реестру, выберите Ключи доступа в разделе Параметры, затем щелкните Включить в разделе Пользователь-администратор.You can enable the admin user in the Azure portal by navigating your registry, selecting Access keys under SETTINGS, then Enable under Admin user.

Включение учетной записи администратора на портале Azure

Дальнейшие шагиNext steps