Roles y permisos de Azure Container Registry

El servicio Azure Container Registry admite un conjunto de roles de Azure integrados que proporcionan distintos niveles de permisos a una instancia de Azure Container Registry. Use el control de acceso basado en roles de Azure (RBAC de Azure) para asignar permisos específicos a usuarios, entidades de servicio u otras entidades que necesiten interactuar con un registro, por ejemplo, para insertar o extraer imágenes de contenedor. También puede definir roles personalizados con permisos específicos en un registro para distintas operaciones.

Rol/permiso Acceso a Resource Manager Crear o eliminar un registro Insertar imagen Extraer imagen Eliminar los datos de imagen Cambiar directivas Firmar imágenes
Propietario X X X X X X
Colaborador X X X X X X
Lector X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

Asignación de roles

Consulte Pasos para agregar una asignación de roles para conocer los pasos de alto nivel para agregar una asignación de roles a un usuario, un grupo, una entidad de servicio o una identidad administrada existente. Puede usar Azure Portal, la CLI de Azure, Azure PowerShell u otras herramientas de Azure.

Al crear una entidad de servicio, también se configuran los permisos y el acceso a los recursos de Azure como, por ejemplo, un registro de contenedor. Para ver un script de ejemplo del uso de la CLI de Azure, consulte Autenticación de Azure Container Registry con entidades de servicio.

Diferenciar usuarios y servicios

Cada vez que se aplican permisos, el procedimiento recomendado es proporcionar el conjunto de permisos más limitados para que una persona o servicio puedan completar una tarea. Los siguientes conjuntos de permisos representan un conjunto de funciones para usuarios humanos y servicios desatendidos.

Soluciones de CI/CD

Al automatizar comandos de docker build de soluciones de CI/CD, necesita funciones de docker push. En estos escenarios de servicios desatendidos, se recomienda asignar el rol AcrPush. Este rol, al contrario que el rol Colaborador (que es más amplio), impide que la cuenta pueda realizar otras operaciones de registro o que acceda a Azure Resource Manager.

Nodos de host de contenedor

Del mismo modo, los nodos que ejecuten los contenedores han de tener asignado el rol AcrPull, pero no necesitan de forma obligatoria funciones de Lector.

Extensión de Docker de Visual Studio Code

Para herramientas como la extensión de Docker de Visual Studio Code, se necesita acceso adicional de proveedor de recursos para mostrar la lista de registros de contenedor de Azure. En este caso, proporcione a los usuarios acceso al rol Lector o Colaborador. Estos roles permiten docker pull, docker push, az acr list, az acr build y otras funciones.

Acceso a Resource Manager

Se necesita obtener acceso a Azure Resource Manager para Azure Portal y a la administración de registros con la CLI de Azure. Por ejemplo, para obtener una lista de registros mediante el comando az acr list, necesita este conjunto de permisos.

Crear y eliminar registros

Capacidad para crear y eliminar registros de contenedor de Azure.

Imagen de inserción

La capacidad para docker push una imagen o insertar otro artefacto compatible, como un gráfico de Helm, en un registro. Se necesita autenticación con el registro mediante la identidad autorizada.

Extraer imagen

La capacidad para docker pull una imagen que no esté en cuarentena o extraer otro artefacto compatible, como un gráfico de Helm, de un registro. Se necesita autenticación con el registro mediante la identidad autorizada.

Eliminación de los datos de la imagen

La capacidad de eliminar imágenes de contenedor u otros artefactos admitidos, como gráficos de Helm, desde un registro.

Cambiar directivas

Capacidad para configurar directivas en un registro. En las directivas, se incluye la purga de imágenes, la activación de la cuarentena y la firma de imágenes.

Firmar imágenes

Capacidad para firmar imágenes, que suelen estar asignadas a un proceso automatizado, lo que usaría una entidad de servicio. Este permiso suele combinarse con la inserción de imágenes para permitir insertar una imagen de confianza en un registro. Para obtener más información, vea Confianza de contenido en Azure Container Registry.

Roles personalizados

Como con otros recursos de Azure, puede crear roles personalizados con permisos específicos para Azure Container Registry. A continuación, asigne los roles personalizados a los usuarios, entidades de servicio u otras identidades que necesiten interactuar con un registro.

Para determinar los permisos que se van a aplicar a un rol personalizado, consulte la lista de acciones de Microsoft.ContainerRegistry, revise las acciones permitidas de los roles de ACR integrados o ejecute el siguiente comando:

az provider operation show --namespace Microsoft.ContainerRegistry

Para definir un rol personalizado, consulte Pasos para crear un rol personalizado.

Nota

En los inquilinos configurados con el vínculo privado de Azure Resource Manager, Azure Container Registry admite acciones con caracteres comodín como Microsoft.ContainerRegistry/*/read o Microsoft.ContainerRegistry/registries/*/write en roles personalizados, concediendo acceso a todas las acciones correspondientes. En un inquilino sin un vínculo privado de ARM, especifique todas las acciones del Registro necesarias individualmente en un rol personalizado.

Ejemplo: Rol personalizado para importar imágenes

Por ejemplo, el siguiente JSON define las acciones mínimas para un rol personalizado que permite importar imágenes a un registro.

{
   "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"
 }

Para crear o actualizar un rol personalizado mediante la descripción de JSON, use la CLI de Azure, la plantilla de Azure Resource Manager, Azure PowerShell u otras herramientas de Azure. Agregue o quite las asignaciones de roles de un rol personalizado de la misma manera en que administra las asignaciones de roles para los roles integrados de Azure.

Pasos siguientes