Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Реестр контейнеров Azure (ACR) поддерживает управление доступом на основе атрибутов Azure (Azure ABAC) для управления разрешениями репозитория. Эта функция повышает безопасность, обеспечивая более детализированное управление разрешениями в репозиториях реестра контейнеров.
Azure ABAC основывается на управлении доступом на основе ролей Azure (Azure RBAC), введя условия для конкретного репозитория в назначениях ролей. С помощью Azure ABAC можно предоставить субъекту безопасности доступ к ресурсу репозитория на основе атрибутов.
В этой статье описывается, как включить Azure ABAC для разрешений репозитория в реестре контейнеров, изменения режима разрешений назначения ролей и настройки назначений ролей с условиями ABAC.
Настройка параметра режима разрешений назначения ролей
Чтобы использовать Azure ABAC для управления разрешениями репозитория, задайте режим разрешений назначения ролей для реестра в реестре RBAC и разрешениях репозитория ABAC. Этот режим позволяет использовать необязательные условия ABAC для ограничения назначения ролей к конкретным репозиториям, а также назначения ролей RBAC с помощью встроенных ролей ACR.
Можно настроить режим разрешений назначения ролей при создании реестра или обновить параметр в любом существующем реестре. Эту конфигурацию можно задать с помощью портала Azure или Azure CLI.
Если вы измените параметр существующего реестра, обязательно изучите последствия существующих назначений ролей и задач, как описано в следующих разделах.
Замечание
Убедитесь, что установлена последняя версия Azure CLI, выполнив команду az upgradeAzure CLI. Кроме того, если вы ранее приняли участие в закрытой предварительной версии этой функции, возможно, вы установили пользовательское расширение частной предварительной версии для управления ACR ABAC. Это пользовательское расширение больше не требуется и следует удалить (чтобы избежать конфликтов), выполнив команду az extension remove --name acrabacAzure CLI.
Влияние на существующие назначения ролей
Если вы настроите реестр для использования прав доступа реестра RBAC + разрешений репозитория ABAC, помните, что некоторые существующие назначения ролей не будут учтены или будут иметь различные последствия. Другой набор встроенных ролей ACR применяется к реестрам с поддержкой ABAC.
Например, роли AcrPull, AcrPush и AcrDelete не учитываются в реестре с включенной поддержкой ABAC.
Вместо этого в реестрах с поддержкой ABAC используйте роли Container Registry Repository Reader, Container Registry Repository Writer, и Container Registry Repository Contributor для предоставления разрешений на использование образов на уровне реестра или репозитория.
Кроме того, привилегированные роли, такие как Owner, Contributorи Reader имеют различные эффекты в реестре с поддержкой ABAC. В этих репозиториях эти привилегированные роли предоставляют только разрешения уровня управления для создания, обновления и удаления самого реестра без предоставления разрешений уровня данных репозиториям и образам в реестре.
Дополнительные сведения об этих ролях см. в разделе "Разрешения реестра контейнеров Azure" и общие сведения о назначениях ролей. Помимо этого, обратитесь к справочнику по встроенным ролям ACR для получения подробного описания каждой роли.
Влияние на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски
Если вы настроите реестр для использования реестра RBAC и разрешений репозитория ABAC, новые и существующие задачи ACR, а также быстрые задачи, быстрые сборки и быстрые запуски будут затронуты. Они больше не имеют доступа уровня данных по умолчанию к исходному реестру с поддержкой ABAC и его содержимому.
Сведения о последствиях этого изменения и о том, как предоставить доступ к плоскости данных для задач ACR, быстрых задач, быстрых сборок и быстрых запусков в исходных реестрах с поддержкой ABAC, см. в статье «Эффекты включения ABAC на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски».
Создание реестра с включенным ABAC
Azure ABAC можно включить с помощью портала Azure или Azure CLI.
При создании нового реестра на портале Azure выберите RBAC Registry + ABAC Repository Permissions для режима назначения ролей.
Обновление существующего реестра для включения ABAC
Это важно
Изменение режима разрешений назначения ролей существующего реестра может повлиять на существующие назначения ролей и задачи, как описано в предыдущих разделах. Перед изменением параметра обязательно просмотрите эти эффекты.
Чтобы просмотреть существующий режим разрешений назначения ролей реестра, перейдите в реестр на портале Azure. В меню службы в разделе "Параметры" выберите "Свойства", а затем проверьте параметр режима разрешений назначения ролей .
Чтобы включить Azure RBAC, выберите реестр RBAC и разрешения репозитория ABAC, а затем нажмите кнопку "Сохранить".
Настройка разрешений репозитория AZURE ABAC
Вы можете использовать портал Azure или Azure CLI для назначения условий Azure ABAC для области назначений ролей определенным репозиториям.
Подсказка
Портал Azure поддерживает ограниченное количество условий ABAC на назначение ролей. Чтобы добавить дополнительные условия ABAC, используйте Azure CLI.
В этом разделе приведены примеры добавления условий 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.
Дополнительные сведения об этих ролях см. в разделе "Разрешения реестра контейнеров Azure" и обзор назначенийролей и справочник по встроенным ролям ACR.
Назначение ролей области определенному репозиторию
В этом примере назначается роль Container Registry Repository Reader для предоставления разрешений на чтение для одного репозитория. Добавив условия ABAC, назначение ролей позволяет загружать образы, просматривать теги и читать метаданные только из указанного репозитория, предотвращая доступ к другим репозиториям в регистре.
Перейдите в реестр на портале Azure. В меню службы выберите элемент управления доступом (IAM).
Выберите Добавить, затем выберите Добавить назначение ролей.
Найдите
Container Registry Repository Reader. Выберите ее и нажмите кнопку "Далее".На вкладке "Члены" укажите учетную запись, которой должна быть назначена эта роль, и выберите "Далее".
На вкладке "Условия " выберите "Добавить условие".
Убедитесь, что выбран визуальный для типа редактора.
В разделе "Условие 1" выберите действия (разрешения), принадлежащие этой роли, которую вы хотите предоставить в этом назначении ролей в области репозитория. В большинстве случаев выберите все действия, чтобы ограничить их выполнение идентификаторами с этой ролью в области репозитория. Нажмите кнопку ОК, чтобы сохранить изменения.
Затем в разделе Создать выражение выберите Добавить выражение. Настройте следующие параметры выражения для ограничения условия ABAC для определенного репозитория.
-
Источник атрибута:
Request -
Атрибут:
Repository name -
Оператор:
StringEqualsIgnoreCase -
Значение:
<repository-name>— полное имя репозитория
-
Источник атрибута:
Нажмите кнопку "Сохранить ", чтобы сохранить условие ABAC, а затем просмотрите выражение кода условия ABAC. Этот код можно использовать для выполнения того же назначения ролей с тем же условием ABAC с помощью Azure CLI.
Выберите Рецензирование и назначение, чтобы завершить назначение роли.
После создания назначения роли вы можете просмотреть, изменить или удалить его на странице управления доступом (IAM) реестра, выбрав назначения ролей.
Назначить роль с областью действия нескольким хранилищам, используя префикс имени хранилища (подстановочный знак)
Вы назначаете роль Container Registry Repository Reader для предоставления разрешений на извлечение нескольким репозиториям с общим префиксом (подстановочным знаком). При добавлении условий ABAC это назначение роли позволяет загружать изображения, просматривать теги и читать метаданные только из репозиториев с общим префиксом, исключая доступ к другим репозиториям в реестре.
Если вы выполнили предыдущий пример, чтобы назначить Container Registry Repository Reader роль определенному репозиторию, удалите это назначение роли перед созданием новой. Вы можете удалить назначение в элементе управления доступом (IAM), выбрав назначения ролей, выбрав назначение роли, а затем нажмите кнопку "Удалить".
Выполните те же действия, что и в предыдущем примере , чтобы выполнить назначение роли с условиями 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.
Выберите Рецензирование и назначение, чтобы завершить назначение роли.
Назначение роли с ограниченным доступом к нескольким хранилищам данных с использованием множественных префиксов репозитория (множество шаблонных символов)
В этом примере вы назначаете роль Container Registry Repository Reader, чтобы предоставить разрешения на чтение нескольким репозиториям, соответствующим двум различным шаблонам префиксов (несколько подстановочных знаков).
Добавив условия ABAC, это назначение ролей позволяет извлекать изображения удостоверения, просматривать теги и читать метаданные только из указанных репозиториев, предотвращая доступ к другим репозиториям в реестре.
Если вы выполнили предыдущий пример, чтобы назначить Container Registry Repository Reader роль определенному префиксу репозитория, удалите это назначение роли перед созданием нового. Вы можете удалить назначение в элементе управления доступом (IAM), выбрав назначения ролей, выбрав назначение роли, а затем нажмите кнопку "Удалить".
Выполните те же действия, что и в первом примере , чтобы выполнить назначение роли с условиями ABAC.
На шаге добавления выражения для условия ABAC настройте два выражения для области применения роли в нескольких хранилищах данных под двумя префиксами:
backend/иfrontend/js/(несколько подстановочных знаков). Включите косую черту/в каждый префикс.Для первого выражения настройте следующие параметры:
-
Источник атрибута:
Request -
Атрибут:
Repository name -
Оператор:
StringStartsWithIgnoreCase -
Значение:
backend/
-
Источник атрибута:
Выберите Добавить выражение. Визуальный редактор также поддерживает несколько логических операторов, включая And, Or, иерархическое группирование и отрицание. В этом примере убедитесь, что логический оператор имеет значение Or.
Для второго выражения настройте следующие параметры:
-
Источник атрибута:
Request -
Атрибут:
Repository name -
Оператор:
StringStartsWithIgnoreCase -
Значение:
frontend/js/
-
Источник атрибута:
Нажмите кнопку "Сохранить ", чтобы сохранить условие ABAC, а затем просмотрите выражение кода условия ABAC.
Выберите Рецензирование и назначение, чтобы завершить назначение роли.
Эффекты включения ABAC на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски
Если вы включите Azure ABAC для разрешений репозитория в реестре контейнеров, установив режим разрешений назначения ролей на RBAC Registry + ABAC Repository Permissions, это затронет новые и существующие задачи ACR, а также Quick Tasks, Quick Builds и Quick Runs. Ознакомьтесь со следующими разделами, чтобы понять эти последствия и как предоставить доступ к плоскости данных для этих задач в исходных реестрах с поддержкой ABAC.
Влияние на задачи ACR
При настройке реестра с разрешениями репозитория RBAC и ABAC новые и существующие задачи ACR больше не имеют доступа к исходному реестру, включая изображения и артефакты в репозиториях.
Необходимо явно присоединить и задать идентификационные данные для новых и существующих задач ACR, чтобы использовать их для аутентификации в реестре источников с поддержкой ABAC. Затем предоставьте присоединенному удостоверению соответствующую встроенную роль ACR, чтобы включить проверку подлинности и доступ к репозиториям реестра.
Присоединение удостоверения к новой задаче ACR для доступа к исходному реестру
Для реестров источников с поддержкой ABAC используйте az acr task create с флагом --source-acr-auth-id для указания удостоверения, которое задача использует для аутентификации в исходном реестре.
Вы можете указать один из следующих параметров для флага --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 и ABAC новые быстрые задачи, такие как быстрые сборки и быстрые запуски , больше не имеют доступа уровня данных по умолчанию к исходному реестру, включая его образы и артефакты в репозиториях. Для быстрых задач необходимо использовать идентификатор вызывающего для аутентификации быстрой задачи в исходном реестре. Удостоверение вызывающей стороны должно иметь соответствующую встроенную роль ACR, чтобы обеспечить проверку подлинности и доступ к репозиториям реестра.
Выполните быструю задачу с идентификацией вызывающего абонента для доступа к исходному реестру.
Для реестров источников с поддержкой ABAC используйте az acr build или az acr run с параметром --source-acr-auth-id [caller], чтобы указать идентификатор вызывающего в качестве идентификатора, который Quick Task использует для аутентификации в исходном реестре. Перед выполнением быстрой задачи убедитесь, что удостоверение вызывающего имеет соответствующую встроенную роль ACR для включения проверки подлинности и доступа к исходному реестру и его репозиториям.
Выполнение быстрой задачи без доступа к исходному реестру
Чтобы выполнить быструю задачу без доступа к исходному реестру, используйте az acr build или az acr run с параметром --source-acr-auth-id none . Этот параметр отключает возможность быстрой задачи выполнять любые операции в исходном реестре и содержимом в нем.
Связанный контент
- Общие сведения о встроенных ролях см. в разделе "Разрешения реестра контейнеров Azure" и общие сведения о назначениях ролей.
- Подробные сведения о каждой встроенной роли ACR, включая разрешения, предоставленные каждой ролью, см. в справочнике по каталогу ролей реестра контейнеров Azure.
- Сведения о создании пользовательских ролей, которые соответствуют вашим потребностям и требованиям, см. в разделе "Пользовательский реестр контейнеров Azure".