Partager via


Contrôle d'accès basé sur les attributs Microsoft Entra (ABAC) pour les autorisations de référentiel (préversion)

Azure Container Registry (ACR) prend en charge le contrôle d’accès basé sur les attributs Microsoft Entra (ABAC) pour la gestion des autorisations de référentiel. Cette fonctionnalité améliore la sécurité en activant la gestion des autorisations plus granulaires aux référentiels de registre de conteneurs. ABAC s’appuie sur le contrôle d’accès en fonction du rôle Microsoft Entra (RBAC) en introduisant des conditions spécifiques au référentiel dans les attributions de rôles.

ABAC est conçu pour gérer les autorisations de référentiel avec le contrôle d’accès en fonction du rôle Microsoft Entra (RBAC), les attributions de rôles Microsoft Entra et les identités Microsoft Entra. Pour gérer les autorisations de référentiel sans Microsoft Entra, utilisez plutôt des autorisations de référentiel basées sur des jetons non-Microsoft Entra .

Configurer le mode d’autorisations d’attribution de rôle de Registre

Pour utiliser Microsoft Entra ABAC pour gérer les autorisations de référentiel, vérifiez que le mode d’autorisations d’attribution de rôle de Registre est défini sur « RBAC Registry + ABAC Repository Permissions ». Ce mode vous permet d’utiliser des attributions de rôles RBAC (à l’aide de rôles intégrés ACR) avec des conditions ABAC facultatives pour étendre les attributions de rôles à des référentiels spécifiques.

Vous pouvez configurer le mode d’autorisations d’attribution de rôle d’un registre lors de la création du Registre ou en mettant à jour un registre existant. Cette attribution de rôle peut être effectuée via le portail Azure ou Azure CLI. Vous pouvez activer ABAC pour n’importe quel registre, quelle que soit sa référence SKU.

Remarque

Vérifiez que vous disposez de la dernière version d’Azure CLI installée en exécutant la commande az upgradeAzure CLI. En outre, si vous avez déjà participé à la préversion privée de cette fonctionnalité, vous avez peut-être installé une extension de préversion privée personnalisée pour gérer ACR ABAC. Cette extension personnalisée n’est plus nécessaire et doit être désinstallée (pour éviter les conflits) en exécutant la commande az extension remove --name acrabacAzure CLI.

Effet sur les attributions de rôles existantes

Important

Si vous configurez un registre pour utiliser « RBAC Registry + ABAC Repository Permissions », certaines attributions de rôles existantes ne sont pas respectées, car un autre ensemble de rôles intégrés ACR s’applique aux registres avec ABAC.

Par exemple, les rôles AcrPull, AcrPush et AcrDelete ne sont pas respectés dans un registre activé par ABAC. Au lieu de cela, dans les registres avec ABAC, utilisez les rôles Container Registry Repository Reader, Container Registry Repository Writer, et Container Registry Repository Contributor pour accorder des autorisations d'image soit au niveau du registre soit spécifiques au référentiel.

Pour plus d’informations sur le rôle basé sur votre scénario et le mode d’autorisations d’attribution de rôle de Registre, consultez les scénarios pour les rôles intégrés ACR. Vous pouvez également consulter la référence des rôles intégrés ACR pour obtenir une description détaillée de chaque rôle.

Créer un registre avec ABAC activé

Lors de la création d’un registre via le portail Azure, sélectionnez l’option « Registre RBAC + Autorisations du référentiel ABAC » dans la liste déroulante « Mode Autorisations d’attribution de rôle ».

Capture d’écran de la création d’un registre de conteneurs avec ABAC activé.

Continuez à remplir le reste du formulaire de création du Registre, puis cliquez sur « Créer » pour créer le Registre. Pour plus d’informations sur la création d’un registre, consultez Créer un registre Azure Container Registry à l’aide du portail Azure.

Mettre à jour un registre existant pour activer ABAC

Pour afficher le mode d’autorisations d’attribution de rôle existant d’un registre, accédez au panneau « Propriétés » du Registre. Le mode d’autorisations d’attribution de rôle actuel s’affiche dans le champ « Mode Autorisations d’attribution de rôle ».

Pour mettre à jour le « mode d’autorisations d’attribution de rôle » d’un registre existant, sélectionnez « Registre RBAC + Autorisations du référentiel ABAC », puis cliquez sur « Enregistrer » pour mettre à jour le Registre.

Capture d’écran de la mise à jour d’un registre de conteneurs existant pour activer ABAC.

Attribution d’autorisations de référentiel Microsoft Entra ABAC

Vous pouvez utiliser le portail Azure ou Azure CLI pour attribuer des conditions Microsoft Entra ABAC pour étendre les attributions de rôles à des référentiels spécifiques. Cette section fournit des exemples d’ajout de conditions ABAC pour un référentiel spécifique, un préfixe de référentiel (caractère générique) ou plusieurs préfixes de référentiel (plusieurs caractères génériques).

Rôles intégrés activés par ABAC

Les rôles intégrés ACR par défaut suivants sont des rôles ABAC. Vous pouvez spécifier des conditions ABAC facultatives pour les rôles suivants afin d’étendre éventuellement les attributions de rôles à des référentiels spécifiques.

  • Container Registry Repository Reader - Rôle activé par ABAC qui accorde des autorisations pour lire des images, des balises et des métadonnées dans les référentiels d’un registre.
  • Container Registry Repository Writer - Rôle compatible ABAC qui accorde des autorisations de lecture, d’écriture et de mise à jour d’images, de balises et de métadonnées dans les référentiels d’un registre.
  • Container Registry Repository Contributor - Rôle compatible ABAC qui accorde des autorisations de lecture, d’écriture, de mise à jour et de suppression d’images, de balises et de métadonnées dans les référentiels d’un registre.

Notez que ces rôles ne prennent pas en charge les autorisations de référencement de catalogue pour répertorier les référentiels dans un Registre. Pour répertorier tous les référentiels d’un registre (sans accorder d’autorisations pour lire le contenu du référentiel), vous devez également attribuer le Container Registry Repository Catalog Lister rôle. Ce rôle distinct ne prend pas en charge les conditions ABAC et dispose toujours des autorisations nécessaires pour répertorier tous les référentiels d’un registre.

Important

Si vous attribuez un rôle activé par ABAC sans conditions spécifiques, l'attribution de rôle ne sera pas limitée aux référentiels. Cela signifie qu’une attribution de rôle sans conditions ABAC sera traitée comme une attribution de rôle à l’échelle du Registre, accordant des autorisations à tous les référentiels du Registre. Pour limiter une attribution de rôle à des dépôts spécifiques, vous devez inclure des conditions ABAC lors de l’attribution d’un rôle activé par ABAC.

Pour plus d’informations sur le rôle basé sur votre scénario et le mode d’autorisations d’attribution de rôle de Registre, consultez les scénarios pour les rôles intégrés ACR. Vous pouvez également consulter la référence des rôles intégrés ACR pour obtenir une description détaillée de chaque rôle.

Attribution de rôles avec étendue spécifique à un référentiel

Dans cet exemple, nous affectons le Container Registry Repository Reader rôle pour accorder des autorisations de tirage à un seul référentiel. En ajoutant des conditions ABAC, cette attribution de rôle permet à l’identité d’extraire des images, d’afficher des balises et de lire les métadonnées uniquement à partir du référentiel spécifié, ce qui empêche l’accès à d’autres référentiels dans le Registre.

Accédez au volet « Contrôle d’accès (IAM) » du Registre. Cliquez sur « Ajouter », puis sélectionnez « Ajouter une attribution de rôle ».

Capture d’écran de l’ajout d’une attribution de rôle.

Sélectionnez Container Registry Repository Reader comme rôle.

Capture d’écran de la sélection d’un rôle à attribuer.

Continuez en sélectionnant l'identité à qui attribuer le rôle.

Ensuite, passez à l’onglet « Conditions ». Sélectionnez le bouton « Ajouter une condition » pour ajouter une nouvelle condition ABAC pour restreindre l’étendue de l’attribution de rôle.

Capture d’écran de l’ajout de conditions pour l’attribution de rôle.

Sélectionnez l’option de l’éditeur « Visuel » dans le générateur de conditions ABAC.

Capture d’écran de la sélection de l’option Éditeur visuel.

Sélectionnez les actions (autorisations) à accorder dans cette attribution de rôle délimitée au référentiel. Pour la plupart des cas d’usage, sélectionnez toutes les actions (autorisations) appartenant au rôle que vous avez sélectionné précédemment, ce qui garantit que les identités peuvent uniquement effectuer ces actions dans l’étendue du référentiel.

Capture d’écran de la sélection d’actions et d’autorisations à accorder.

Ajoutez une expression pour la condition ABAC pour restreindre l’attribution de rôle à un référentiel spécifique.

Capture d’écran de l’ajout d’une expression pour la condition ABAC.

Configurez les options suivantes pour que l’expression limite la condition ABAC à un référentiel spécifique :

  • Source d’attribut : Request
  • Attribut : Repository name
  • Opérateur : StringEqualsIgnoreCase
  • Valeur : <repository-name> - nom complet du référentiel.
    • Par exemple, si le nom complet du référentiel est nginx, entrez nginx.
    • Si le nom complet du référentiel est backend/nginx, entrez backend/nginx.

Capture d’écran de la configuration de l’expression pour étendre la condition ABAC à un référentiel spécifique.

Cliquez sur « Enregistrer » pour enregistrer la condition ABAC.

Vérifiez la condition ABAC d’attribution de rôle. La page de révision inclut une expression de code de la condition ABAC, qui peut être utilisée pour effectuer la même attribution de rôle avec la même condition ABAC à l’aide d’Azure CLI.

Capture d’écran de la vérification de la condition ABAC pour l’étendue d’un référentiel spécifique.

Effectuez l’attribution de rôle en cliquant sur « Vérifier + affecter ».

Une fois l’attribution de rôle créée, vous pouvez afficher, modifier ou supprimer l’attribution de rôle. Accédez à « Contrôle d’accès (IAM) » du Registre et sélectionnez l’onglet « Attributions de rôles » pour afficher la liste des attributions de rôles existantes qui s’appliquent au Registre.

Attribution de rôle avec étendue à plusieurs référentiels à l’aide du préfixe de référentiel (caractère générique)

Dans cet exemple, nous attribuons le rôle Container Registry Repository Reader pour accorder des autorisations de pull à plusieurs référentiels ayant un préfixe commun (caractère générique). En ajoutant des conditions ABAC, cette attribution de rôle permet à l’identité d’extraire des images, d’afficher des balises et de lire les métadonnées uniquement à partir des référentiels avec un préfixe commun, ce qui empêche l’accès à d’autres référentiels dans le Registre.

Si vous avez suivi l’exemple précédent pour attribuer le Container Registry Repository Reader rôle à un référentiel spécifique, vous devez supprimer cette attribution de rôle (en accédant au panneau « Contrôle d’accès (IAM) » et en sélectionnant l’onglet « Attributions de rôles », avant de créer un nouveau rôle avec une condition ABAC délimitée à un préfixe de référentiel.

Suivez les mêmes étapes que dans l’exemple précédent pour effectuer une attribution de rôle avec des conditions ABAC.

Dans l’étape d’ajout d’une expression pour la condition ABAC, configurez une expression pour une condition ABAC afin d’étendre l’attribution de rôle à plusieurs référentiels avec un préfixe commun (caractère générique). Configurez les options suivantes :

  • Source d’attribut : Request
  • Attribut : Repository name
  • Opérateur : StringStartsWithIgnoreCase
  • Valeur : <repository-prefix> - le préfixe des référentiels, y compris la barre oblique finale /.
    • Par exemple, pour accorder des autorisations à tous les référentiels avec le préfixe backend/, tel que backend/nginx et backend/redis, entrez backend/.
    • Pour accorder des autorisations à tous les référentiels avec le préfixe frontend/js/, tels que frontend/js/react et frontend/js/vue, entrez frontend/js/.

Important

La barre oblique finale / est obligatoire dans le champ Value pour l'expression de la condition ABAC. Si vous n’incluez pas la barre oblique finale /, vous risquez d'accorder involontairement des autorisations à d’autres référentiels qui ne correspondent pas au préfixe. Par exemple, si vous entrez backend sans la barre oblique de fin /, l’attribution de rôle accorde des autorisations à tous les référentiels avec le préfixe backend, tels que backend/nginx, backend/redis, backend-infra/k8s, backend-backup/store, backend et backendsvc/containers.

Capture d’écran de la configuration de l’expression pour étendre la condition ABAC à un préfixe de référentiel.

Cliquez sur « Enregistrer » pour enregistrer la condition ABAC.

Passez en revue la condition d'attribution de rôle dans ABAC. La page de révision inclut une expression de code de la condition ABAC, qui peut être utilisée pour effectuer la même attribution de rôle avec la même condition ABAC à l’aide d’Azure CLI.

Capture d’écran de la vérification de la condition ABAC pour l’étendue d’un préfixe de référentiel.

Effectuez l’attribution de rôle en cliquant sur « Vérifier + affecter ».

Une fois l’attribution de rôle créée, vous pouvez afficher, modifier ou supprimer l’attribution de rôle. Accédez à « Contrôle d’accès (IAM) » du Registre et sélectionnez l’onglet « Attributions de rôles » pour afficher la liste des attributions de rôles existantes qui s’appliquent au Registre.

Attribution de rôle à plusieurs référentiels à l’aide de plusieurs préfixes de référentiel (plusieurs caractères génériques)

Dans cet exemple, nous assignons le Container Registry Repository Reader rôle pour accorder des autorisations d’extraction à plusieurs référentiels sous deux préfixes différents (plusieurs caractères génériques). En ajoutant des conditions ABAC, cette attribution de rôle permet à l’identité d’extraire des images, d’afficher des balises et de lire les métadonnées uniquement à partir du référentiel spécifié, ce qui empêche l’accès à d’autres référentiels dans le Registre.

Si vous avez suivi l’exemple précédent pour attribuer le Container Registry Repository Reader rôle à un référentiel spécifique, vous devez supprimer cette attribution de rôle (en accédant au panneau « Contrôle d’accès (IAM) » et en sélectionnant l’onglet « Attributions de rôles », avant de créer un nouveau rôle avec une condition ABAC délimitée à un préfixe de référentiel.

Suivez les mêmes étapes que dans l’exemple précédent pour effectuer une attribution de rôle avec des conditions ABAC.

Dans l’étape pour ajouter une expression pour la condition ABAC, configurez deux expressions pour étendre l’attribution de rôle à plusieurs référentiels sous deux préfixes : backend/ et frontend/js/ (plusieurs caractères génériques).

Pour la première expression, configurez les options suivantes :

  • Source d’attribut : Request
  • Attribut : Repository name
  • Opérateur : StringStartsWithIgnoreCase
  • Valeur : <repository-prefix> - le préfixe des référentiels, y compris la barre oblique finale /.
    • Par exemple, pour accorder des autorisations à tous les référentiels avec le préfixe backend/, tel que backend/nginx et backend/redis, entrez backend/.
    • Pour accorder des autorisations à tous les référentiels avec le préfixe frontend/js/, tels que frontend/js/react et frontend/js/vue, entrez frontend/js/.

Cliquez sur « Ajouter une expression ». Vérifiez que l’opérateur booléen est défini sur « Or ». Vous pouvez éventuellement sélectionner « Groupe » pour regrouper les expressions et contrôler l’ordre d’évaluation. L’éditeur visuel prend également en charge plusieurs opérateurs booléens, notamment « And », « Or », un regroupement hiérarchique et une négation.

Pour la deuxième expression, configurez les options suivantes :

  • Source d’attribut : Request
  • Attribut : Repository name
  • Opérateur : StringStartsWithIgnoreCase
  • Valeur : <repository-prefix> - le préfixe des référentiels, y compris la barre oblique finale /.
    • Par exemple, pour accorder des autorisations à tous les référentiels avec le préfixe backend/, tel que backend/nginx et backend/redis, entrez backend/.
    • Pour accorder des autorisations à tous les dépôts avec le préfixe frontend/js/, tels que frontend/js/react et frontend/js/vue, entrez frontend/js/.

Important

La barre oblique finale / est obligatoire dans le champ Value pour l'expression de la condition ABAC. Si vous n’incluez pas la barre oblique de fin /, vous pourriez accorder involontairement des autorisations à d’autres référentiels qui ne correspondent pas au préfixe. Par exemple, si vous entrez backend sans la barre oblique finale /, l’attribution de rôle accorde des autorisations à tous les référentiels avec le préfixe backend, tels que backend/nginx, backend/redis, backend-infra/k8s, backend-backup/store, backend et backendsvc/containers.

Capture d’écran de la configuration de l’expression pour étendre la condition ABAC à plusieurs préfixes de référentiel.

Cliquez sur « Enregistrer » pour enregistrer la condition ABAC.

Vérifiez la condition ABAC d’attribution de rôle. La page de révision inclut une expression de code de la condition ABAC, qui peut être utilisée pour effectuer la même attribution de rôle avec la même condition ABAC à l’aide d’Azure CLI.

Capture d’écran de la vérification de la condition ABAC pour l’étendue à plusieurs préfixes de référentiel.

Effectuez l’attribution de rôle en cliquant sur « Vérifier + affecter ».

Une fois l’attribution de rôle créée, vous pouvez afficher, modifier ou supprimer l’attribution de rôle. Accédez à « Contrôle d’accès (IAM) » du Registre et sélectionnez l’onglet « Attributions de rôles » pour afficher la liste des attributions de rôles existantes qui s’appliquent au Registre.

Nombre maximal de conditions ABAC

Le portail Azure prend en charge un nombre limité de conditions ABAC par attribution de rôle.

Pour ajouter plus que la limite du portail Azure des conditions ABAC, vous pouvez utiliser Azure CLI pour créer l’attribution de rôle avec plus de conditions ABAC.

Étapes suivantes