Аутентификация с помощью частного реестра контейнеров DockerAuthenticate with a private Docker 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.

Вы можете входить в реестр напрямую с помощью отдельного входа, а ваши приложения и оркестраторы контейнеров могут осуществлять автоматическую аутентификацию с помощью субъекта-службы Active Directory Azure (Azure AD).You can log in 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.

Отдельный вход с помощью 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 в вашем сеансе не потребуется вводить имя пользователя или пароль.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 может использовать маркер в течение 1 часа, поэтому мы рекомендуем всегда входить в реестр перед выполнением команды docker.For registry access, the token used by az acr login is valid for 1 hour, 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 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 или использовать существующий субъект-службу, см. раздел Аутентификация в реестре контейнеров Azure с помощью субъектов.For CLI scripts to create a service principal app ID and password for authenticating with an Azure container registry, or to use an existing service principal, see Azure Container Registry authentication with service principals.

Субъекты-службы позволяют выполнять автономное подключение к реестру в сценариях извлечения и отправки, примеры которых указаны ниже.Service principals enable headless connectivity to a registry in both pull and push scenarios like the following:

  • Извлечение: развертывание контейнеров из реестра в системы оркестрации, в том числе Kubernetes, DC/OS и Docker Swarm.Pull: Deploy containers from a registry to orchestration systems including Kubernetes, DC/OS, and Docker Swarm. Данные из реестров контейнеров можно также извлекать в связанные службы Azure, например в Azure Kubernetes Service, Azure Container Instances, службу приложений, Batch, Service Fabric и другие.You can also pull from container registries to related Azure services such as Azure Kubernetes Service, Azure Container Instances, App Service, Batch, Service Fabric, and others.

  • Отправка: создание образов контейнеров и их отправка в решения непрерывной интеграции и развертывания (например, Azure Pipelines или Jenkins).Push: Build container images and push them to a registry using continuous integration and deployment solutions like Azure Pipelines or Jenkins.

Вы можете также выполнить вход напрямую с помощью субъекта-службы.You can also log in directly with a service principal. При запуске следующей команды, когда появляется запрос в интерактивном режиме, укажите идентификатор приложения (имя пользователя) и пароль субъекта-службы.When you run the following command, interactively provide the service principal appID (username) and password when prompted. Рекомендации по управлению учетными данными см. в справочнике по команде docker login.For best practices to manage login credentials, see the docker login command reference:

docker login myregistry.azurecr.io

После входа в систему Docker кэширует учетные данные, поэтому вам не нужно запоминать идентификатор приложения.Once logged in, Docker caches the credentials, so you don't need to remember the app ID.

Совет

Можно создать пароль субъекта-службы повторно, выполнив команду az ad sp reset-credentials.You can regenerate the password of a service principal by running the az ad sp reset-credentials command.

Учетная запись администратора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 with 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 

Чтобы включить учетную запись администратора для существующего реестра, можно использовать параметр --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