Поделиться через


Управление доступом на основе атрибутов (ABAC) с использованием Microsoft Entra для управления доступом в репозитории

Реестр контейнеров Azure (ACR) поддерживает управление доступом на основе атрибутов Microsoft Entra (ABAC) для управления разрешениями репозитория. Эта функция повышает безопасность, обеспечивая более детализированное управление разрешениями в репозиториях реестра контейнеров. ABAC расширяет управление доступом на основе ролей Microsoft Entra (RBAC), добавляя условия, привязанные к конкретным репозиториям, в назначениях ролей.

ABAC предназначен для управления разрешениями репозитория с помощью управления доступом на основе ролей Microsoft Entra (RBAC), назначений ролей Microsoft Entra и удостоверений Microsoft Entra. Для управления разрешениями репозитория без Microsoft Entra используйте разрешения репозитория на основе токенов, не относящиеся к Microsoft Entra.

Настройка режима разрешений назначения ролей реестра

Чтобы использовать Microsoft Entra ABAC для управления разрешениями репозитория, убедитесь, что для режима разрешений назначения ролей реестра задано значение "RBAC Registry + ABAC Repository Permissions". Этот режим позволяет использовать назначения ролей RBAC (с помощью встроенных ролей ACR) с необязательными условиями ABAC для области назначения ролей определенным репозиториям.

Можно настроить режим разрешений назначения ролей реестра во время создания реестра или обновления существующего реестра. Это назначение роли можно выполнить с помощью портала Azure или Azure CLI. Вы можете включить ABAC для любого реестра независимо от его номера SKU.

Замечание

Убедитесь, что установлена последняя версия Azure CLI, выполнив команду az upgradeAzure CLI. Кроме того, если вы ранее приняли участие в закрытой предварительной версии этой функции, возможно, вы установили пользовательское расширение частной предварительной версии для управления ACR ABAC. Это пользовательское расширение больше не требуется и следует удалить (чтобы избежать конфликтов), выполнив команду az extension remove --name acrabacAzure CLI.

Влияние на существующие назначения ролей

Это важно

Если вы настроите реестр для использования "RBAC Registry + ABAC Repository Permissions", некоторые существующие назначения ролей не учитываются или будут иметь различные эффекты, так как другой набор встроенных ролей ACR применяется к реестрам с поддержкой ABAC.

Например, роли AcrPull, AcrPush и AcrDelete не учитываются в реестре с включенной поддержкой ABAC. Вместо этого в реестрах с поддержкой ABAC используйте роли Container Registry Repository Reader, Container Registry Repository Writer, и Container Registry Repository Contributor для предоставления разрешений на использование образов на уровне реестра или репозитория.

Кроме того, привилегированные роли, такие как Owner, Contributorи Reader будут иметь различные последствия для реестра с поддержкой ABAC. Они предоставят только разрешения уровня управления для создания, обновления и удаления самого реестра. Эти привилегированные роли не предоставляют разрешений на уровне плоскости данных для репозиториев и образов в реестре.

Для получения дополнительной информации о роли, определяемой вашим сценарием и режимом разрешений на назначение ролей реестра, см. сценарии встроенных ролей ACR. Помимо этого, обратитесь к справочнику по встроенным ролям ACR для получения подробного описания каждой роли.

Влияние на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски

Это важно

Если вы настроите реестр для использования "RBAC Registry + ABAC Repository Permissions", новые и существующие задачи ACR, а также быстрые задачи, быстрые сборки и быстрые запуски, будут затронуты. Они больше не будут иметь доступ на плоскость данных по умолчанию к исходному реестру с поддержкой ABAC и его содержимому.

Сведения о последствиях этого изменения и предоставлении доступа к плоскости данных для задач ACR, быстрых задач, быстрых сборок и быстрых запусков в исходных реестрах с поддержкой ABAC см. в приложении: эффекты включения ABAC на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски.

Создание реестра с включенным ABAC

При создании реестра на портале Azure выберите параметр "Реестр RBAC и разрешения репозитория ABAC" в раскрывающемся списке "Режим разрешений назначения ролей".

Снимок экрана: создание реестра контейнеров с включенным ABAC.

Перейдите к заполнению остальной части формы создания реестра и нажмите кнопку "Создать", чтобы создать реестр. Дополнительные сведения о создании реестра см. в статье "Создание реестра контейнеров Azure" с помощью портала Azure.

Обновление существующего реестра для включения ABAC

Чтобы просмотреть существующий режим разрешений назначения ролей реестра, перейдите в колонку "Свойства" реестра. Текущий режим разрешений назначения ролей отображается в поле "Режим разрешений назначения ролей".

Чтобы обновить режим разрешений назначения ролей существующего реестра, выберите "RBAC Registry + ABAC Repository Permissions" (Разрешения репозитория RBAC и ABAC) и нажмите кнопку "Сохранить", чтобы обновить реестр.

Снимок экрана: обновление существующего реестра контейнеров для включения ABAC.

Назначение прав доступа для репозитория Microsoft Entra ABAC

Вы можете использовать портал Azure или Azure CLI для назначения условий Microsoft Entra ABAC для области назначений ролей определенным репозиториям. В этом разделе приведены примеры добавления условий ABAC для определенного репозитория, префикса репозитория (подстановочный знак) или нескольких префиксов репозитория (несколько подстановочных знаков).

Встроенные роли с поддержкой ABAC

Следующие встроенные роли ACR — это роли с включенной функцией ABAC. Вы можете указать необязательные условия ABAC для следующих ролей, чтобы при необходимости ограничивать назначения ролей конкретными репозиториями.

  • Container Registry Repository Reader — роль с поддержкой ABAC, которая предоставляет разрешения на чтение изображений, тегов и метаданных в репозиториях в реестре.
  • Container Registry Repository Writer — роль с поддержкой ABAC, которая предоставляет разрешения на чтение, запись и обновление изображений, тегов и метаданных в репозиториях в реестре.
  • Container Registry Repository Contributor — роль с поддержкой ABAC, которая предоставляет разрешения на чтение, запись, обновление и удаление изображений, тегов и метаданных в репозиториях в реестре.

Обратите внимание, что эти роли не поддерживают разрешения на перечисление списков репозиториев в реестре. Чтобы перечислить все репозитории в реестре (без предоставления разрешений на чтение содержимого репозитория), необходимо дополнительно назначить Container Registry Repository Catalog Lister роль. Эта отдельная роль не поддерживает условия ABAC и всегда имеет разрешения на перечисление всех репозиториев в реестре.

Это важно

Если вы назначаете роль с поддержкой ABAC без условий ABAC, назначение роли не будет ограничено репозиториями. Это означает, что назначение ролей без условий ABAC будет рассматриваться как назначение ролей на уровне реестра, предоставляя разрешения всем репозиториям в реестре. Чтобы ограничить назначение роли определенными репозиториями, необходимо включить условия ABAC при назначении роли с поддержкой ABAC.

Для получения дополнительной информации о роли, определяемой вашим сценарием и режимом разрешений на назначение ролей реестра, см. сценарии встроенных ролей ACR. Помимо этого, обратитесь к справочнику по встроенным ролям ACR для получения подробного описания каждой роли.

Назначение ролей области определенному репозиторию

В этом примере мы назначаем Container Registry Repository Reader роль для предоставления права чтения для одного репозитория. Добавив условия ABAC, это назначение роли позволяет извлекать изображения удостоверения, просматривать теги и читать метаданные только из указанного репозитория, предотвращая доступ к другим репозиториям в реестре.

Перейдите к панели "Управление доступом (IAM)" реестра. Нажмите кнопку "Добавить" и выберите "Добавить назначение ролей".

Снимок экрана добавления назначения роли.

Выберите Container Registry Repository Reader в качестве роли.

Снимок экрана: выбор роли для назначения.

Продолжайте, выбрав удостоверение, которому будет назначена роль.

Затем перейдите на вкладку "Условия". Нажмите кнопку "Добавить условие", чтобы добавить новое условие ABAC, чтобы ограничить область назначения роли.

Снимок экрана: добавление условий назначения ролей.

Выберите опцию "визуальный редактор" в конструкторе условий ABAC.

Снимок экрана: выбор параметра редактора визуальных элементов.

Выберите действия (разрешения), которые нужно предоставить для этой роли, ограниченной областью репозитория. Для большинства случаев выберите все действия (разрешения), принадлежащие ранее выбранной роли, чтобы удостоверения могли выполнять только эти действия в пределах области репозитория.

Снимок экрана: выбор действий и разрешений для предоставления.

Добавьте выражение для условия ABAC, чтобы ограничить назначение роли определенным репозиторием.

Снимок экрана, демонстрирующий процесс добавления выражения для условия ABAC.

Настройте следующие параметры выражения для ограничения условия ABAC для определенного репозитория.

  • Источник атрибута: Request
  • Атрибут: Repository name
  • Оператор: StringEqualsIgnoreCase
  • Значение: <repository-name> — полное имя репозитория.
    • Например, если полное имя репозитория равно nginx, введите nginx.
    • Если имя полного репозитория равно backend/nginx, введите backend/nginx.

Снимок экрана настройки выражения для определения границ условия ABAC для конкретного репозитория.

Нажмите кнопку "Сохранить", чтобы сохранить условие ABAC.

Просмотрите условие для назначения ролей ABAC. На странице обзора содержится выражение кода условия ABAC, которое может быть использовано для назначения той же роли с тем же условием ABAC, используя Azure CLI.

Снимок экрана: просмотр условия ABAC для ограничения области до конкретного репозитория.

Выполните назначение роли, нажав кнопку "Проверить и назначить".

После создания назначения роли можно просмотреть, изменить или удалить назначение роли. Перейдите к разделу "Управление доступом (IAM)" реестра и перейдите на вкладку "Назначения ролей", чтобы просмотреть список существующих назначений ролей, которые применяются к реестру.

Назначить роль с областью действия нескольким хранилищам, используя префикс имени хранилища (подстановочный знак)

В этом примере мы назначим Container Registry Repository Reader роль, чтобы предоставить разрешения на извлечение нескольким репозиториям с общим префиксом (подстановочным знаком). Добавив условия ABAC, это назначение роли позволяет извлекать изображения, просматривать теги и читать метаданные только из репозиториев с общим префиксом, предотвращая доступ к другим репозиториям в реестре.

Если вы выполнили предыдущий пример, чтобы назначить Container Registry Repository Reader роль определенному репозиторию, необходимо удалить это назначение роли (перейдя в панель "Управление доступом (IAM)" и выбрав вкладку "Назначения ролей"), прежде чем создавать новое с условием ABAC, ограниченным префиксом репозитория.

Выполните те же действия, что и в предыдущем примере , чтобы выполнить назначение роли с условиями ABAC.

На шаге, чтобы добавить выражение для условия ABAC, настройте выражение для условия ABAC, чтобы ограничить назначение роли несколькими репозиториями с общим префиксом (подстановочным знаком). Настройте следующие параметры:

  • Источник атрибута: Request
  • Атрибут: Repository name
  • Оператор: StringStartsWithIgnoreCase
  • Значение: <repository-prefix> - префикс репозиториев, включая косую черту /.
    • Например, чтобы предоставить разрешения всем репозиториям с префиксом backend/, такие как backend/nginx и backend/redis, введите backend/.
    • Чтобы предоставить разрешения всем репозиториям с префиксом frontend/js/, например frontend/js/react и frontend/js/vueвведите frontend/js/.

Это важно

Треугольная скобка / необходима в выражении условия ABAC в Value поле. Если косая черта /не включена, вы можете непреднамеренно предоставить разрешения другим репозиториям, которые не соответствуют префиксу. Например, если вы вводите backend без завершающей косой черты /, назначение роли предоставляет разрешения для всех репозиториев с префиксом backend, таких как backend/nginx, backend/redis, backend-infra/k8s, backend-backup/store, backend и backendsvc/containers.

Скриншот настройки выражения для сферы действия условия ABAC по префиксу репозитория.

Нажмите кнопку "Сохранить", чтобы сохранить условие ABAC.

Просмотрите условие для назначения ролей ABAC. На странице обзора содержится выражение кода условия ABAC, которое может быть использовано для назначения той же роли с тем же условием ABAC, используя Azure CLI.

Снимок экрана: просмотр условия ABAC для ограничения к префиксу репозитория.

Выполните назначение роли, нажав кнопку "Проверить и назначить".

После создания назначения роли можно просмотреть, изменить или удалить назначение роли. Перейдите к разделу "Управление доступом (IAM)" реестра и перейдите на вкладку "Назначения ролей", чтобы просмотреть список существующих назначений ролей, которые применяются к реестру.

Назначение роли с ограниченным доступом к нескольким хранилищам данных с использованием множественных префиксов репозитория (множество шаблонных символов)

В этом примере мы назначим Container Registry Repository Reader роль, чтобы предоставить права чтения нескольким репозиториям под двумя разными префиксами (несколько подстановочных символов). Добавив условия ABAC, это назначение роли позволяет извлекать изображения удостоверения, просматривать теги и читать метаданные только из указанного репозитория, предотвращая доступ к другим репозиториям в реестре.

Если вы выполнили предыдущий пример, чтобы назначить Container Registry Repository Reader роль определенному репозиторию, необходимо удалить это назначение роли (перейдя в панель "Управление доступом (IAM)" и выбрав вкладку "Назначения ролей"), прежде чем создавать новое с условием ABAC, ограниченным префиксом репозитория.

Выполните те же действия, что и в предыдущем примере , чтобы выполнить назначение роли с условиями ABAC.

На шаге добавления выражения для условия ABAC настройте два выражения для области применения роли в нескольких хранилищах данных под двумя префиксами: backend/ и frontend/js/ (несколько подстановочных знаков).

Для первого выражения настройте следующие параметры:

  • Источник атрибута: Request
  • Атрибут: Repository name
  • Оператор: StringStartsWithIgnoreCase
  • Значение: <repository-prefix> - префикс репозиториев, включая косую черту /.
    • Например, чтобы предоставить разрешения всем репозиториям с префиксом backend/, такие как backend/nginx и backend/redis, введите backend/.
    • Чтобы предоставить разрешения всем репозиториям с префиксом frontend/js/, например frontend/js/react и frontend/js/vueвведите frontend/js/.

Нажмите кнопку "Добавить выражение". Убедитесь, что логический оператор имеет значение Or. При необходимости можно выбрать "Группировать" для группирования выражений и управлять порядком оценки. Визуальный редактор также поддерживает несколько логических операторов, включая "And", "Or", иерархическую группировку и отрицание.

Для второго выражения настройте следующие параметры:

  • Источник атрибута: Request
  • Атрибут: Repository name
  • Оператор: StringStartsWithIgnoreCase
  • Значение: <repository-prefix> - префикс репозиториев, включая косую черту /.
    • Например, чтобы предоставить разрешения всем репозиториям с префиксом backend/, такие как backend/nginx и backend/redis, введите backend/.
    • Чтобы предоставить разрешения всем репозиториям с префиксом frontend/js/, например frontend/js/react и frontend/js/vueвведите frontend/js/.

Это важно

Треугольная скобка / необходима в выражении условия ABAC в Value поле. Если косая черта /не включена, вы можете непреднамеренно предоставить разрешения другим репозиториям, которые не соответствуют префиксу. Например, если вы вводите backend без завершающей косой черты /, назначение роли предоставляет разрешения для всех репозиториев с префиксом backend, таких как backend/nginx, backend/redis, backend-infra/k8s, backend-backup/store, backend и backendsvc/containers.

Снимок экрана конфигурации выражения для задания области условия ABAC с несколькими префиксами репозитория.

Нажмите кнопку "Сохранить", чтобы сохранить условие ABAC.

Просмотрите условие для назначения ролей ABAC. На странице обзора содержится выражение кода условия ABAC, которое может быть использовано для назначения той же роли с тем же условием ABAC, используя Azure CLI.

Снимок экрана: обзор условия ABAC для нескольких префиксов репозитория.

Выполните назначение роли, нажав кнопку "Проверить и назначить".

После создания назначения роли можно просмотреть, изменить или удалить назначение роли. Перейдите к разделу "Управление доступом (IAM)" реестра и перейдите на вкладку "Назначения ролей", чтобы просмотреть список существующих назначений ролей, которые применяются к реестру.

Максимальное количество условий ABAC

Портал Azure поддерживает ограниченное количество условий ABAC на назначение ролей.

Чтобы добавить больше условий ABAC, чем позволяет лимит портала Azure, вы можете использовать Azure CLI для создания назначения роли с дополнительными условиями ABAC.

Приложение. Эффекты включения ABAC на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски

Влияние на задачи ACR

Это важно

Если реестр настроен с разрешениями RBAC Registry + ABAC Repository, новые и существующие задачи ACR больше не имеют стандартного доступа к плоскости данных исходного реестра, включая образы и артефакты в его репозиториях. Необходимо явно присоединить и задать удостоверение, которое будет использоваться новыми и существующими задачами ACR для проверки подлинности в реестре источников с поддержкой ABAC. Затем предоставьте присоединенному удостоверению соответствующую встроенную роль ACR, чтобы включить проверку подлинности и доступ к репозиториям реестра.

Присвоение идентификационных данных новой задаче ACR для доступа к исходному реестру.

Для реестров источников с поддержкой ABAC используйте az acr task create вместе с флагом --source-acr-auth-id, чтобы указать удостоверение, которое задача будет использовать для аутентификации в исходном реестре:

  • --source-acr-auth-id [system] — закрепляет назначенное системой управляемое удостоверение.
  • --source-acr-auth-id $resourceId — присоединяет управляемую идентичность, назначенную пользователем, используя идентификатор ресурса.

После присоединения идентификатора назначьте ему предопределенную роль ACR (необязательно с условиями ABAC), чтобы предоставить соответствующие разрешения.

Обновление существующей задачи ACR для использования удостоверения для доступа к исходному реестру

Для реестров источников с поддержкой ABAC используйте az acr task update с теми же параметрами --source-acr-auth-id, чтобы назначить или изменить удостоверение, используемое задачей для проверки подлинности в исходном реестре. Как и в случае с новыми задачами, выполните соответствующее назначение ролей.

Удаление доступа к исходному реестру из задачи ACR

Чтобы явно предотвратить проверку подлинности задачи ACR с помощью исходного реестра с поддержкой ABAC и заблокировать разрешения задачи в исходном реестре, установите --source-acr-auth-id none. Это отключает возможность задачи выполнять любые операции в исходном реестре и содержимом в нем.

Замечание

Примечание. Флаг --auth-mode устарел для реестров с поддержкой ABAC и больше не поддерживается для управления доступом к задачам ACR.

Влияние на быстрые задачи, быстрые сборки и быстрые запуски

Это важно

Если реестр настроен с разрешениями RBAC Registry + ABAC Repository, новые быстрые задачи, такие как быстрые сборки и быстрые запуски, больше не будут иметь доступ по умолчанию к плоскости данных исходного реестра, включая его образы и артефакты в репозиториях. Для быстрых задач необходимо использовать идентификатор вызывающего для аутентификации быстрой задачи в исходном реестре. Удостоверение вызывающей стороны должно иметь соответствующую встроенную роль ACR, чтобы обеспечить проверку подлинности и доступ к репозиториям реестра.

Выполнение быстрой задачи с удостоверением вызывающего объекта для доступа к исходному реестру

Для реестров источников, включенных для работы с ABAC, используйте az acr build или az acr run с параметром --source-acr-auth-id [caller], чтобы указать удостоверение вызывающего объекта, которое будет использоваться Заданием Быстрого Действия для аутентификации в исходном реестре. Перед выполнением быстрой задачи убедитесь, что удостоверение вызывающего имеет соответствующую встроенную роль ACR для включения проверки подлинности и доступа к исходному реестру и его репозиториям.

Выполнение быстрой задачи без доступа к исходному реестру

Чтобы выполнить быструю задачу без доступа к исходному реестру, используйте az acr build или az acr run с параметром --source-acr-auth-id none . Это отключает возможность быстрой задачи выполнять любые операции в исходном реестре и содержимом в нем.

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