Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Существует несколько способов проверки подлинности в реестре контейнеров Azure, каждый из которых применим к одному или нескольким сценариям использования реестра.
Рекомендуемые способы:
- Проверка подлинности в реестре непосредственно с помощью отдельного входа
- Приложения и оркестраторы контейнеров могут выполнять автоматическую или без участия человека проверку подлинности с использованием учетной записи службы Microsoft Entra.
Если вы используете реестр контейнеров со службой Azure Kubernetes (AKS) или другим кластером Kubernetes, ознакомьтесь со сценариями проверки подлинности с помощью реестра контейнеров Azure из Kubernetes.
Варианты проверки подлинности
В следующей таблице перечислены доступные методы проверки подлинности и типичные сценарии. См. связанные материалы для подробностей.
Метод | Процедура проверки подлинности | Сценарии | Управление доступом на основе ролей Azure (Azure RBAC) | Ограничения |
---|---|---|---|---|
Индивидуальное удостоверение AD |
az acr login в Azure CLIConnect-AzContainerRegistry в Azure PowerShell |
Интерактивная отправка и извлечение разработчиками, тестировщиками | Да | Маркер AD должен обновляться каждые 3 часа |
AD service principal | docker login az acr login в Azure CLIConnect-AzContainerRegistry в Azure PowerShellПараметры входа в реестр в API или инструментах Секрет pull для Kubernetes |
Автоматическая отправка без участия человека из потока CI/CD Автоматическое (без участия человека) извлечение в Azure и во внешние службы |
Да | Срок действия пароля sp по умолчанию — 1 год |
Управляемый идентификатор для ресурсов Azure | docker login az acr login в Azure CLIConnect-AzContainerRegistry в Azure PowerShell |
Отправка без присмотра из конвейера CI/CD Azure Автономное подключение к службам Azure |
Да | Используйте только избранные службы Azure, поддерживающие управляемые удостоверения для ресурсов Azure. |
Управляемое удостоверение кластера AKS | Присоедините реестр при создании или обновлении кластера AKS | Автоматическое извлечение в кластер AKS в той же или другой подписке | Нет, только запрос доступа | Доступно только в кластере AKS Невозможно использовать для межтенантной проверки подлинности |
Субъект-служба кластера AKS | Включение при создании или обновлении кластера AKS | Автоматическое извлечение в кластер AKS из реестра в другой учетной записи AD без участия пользователя | Нет, только доступ на чтение | Доступно только в кластере AKS |
Пользователь администратора | docker login |
Интерактивная отправка и извлечение отдельным разработчиком или тестировщиком Развертывание образа портала из реестра в Службу приложений Azure или экземпляры контейнеров Azure |
Нет, всегда вытягивать и отправлять доступ | Отдельная учетная запись для каждого реестра, не рекомендуется для нескольких пользователей |
Токен доступа с областью действия репозитория | docker login az acr login в Azure CLIConnect-AzContainerRegistry в Azure PowerShellсекрет доступа Kubernetes |
Интерактивная загрузка/выгрузка в репозиторий, выполняемая разработчиком или тестировщиком. Автономное извлечение из репозитория отдельной системой или внешним устройством |
Да | В настоящее время не интегрирован со специальной учетной записью AD |
Отдельный вход с идентификатором Microsoft Entra
При работе с реестром напрямую, например, извлечение образов из реестра на рабочую станцию разработки и отправка образов с рабочей станции разработки в созданный вами реестр, удостоверяйтесь, используя своё индивидуальное удостоверение Azure. Войдите в Azure CLI, используя az login, а затем выполните команду az acr login:
az login
az acr login --name <acrName>
При входе в az acr login
систему интерфейс командной строки использует токен, созданный при выполнении az login
, для бесшовной аутентификации вашего сеанса с реестром. Чтобы завершить аутентификацию, интерфейс командной строки Docker (CLI) и демон Docker должны быть установлены и запущены в вашей среде.
az acr login
использует клиент Docker для задания токена Microsoft Entra в файле docker.config
. После входа в систему учетные данные кэшируются, а последующие docker
команды в сеансе не требуют имени пользователя или пароля.
Подсказка
Также используйте az acr login
для проверки подлинности отдельного удостоверения, когда вы хотите отправить или извлечь артефакты, отличные от образов Docker, в свой реестр, например артефакты OCI.
Для доступа к реестру токен, используемый az acr login
, действует в течение 3 часов, поэтому мы рекомендуем всегда входить в реестр перед выполнением команды docker
. Если срок действия токена истек, его можно обновить, повторно используя команду az acr login
, чтобы повторно пройти проверку подлинности.
Использование az acr login
с удостоверениями Azure обеспечивает ролевое управление доступом Azure (Azure RBAC). Для некоторых сценариев может потребоваться войти в реестр с собственным удостоверением в идентификаторе Microsoft Entra или настроить других пользователей Azure с определенными ролями. См. Обзор разрешений и ролей Azure Container Registry Entra. Для межсервисных сценариев или для удовлетворения потребностей рабочей группы или рабочего процесса разработки, если вы не хотите управлять доступом каждого пользователя отдельно, вы также можете использовать управляемое удостоверение для ресурсов Azure для входа.
az acr login с использованием флага --expose-token
В некоторых случаях необходимо пройти проверку подлинности с az acr login
, когда демон Docker не запущен в вашей среде. Например, может потребоваться выполнить az acr login
сценарий в Azure Cloud Shell, который предоставляет интерфейс командной строки Docker, но не запускает управляющую программу Docker.
Для этого сценария сначала запустите az acr login
с параметром --expose-token
. Этот параметр предоставляет токен доступа вместо авторизации через CLI Docker.
az acr login --name <acrName> --expose-token
Выходные данные отображают маркер доступа, сокращенный здесь:
{
"accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
"loginServer": "myregistry.azurecr.io"
}
Для аутентификации для реестра рекомендуется хранить учетные данные токена в безопасном месте и следовать рекомендациям по управлению учетными данными для 'docker login'. Например, сохраните значение токена в переменной среды:
TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)
Затем выполните команду docker login
, передав 00000000-0000-0000-0000-000000000000
имя пользователя и используя маркер доступа в качестве пароля:
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
Аналогичным образом можно использовать токен, возвращаемый az acr login
helm registry login
командой для проверки подлинности в реестре.
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Принципал службы
Если вы назначаете служебный принципал реестру, ваше приложение или служба могут использовать его для бесконтактной аутентификации. Сервисные принципалы позволяют системе управления доступом на основе ролей Azure (Azure RBAC) в реестре, и вы можете назначить реестру несколько сервисных принципалов. Несколько субъектов-служб позволяют определять различные возможности доступа для разных приложений.
Маркер проверки подлинности ACR создается при входе в ACR и обновляется после последующих операций. Время жизни для этого токена составляет 3 часа.
Список доступных ролей см. в обзоре разрешений и ролей реестра контейнеров Azure.
Для CLI-скриптов создания субъекта-службы для аутентификации с реестром контейнеров Azure и для получения дополнительных рекомендаций см. статью "Аутентификация реестра контейнеров Azure с помощью субъектов-служб".
Учетная запись администратора
Каждый реестр контейнеров включает учетную запись администратора, которая по умолчанию отключена. Вы можете включить пользователя администратора и управлять учетными данными на портале Azure или с помощью Azure CLI, Azure PowerShell или других средств Azure. Учетная запись администратора имеет полные разрешения для реестра.
Учетная запись администратора в настоящее время требуется для некоторых сценариев для развертывания образа из реестра контейнеров в определенных службах Azure. Например, учетная запись администратора необходима при использовании портала Azure для развертывания образа контейнера из реестра непосредственно в службы экземпляров контейнеров Azure или веб-приложения для контейнеров в Azure.
Это важно
Учетная запись администратора предназначена для одного пользователя для доступа к реестру, главным образом для тестирования. Мы не рекомендуем совместно использовать учетные данные учетной записи администратора среди нескольких пользователей. Все пользователи, аутентифицирующиеся через учетную запись администратора, отображаются как один пользователь с доступом на отправку и получение к реестру. Изменение или отключение этой учетной записи отключает доступ к реестру для всех пользователей, использующих свои учетные данные. Для пользователей и субъектов-служб в сценариях автоматического входа рекомендуется использовать отдельные удостоверения.
Учетная запись администратора предоставляется двумя паролями, оба из которых можно повторно создать. Новые пароли, созданные для учетных записей администратора, доступны немедленно. Повторное создание паролей для учетных записей администратора займет 60 секунд для репликации и доступности. Два пароля позволяют поддерживать подключение к реестру с помощью одного пароля при повторном создании другого. Если учетная запись администратора включена, вы можете передать имя пользователя и любой пароль команде docker login
при появлении запроса на обычную проверку подлинности в реестр. Рассмотрим пример.
docker login myregistry.azurecr.io
Для рекомендаций по управлению учетными данными входа, см. справочный раздел по команде docker login.
Чтобы включить пользователя администратора для существующего реестра, можно использовать --admin-enabled
параметр команды az acr update в Azure CLI:
az acr update -n <acrName> --admin-enabled true
Вы можете включить пользователя администратора на портале Azure, перейдя в реестр, выбрав ключи доступа в разделе SETTINGS, а затем включите в разделе "Администратор".
Вход с помощью альтернативного инструмента для контейнеризации вместо Docker
В некоторых сценариях необходимо использовать альтернативные инструменты контейнеров, такие как podman
, вместо общепринятого инструмента контейнера docker
. Например: Docker больше недоступен в RHEL 8 и 9, поэтому необходимо переключить средство контейнера.
Средство контейнера по умолчанию установлено на docker
для команд az acr login
. Если вы не установите средство контейнера по умолчанию, и команда docker
отсутствует в вашей среде, будет показана следующая ошибка:
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.
Чтобы изменить средство контейнера по умолчанию, используемое az acr login
командой, можно задать переменную DOCKER_COMMAND
среды. Рассмотрим пример.
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Замечание
Для использования этой функции требуется Azure CLI версии 2.59.0 или более поздней версии. Чтобы узнать версию, выполните команду az --version
. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".