Роли и разрешения реестра контейнеров AzureAzure Container Registry roles and permissions

Служба реестра контейнеров Azure поддерживает набор встроенных ролей Azure , которые предоставляют различные уровни разрешений для реестра контейнеров Azure.The Azure Container Registry service supports a set of built-in Azure roles that provide different levels of permissions to an Azure container registry. Используйте Управление доступом на основе ролей Azure (Azure RBAC) , чтобы назначить определенные разрешения пользователям, субъектам-службам или другим удостоверениям, которые должны взаимодействовать с реестром, например для извлечения или отправки образов контейнеров.Use Azure role-based access control (Azure RBAC) to assign specific permissions to users, service principals, or other identities that need to interact with a registry, for example to pull or push container images. Можно также определить пользовательские роли с детализированными разрешениями для различных операций в реестре.You can also define custom roles with fine-grained permissions to a registry for different operations.

Роль или разрешениеRole/Permission Доступ к Resource ManagerAccess Resource Manager Создание и удаление реестраCreate/delete registry Отправка образаPush image Получение образаPull image Удаление данных образаDelete image data Изменение политикChange policies Подписывание образовSign images
ВладелецOwner XX XX XX XX XX XX
УчастникContributor XX XX XX XX XX XX
ЧитательReader XX XX
AcrPushAcrPush XX XX
AcrPullAcrPull XX
AcrDeleteAcrDelete XX
AcrImageSignerAcrImageSigner XX

Назначение ролейAssign roles

Дополнительные сведения о добавлении назначения ролей для существующего пользователя, группы, субъекта-службы или управляемого удостоверения см. в разделе шаги по добавлению назначения ролей для общих действий.See Steps to add a role assignment for high-level steps to add a role assignment to an existing user, group, service principal, or managed identity. Вы можете использовать портал Azure, Azure CLI или другие инструменты Azure.You can use the Azure portal, Azure CLI, or other Azure tools.

При создании субъекта-службы вы также настраиваете его доступ и разрешения для ресурсов Azure, таких как реестр контейнеров.When creating a service principal, you also configure its access and permissions to Azure resources such as a container registry. Пример сценария с использованием Azure CLI см. в статье Проверка подлинности реестра контейнеров Azure с помощью субъектов-служб.For an example script using the Azure CLI, see Azure Container Registry authentication with service principals.

Различие пользователей и службDifferentiate users and services

Каждый раз при применении разрешений рекомендуется задавать для пользователя или службы минимальный набор разрешений для выполнения задачи.Any time permissions are applied, a best practice is to provide the most limited set of permissions for a person, or service, to accomplish a task. Следующие наборы разрешений представляют наборы возможностей, которые могут использоваться пользователями и автономными службами.The following permission sets represent a set of capabilities that may be used by humans and headless services.

Решения CI/CDCI/CD solutions

При автоматизации команд docker build от решений CI/CD вам необходимы возможности docker push.When automating docker build commands from CI/CD solutions, you need docker push capabilities. Для этих сценариев неавтономных служб рекомендуется назначить роль акрпуш .For these headless service scenarios, we recommend assigning the AcrPush role. Эта роль, в отличие от более широкой роли Участник, не позволяет учетной записи выполнять другие операции с реестром и обращаться к Azure Resource Manager.This role, unlike the broader Contributor role, prevents the account from performing other registry operations or accessing Azure Resource Manager.

Узлы контейнеровContainer host nodes

Точно так же узлам, в которых запущены контейнеры, необходима роль AcrPull, но им не требуются возможности роли Читатель.Likewise, nodes running your containers need the AcrPull role, but shouldn't require Reader capabilities.

Расширение Docker для Visual Studio CodeVisual Studio Code Docker extension

Для таких средств, как расширение Docker для Visual Studio Code, необходим доступ к дополнительному поставщику ресурсов для получения доступных реестров контейнеров Azure.For tools like the Visual Studio Code Docker extension, additional resource provider access is required to list the available Azure container registries. В этом случае предоставьте своим пользователям доступ к роли Читатель или Участник.In this case, provide your users access to the Reader or Contributor role. Эти роли позволяют использовать docker pull, docker push, az acr list, az acr build и другие возможности.These roles allow docker pull, docker push, az acr list, az acr build, and other capabilities.

Доступ к Resource ManagerAccess Resource Manager

Доступ к Azure Resource Manager является обязательным для управления порталом Azure и реестром с помощью Azure CLI.Azure Resource Manager access is required for the Azure portal and registry management with the Azure CLI. Это набор разрешений потребуется, например, чтобы получить список реестров с помощью команды az acr list.For example, to get a list of registries by using the az acr list command, you need this permission set.

Создание и удаление реестраCreate and delete registry

Возможность создавать и удалять реестры контейнеров Azure.The ability to create and delete Azure container registries.

Отправка образаPush image

Возможность docker push образа или отправки другого поддерживаемого артефакта, например диаграммы Helm, в реестр.The ability to docker push an image, or push another supported artifact such as a Helm chart, to a registry. Требуется проверка подлинности в реестре с помощью авторизованного удостоверения.Requires authentication with the registry using the authorized identity.

Получение образаPull image

Возможность docker pull образа, не находящегося на карантине, или получения другого поддерживаемого артефакта, например диаграммы Helm, из реестра.The ability to docker pull a non-quarantined image, or pull another supported artifact such as a Helm chart, from a registry. Требуется проверка подлинности в реестре с помощью авторизованного удостоверения.Requires authentication with the registry using the authorized identity.

Удаление данных образаDelete image data

Возможность удалять образы контейнеровили удалять другие Поддерживаемые артефакты , например диаграммы Helm, из реестра.The ability to delete container images, or delete other supported artifacts such as Helm charts, from a registry.

Изменение политикChange policies

Возможность настройки политик в реестре.The ability to configure policies on a registry. Политики включают очистку образов, включение карантина и подписывание образов.Policies include image purging, enabling quarantine, and image signing.

Подписывание образовSign images

Возможность подписывания образов обычно назначается автоматизированному процессу, который использует субъект-службу.The ability to sign images, usually assigned to an automated process, which would use a service principal. Это разрешение обычно объединяется с разрешением на отправку образа, чтобы разрешить отправку доверенного образа в реестр.This permission is typically combined with push image to allow pushing a trusted image to a registry. Дополнительные сведения см. в статье о доверии содержимого в реестре контейнеров Azure.For details, see Content trust in Azure Container Registry.

Пользовательские ролиCustom roles

Как и в случае с другими ресурсами Azure, вы можете создавать пользовательские роли с детализированными разрешениями для реестра контейнеров Azure.As with other Azure resources, you can create custom roles with fine-grained permissions to Azure Container Registry. Затем назначьте пользовательские роли пользователям, субъектам-службам или другим удостоверениям, которые должны взаимодействовать с реестром.Then assign the custom roles to users, service principals, or other identities that need to interact with a registry.

Чтобы определить, какие разрешения следует применить к пользовательской роли, ознакомьтесь со списком действийMicrosoft. ContainerRegistry, просмотрите список разрешенных действий встроенных ролей записи контролядоступа или выполните следующую команду:To determine which permissions to apply to a custom role, see the list of Microsoft.ContainerRegistry actions, review the permitted actions of the built-in ACR roles, or run the following command:

az provider operation show --namespace Microsoft.ContainerRegistry

Чтобы определить пользовательскую роль, см. раздел шаги по созданию настраиваемой роли.To define a custom role, see Steps to create a custom role.

Важно!

В пользовательской роли реестр контейнеров Azure в настоящее время не поддерживает подстановочные знаки, такие как Microsoft.ContainerRegistry/* или Microsoft.ContainerRegistry/registries/* , которые предоставляют доступ ко всем соответствующим действиям.In a custom role, Azure Container Registry doesn't currently support wildcards such as Microsoft.ContainerRegistry/* or Microsoft.ContainerRegistry/registries/* that grant access to all matching actions. Укажите в роли все необходимые действия по отдельности.Specify any required action individually in the role.

Пример. настраиваемая роль для импорта изображенийExample: Custom role to import images

Например, следующий код JSON определяет минимальные действия для пользовательской роли, позволяющей импортировать изображения в реестр.For example, the following JSON defines the minimum actions for a custom role that permits importing images to a registry.

{
   "assignableScopes": [
     "/subscriptions/<optional, but you can limit the visibility to one or more subscriptions>"
   ],
   "description": "Can import images to registry",
   "Name": "AcrImport",
   "permissions": [
     {
       "actions": [
         "Microsoft.ContainerRegistry/registries/push/write",
         "Microsoft.ContainerRegistry/registries/pull/read",
         "Microsoft.ContainerRegistry/registries/read",
         "Microsoft.ContainerRegistry/registries/importImage/action"
       ],
       "dataActions": [],
       "notActions": [],
       "notDataActions": []
     }
   ],
   "roleType": "CustomRole"
 }

Чтобы создать или обновить настраиваемую роль с помощью описания JSON, используйте Azure CLI, Azure Resource Manager шаблон, Azure PowerShellили другие инструменты Azure.To create or update a custom role using the JSON description, use the Azure CLI, Azure Resource Manager template, Azure PowerShell, or other Azure tools. Добавление или удаление назначений ролей для пользовательской роли аналогично управлению назначениями ролей для встроенных ролей Azure.Add or remove role assignments for a custom role in the same way that you manage role assignments for built-in Azure roles.

Дальнейшие действияNext steps