Использование управляемого удостоверения Azure в задачах ACR
Активируйте управляемое удостоверение для ресурсов Azure в задаче ACR, чтобы задача могла получить доступ к другим ресурсам Azure, не требуя при этом предоставления учетных данных или управления ими. Например, управляемое удостоверение можно использовать для активации шага задачи, на котором выполняется извлечение или отправка образов контейнеров в другой реестр.
Из этой статьи вы узнаете, как использовать Azure CLI для активации назначаемого пользователем или системой управляемого удостоверения в задаче ACR. Для этого можно использовать Azure Cloud Shell или локальный экземпляр Azure CLI. Если вы хотите использовать его локально, потребуется версия 2.0.68 или более поздняя. Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Примеры команд в этой статье служат для иллюстрации процесса создания задачи сборки базового образа с активированным управляемым идентификатором, при этом используется команда az acr task create. Примеры сценариев для доступа к защищенным ресурсам из задачи ACR с помощью управляемого удостоверения см. в следующих статьях:
- Межрегиерная проверка подлинности
- Доступ к внешним ресурсам с помощью секретов, хранящихся в Azure Key Vault
Для чего нужны управляемые удостоверения?
Управляемое удостоверение для ресурсов Azure предоставляет выбранные службы Azure с автоматически управляемым удостоверением в идентификаторе Microsoft Entra. Вы можете настроить задачу ACR с использованием управляемого удостоверения, чтобы при выполнении ее шагов доступ к другим защищенным ресурсам Azure предоставлялся без передачи учетных данных.
Управляемые удостоверения бывают двух типов:
Назначаемые пользователем удостоверения, которые можно назначить нескольким ресурсам и хранить столько, сколько вы хотите. Назначаемые пользователем удостоверения сейчас доступны в предварительной версии.
Назначаемое системой удостоверение, которое является уникальным для конкретного ресурса, например задачи ACR, и остается активным в течение всего времени существования этого ресурса.
В задаче ACR можно активировать один или оба типа идентификаций. Предоставьте этому управляющему удостоверению доступ к другому ресурсу, как и любому субъекту безопасности. Когда задача выполняется, удостоверение используется для получения доступа к ресурсу на каждом этапе выполнения задачи, где это необходимо.
Этапы использования управляемого удостоверения
Выполнив эти общие указания, вы сможете использовать управляемое удостоверение в задаче ACR.
1. Создание назначаемого пользователем удостоверения (необязательно)
Если вы планируете использовать назначаемое пользователем удостоверение, используйте существующее удостоверение или создайте удостоверение с помощью Azure CLI или других средств Azure. Например, используйте команду az identity create.
Если вы планируете использовать только назначаемое системой удостоверение, пропустите этот шаг. При создании задачи ACR вы создаете назначаемое системой удостоверение.
2. Включение идентификации для задачи ACR
При создании задачи ACR при необходимости можно активировать удостоверение, назначаемое либо пользователем, либо системой, или оба вида удостоверений. Например, передайте параметр --assign-identity
при выполнении команды az acr task create в Azure CLI.
Чтобы включить назначаемое системой удостоверение, передайте --assign-identity
без значения или со значением assign-identity [system]
. В следующем примере команда создает задачу Linux из общедоступного репозитория GitHub, которая собирает образ hello-world
и активирует назначаемое системой управляемое удостоверение.
az acr task create \
--image hello-world:{{.Run.ID}} \
--name hello-world --registry MyRegistry \
--context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
--file Dockerfile \
--commit-trigger-enabled false \
--assign-identity
Чтобы активировать пользовательское назначенное удостоверение, передайте --assign-identity
со значением идентификатора ресурса этого удостоверения. В следующем примере команда создает задачу Linux из общедоступного репозитория GitHub, которая собирает образ hello-world
и активирует назначаемое пользователем управляемое удостоверение.
az acr task create \
--image hello-world:{{.Run.ID}} \
--name hello-world --registry MyRegistry \
--context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
--file Dockerfile \
--commit-trigger-enabled false
--assign-identity <resourceID>
Идентификатор ресурса удостоверения можно получить с помощью команды az identity show. Идентификатор ресурса для идентификатора myUserAssignedIdentity в группе ресурсов myResourceGroup имеет такой вид:
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"
3. Предоставление разрешений удостоверениям для доступа к другим ресурсам Azure
В соответствии с требованиями задачи, предоставьте удостоверениям разрешения на доступ к другим ресурсам Azure. Вот некоторые примеры.
- Назначьте управляемому удостоверению роль с разрешениями на извлечение, отправку и другие действия в целевом реестре контейнеров в Azure. Полный список ролей реестра см. в статье Роли и разрешения Реестра контейнеров Azure.
- Назначьте управляемому удостоверению роль для чтения секретов в хранилище ключей Azure.
Используйте Azure CLI или другие инструменты Azure для управления доступом к ресурсам на основе ролей. Например, используйте команду az role assignment create, чтобы назначить удостоверению роль для доступа к ресурсу.
В следующем примере управляемому удостоверению присваивается разрешение на извлечение данных из реестра контейнеров. Команда задает идентификатор субъекта для удостоверения задачи и идентификатор ресурса для целевого реестра.
az role assignment create \
--assignee <principalID> \
--scope <registryID> \
--role acrpull
4. Добавление учетных данных в задачу (необязательно)
Если задаче требуются учетные данные для извлечения или отправки образов в другой пользовательский реестр или для доступа к другим ресурсам, добавьте для нее учетные данные. Воспользуйтесь командой az acr task credential add, чтобы добавить учетные данные, и передайте параметр --use-identity
, чтобы указать, что удостоверение может получить доступ к учетным данным.
Например, чтобы добавить учетные данные для системно назначенного удостоверения для аутентификации в реестре контейнеров Azure targetregistry, используйте use-identity [system]
.
az acr task credential add \
--name helloworld \
--registry myregistry \
--login-server targetregistry.azurecr.io \
--use-identity [system]
Чтобы добавить учетные данные для назначаемого пользователем удостоверения для аутентификации в реестре targetregistry, передайте use-identity
со значением идентификатора клиента этого удостоверения. Например:
az acr task credential add \
--name helloworld \
--registry myregistry \
--login-server targetregistry.azurecr.io \
--use-identity <clientID>
Для получения идентификатора клиента удостоверения, запустите команду az identity show. Идентификатор клиента — это GUID формы xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
5. Выполнение задачи
После настройки задачи с использованием управляемого удостоверения запустите ее выполнение. Например, чтобы проверить одну из задач, созданных в этой статье, запустите ее вручную с помощью команды az acr task run. Если настроены дополнительные триггеры автоматического запуска задач, выполнение задач начинается автоматически при срабатывании триггеров.
Следующие шаги
Из этой статьи вы узнали, как активировать и использовать назначаемое пользователем или системой управляемое удостоверение в задаче ACR. Сценарии для доступа к защищенным ресурсам из задачи ACR с помощью управляемого удостоверения см. в следующих статьях: