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

Параметр --use-identity является обязательным, если в реестре отключен доступ к общедоступной сети и используются только определенные доверенные службы для выполнения задач ACR. См. пример использования Задач ACR в качестве доверенной службы.

5. Выполнение задачи

После настройки задачи с использованием управляемого удостоверения запустите ее выполнение. Например, чтобы проверить одну из задач, созданных в этой статье, запустите ее вручную с помощью команды az acr task run. Если настроены дополнительные триггеры автоматического запуска задач, выполнение задач начинается автоматически при срабатывании триггеров.

Следующие шаги

Из этой статьи вы узнали, как активировать и использовать назначаемое пользователем или системой управляемое удостоверение в задаче ACR. Сценарии для доступа к защищенным ресурсам из задачи ACR с помощью управляемого удостоверения см. в следующих статьях: