Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Реестр контейнеров 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 upgrade
Azure CLI.
Кроме того, если вы ранее приняли участие в закрытой предварительной версии этой функции, возможно, вы установили пользовательское расширение частной предварительной версии для управления ACR ABAC.
Это пользовательское расширение больше не требуется и следует удалить (чтобы избежать конфликтов), выполнив команду az extension remove --name acrabac
Azure 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
для предоставления разрешений на использование образов на уровне реестра или репозитория.
Для получения дополнительной информации о роли, определяемой вашим сценарием и режимом разрешений на назначение ролей реестра, см. сценарии встроенных ролей ACR. Помимо этого, обратитесь к справочнику по встроенным ролям ACR для получения подробного описания каждой роли.
Создание реестра с включенным ABAC
При создании реестра на портале Azure выберите параметр "Реестр RBAC и разрешения репозитория ABAC" в раскрывающемся списке "Режим разрешений назначения ролей".
Перейдите к заполнению остальной части формы создания реестра и нажмите кнопку "Создать", чтобы создать реестр. Дополнительные сведения о создании реестра см. в статье "Создание реестра контейнеров Azure" с помощью портала Azure.
Обновление существующего реестра для включения ABAC
Чтобы просмотреть существующий режим разрешений назначения ролей реестра, перейдите в колонку "Свойства" реестра. Текущий режим разрешений назначения ролей отображается в поле "Режим разрешений назначения ролей".
Чтобы обновить режим разрешений назначения ролей существующего реестра, выберите "RBAC Registry + ABAC Repository Permissions" (Разрешения репозитория RBAC и 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 для определенного репозитория.
- Источник атрибута:
Request
- Атрибут:
Repository name
- Оператор:
StringEqualsIgnoreCase
- Значение:
<repository-name>
— полное имя репозитория.- Например, если полное имя репозитория равно
nginx
, введитеnginx
. - Если имя полного репозитория равно
backend/nginx
, введитеbackend/nginx
.
- Например, если полное имя репозитория равно
Нажмите кнопку "Сохранить", чтобы сохранить условие ABAC.
Просмотрите условие для назначения ролей ABAC. На странице обзора содержится выражение кода условия ABAC, которое может быть использовано для назначения той же роли с тем же условием ABAC, используя Azure CLI.
Выполните назначение роли, нажав кнопку "Проверить и назначить".
После создания назначения роли можно просмотреть, изменить или удалить назначение роли. Перейдите к разделу "Управление доступом (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, используя Azure CLI.
Выполните назначение роли, нажав кнопку "Проверить и назначить".
После создания назначения роли можно просмотреть, изменить или удалить назначение роли. Перейдите к разделу "Управление доступом (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/
.
- Например, чтобы предоставить разрешения всем репозиториям с префиксом
Это важно
Закрывающая косая черта /
требуется в Value
поле для выражения условия ABAC.
Если косая черта /
не включена, вы можете непреднамеренно предоставить разрешения другим репозиториям, которые не соответствуют префиксу.
Например, если вы вводите backend
без завершающей косой черты /
, назначение роли предоставляет разрешения для всех репозиториев с префиксом backend
, например backend/nginx
, backend/redis
, backend-infra/k8s
, backend-backup/store
, backend
и backendsvc/containers
.
Нажмите кнопку "Сохранить", чтобы сохранить условие ABAC.
Просмотрите условие назначения роли в системе ABAC. Страница обзора включает в себя кодовое выражение условия ABAC, которое можно использовать для осуществления того же назначения роли с тем же условием ABAC с помощью Azure CLI.
Выполните назначение роли, нажав кнопку "Проверить и назначить".
После создания назначения роли можно просмотреть, изменить или удалить назначение роли. Перейдите к разделу "Управление доступом (IAM)" реестра и перейдите на вкладку "Назначения ролей", чтобы просмотреть список существующих назначений ролей, которые применяются к реестру.
Максимальное количество условий ABAC
Портал Azure поддерживает ограниченное количество условий ABAC на назначение ролей.
Чтобы добавить больше условий ABAC, чем позволяет лимит портала Azure, вы можете использовать Azure CLI для создания назначения роли с дополнительными условиями ABAC.
Дальнейшие шаги
- Общие сведения об этих встроенных ролях, включая поддерживаемые типы удостоверений назначения ролей, шаги по выполнению назначения ролей и рекомендуемые роли для распространенных сценариев, см. Встроенные роли RBAC для реестра контейнеров Azure.
- Чтобы выполнить назначение ролей с необязательными условиями Microsoft Entra ABAC для ограничения назначений ролей на определенные репозитории, см. раздел разрешения репозитория на основе Microsoft Entra.
- Подробные сведения о каждой встроенной роли ACR, включая разрешения, предоставленные каждой ролью, см. в справочнике по каталогу ролей реестра контейнеров Azure.
- Дополнительные сведения о создании пользовательских ролей, отвечающих вашим потребностям и требованиям, см. в разделе "Настраиваемые роли реестра контейнеров Azure".