Autorisations et rôles Azure Container Registry

Le service Azure Container Registry prend en charge un ensemble de rôles Azure intégrés fournissant des niveaux d’autorisation différents à un registre de conteneurs Azure. Utilisez le contrôle d’accès en fonction du rôle Azure (Azure RBAC) pour attribuer des autorisations spécifiques aux utilisateurs, aux principaux de service ou à d’autres identités qui doivent interagir avec un registre, par exemple pour extraire ou envoyer des images de conteneur. Vous pouvez également définir des rôles personnalisés avec des autorisations affinées vers un registre pour différentes opérations.

Rôle/autorisation Accéder à Resource Manager Créer/supprimer le Registre Pousser (push) l’image Extraire (pull) l’image Supprimer les données d’image Changer de stratégies Signer les images
Propriétaire X X X X X X
Contributeur X X X X X X
Lecteur X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

Attribuer des rôles

Consultez les étapes pour ajouter une attribution de rôle pour connaître les étapes principales pour ajouter une attribution de rôle à un utilisateur, un groupe, un principal de service ou une identité gérée existant. Vous pouvez utiliser le portail Azure, Azure CLI, Azure PowerShell ou d’autres outils Azure.

Lorsque vous créez un principal de service, vous configurez également son accès et ses autorisations sur les ressources Azure, comme un registre de conteneurs. Pour obtenir un exemple de script utilisant Azure CLI, consultez Authentification Azure Container Registry avec des principaux de service.

Différencier utilisateurs et services

Chaque fois que des autorisations sont appliquées, une bonne pratique consiste à fournir l’ensemble le plus limité d’autorisations pour qu’un individu ou un service puisse accomplir une tâche. Les ensembles d’autorisations suivants représentent un ensemble de fonctionnalités qui peuvent être utilisées par les humains et les services sans périphérique de contrôle.

Solutions CI/CD

Lorsque vous automatisez des commandes docker build à partir de solutions CI/CD, vous avez besoin de fonctionnalités docker push. Pour ces scénarios de service sans périphérique de contrôle, nous vous recommandons d’attribuer le rôle AcrPush. Ce rôle, contrairement au rôle Contributeur plus large, empêche le compte d’effectuer d’autres opérations de registre ou d’accéder à Azure Resource Manager.

Nœuds de l’hôte de conteneur

De même, les nœuds exécutant vos conteneurs ont besoin du rôle AcrPull, mais ne devraient pas avoir besoin des fonctionnalités Lecteur.

Extension Docker de Visual Studio Code

Pour des outils comme l’extension Docker de Visual Studio Code, un accès supplémentaire au fournisseur de ressources est nécessaire pour dresser la liste des registres de conteneurs Azure disponibles. Dans ce cas, donnez à vos utilisateurs accès au rôle Lecteur ou Contributeur. Ces rôles permettent d’effectuer des actions telles que docker pull, docker push, az acr list et az acr build, entre autres.

Accéder à Resource Manager

L’accès à Azure Resource Manager est requis pour le portail Azure et la gestion du registre avec l’interface de ligne de commande Azure. Par exemple, pour obtenir la liste des registres à l’aide de la commande az acr list, vous devez disposer de cette autorisation.

Créer et supprimer le registre

Possibilité de créer et de supprimer les registres de conteneurs Azure.

Pousser (push) l’image

Possibilité de docker push une image ou d’envoyer (push) un autre artefact pris en charge, tel qu’un graphique Helm, à un registre. Nécessite l’authentification auprès du registre en utilisant l’identité autorisée.

Extraire (pull) l’image

Possibilité de docker pull une image qui n’est pas en quarantaine ou de tirer (pull) un autre artefact pris en charge, tel qu’un graphique Helm, d’un registre. Nécessite l’authentification auprès du registre en utilisant l’identité autorisée.

Supprimer les données d’image

Possibilité de supprimer des images de conteneur ou de supprimer d’autres artefacts pris en charge tels que des graphiques Helm, à partir d’un registre.

Changer de stratégies

Possibilité de configurer des stratégies sur un registre. Les stratégies comprennent la purge d’image, la mise en quarantaine et la signature d’image.

Signer les images

Capacité de signer des images, habituellement affectées à un processus automatique, qui utiliserait un principal de service. Cette autorisation est typiquement associée à un envoi (push) d’image pour permettre l’envoi d’une image de confiance à un registre. Pour plus d’informations, consultez Approbation de contenu dans Azure Container Registry.

Rôles personnalisés

Comme pour les autres ressources Azure, vous pouvez créer des rôles personnalisés avec des autorisations affinées vers Azure Container Registry. Attribuez ensuite les rôles personnalisés aux utilisateurs, aux principaux de service ou à d’autres identités qui doivent interagir avec un registre.

Pour déterminer les autorisations à appliquer à un rôle personnalisé, consultez la liste des actions Microsoft.ContainerRegistry, passez en revue les actions autorisées des rôles ACR intégrés ou exécutez la commande suivante :

az provider operation show --namespace Microsoft.ContainerRegistry

Pour définir un rôle personnalisé, consultez Procédure de création d’un rôle personnalisé.

Notes

Dans les locataires configurés avec la liaison privée Azure Resource Manager, Azure Container Registry prend en charge les actions avec caractères génériques telles que Microsoft.ContainerRegistry/*/read ou Microsoft.ContainerRegistry/registries/*/write dans les rôles personnalisés, en accordant l’accès à toutes les actions correspondantes. Dans un locataire sans liaison privée ARM, spécifiez individuellement toutes les actions de registre requises dans un rôle personnalisé.

Exemple : Rôle personnalisé pour importer des images

Par exemple, le code JSON suivant définit les actions minimales pour un rôle personnalisé qui autorise l’importation d’images vers un registre.

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

Pour créer ou mettre à jour un rôle personnalisé à l’aide de la description JSON, utilisez Azure CLI, le modèle Azure Resource Manager, Azure PowerShell ou d’autres outils Azure. Ajoutez ou supprimez des attributions de rôles pour un rôle personnalisé de la même façon que vous gérez les attributions de rôles pour les rôles Azure intégrés.

Étapes suivantes