Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment Azure Kubernetes Service (AKS) détermine ce qu’un appelant authentifié est autorisé à effectuer sur l’API Kubernetes. Il couvre les deux modèles d’autorisation qu'AKS prend en charge et le contrôle précis des ressources personnalisées avec les conditions Azure ABAC.
Pour savoir comment AKS authentifie les appelants en premier lieu, consultez les concepts d’authentification du cluster.
Pour obtenir une orientation dans les quatre scénarios d’identité AKS, consultez les options d’accès et d’identité pour AKS.
Autoriser l’API Kubernetes
Une fois qu’un appelant est authentifié, AKS évalue si l’appelant est autorisé à effectuer l’action demandée. AKS prend en charge deux modèles d’autorisation pour l’API Kubernetes :
- Contrôle d’accès en fonction du rôle Kubernetes (RBAC). Modèle d’autorisation Kubernetes natif. Les autorisations sont définies en tant qu'objets
RoleetClusterRoleet sont accordées aux sujets via les objetsRoleBindingetClusterRoleBindingstockés dans chaque cluster. - Autorisation d’ID Microsoft Entra. Un webhook d’autorisation AKS qui délègue les décisions d’autorisation à Microsoft Entra ID. Les autorisations sont accordées en tant qu’attributions de rôles Azure aux identités Entra ID et peuvent éventuellement être affinées avec des conditions Azure ABAC.
Vous pouvez utiliser les deux modèles sur le même cluster. Nous vous recommandons d’autoriser Microsoft Entra ID comme valeur par défaut et de réserver le RBAC Kubernetes pour obtenir des autorisations intra-cluster affinées. Le reste de cette section explique pourquoi et quand utiliser chacun d’eux.
Contrôle RBAC Kubernetes
Kubernetes RBAC est le modèle d'autorisation en amont de Kubernetes. Vous créez des objets Role ou ClusterRole qui accordent des verbes (tels que get, list, create) sur des ressources (par exemple, pods, deployments), et les liez à des sujets (utilisateurs, groupes ou comptes de service) à l’aide de RoleBinding ou ClusterRoleBinding objets. L’autoriseur RBAC intégré du serveur d’API Kubernetes évalue ces liaisons sur chaque requête.
Utilisez RBAC Kubernetes lorsque vous souhaitez :
- Un contrôle d’accès fin, intra-cluster, par espace de noms, défini sous forme de manifestes Kubernetes aux côtés des charges de travail qu’ils protègent.
- Autorisation gérée par GitOps qui réside dans la même source de vérité que la configuration de votre application.
- Autorisations pour les comptes de service en cluster que les charges de travail utilisent pour appeler l’API Kubernetes.
Les autorisations RBAC Kubernetes sont limitées à un seul cluster. Pour appliquer la même stratégie à de nombreux clusters, vous devez appliquer les manifestes à chaque cluster (généralement via GitOps). Utilisez les utilisateurs et les groupes Microsoft Entra en tant que sujets dans Kubernetes RoleBinding et ClusterRoleBinding objets afin que les identités humaines proviennent toujours de votre répertoire central.
Pour en savoir plus sur le modèle RBAC Kubernetes, consultez la documentation RBAC Kubernetes en amont. Pour la configuration dans AKS, consultez Utiliser Kubernetes RBAC avec l’intégration de Microsoft Entra.
Autorisation d’ID Microsoft Entra pour l’API Kubernetes
Avec l’autorisation Entra ID, AKS déploie un webhook d’autorisation qui délègue les décisions d’autorisation de l’API Kubernetes à Microsoft Entra ID. Lorsqu’une requête atteint le serveur d’API, le webhook appelle l’API d’ID checkaccess Entra pour évaluer les attributions de rôles Azure de l’appelant (et toutes les conditions ABAC jointes) et retourne une décision d’autorisation ou de refus.
L’autorisation Entra ID vous offre les avantages suivants sur la gestion des manifestes RBAC Kubernetes sur chaque cluster :
- Plan d’identité unique. Les mêmes utilisateurs, groupes et principaux de service Microsoft Entra qui régissent l’accès à vos ressources Azure régissent également l’accès à votre API Kubernetes. Il n’existe aucun répertoire utilisateur distinct à provisionner ou à faire pivoter.
- Attribuez une seule fois, régissez de nombreux clusters. Les attributions de rôles Azure peuvent être effectuées au niveau de l’abonnement, du groupe d’administration ou de l’étendue du groupe de ressources. Une attribution de rôle unique dans une étendue de groupe de ressources accorde l’accès à chaque cluster AKS actuel et futur dans ce groupe de ressources. Avec RBAC Kubernetes, vous devez appliquer des manifestes à chaque cluster individuellement.
- Accès conditionnel et Privileged Identity Management (PIM). L’accès au cluster hérite automatiquement des stratégies d’accès conditionnel Entra ID existantes de votre organisation (telles que l’authentification à facteurs multiples ou les restrictions basées sur l’emplacement) et peut être augmenté juste-à-temps via la gestion des identités privilégiées (PIM).
- Audit centralisé. Chaque modification d’attribution de rôle est enregistrée dans le journal d’activité Azure en même temps que d’autres modifications de ressources Azure. Vous disposez donc d’une piste d’audit pour la gouvernance de l’accès au cluster.
- Contraintes de ressources personnalisées affinées. Avec les conditions ABAC, vous pouvez restreindre l’accès à des groupes et types de ressources personnalisées spécifiques sans écrire de manifestes RBAC Kubernetes par cluster.
AKS fournit les rôles intégrés suivants pour l’autorisation Entra ID :
| Rôle | Description |
|---|---|
| Lecteur Azure Kubernetes Service RBAC | Accès en lecture seule à la plupart des objets d’un espace de noms. N’autorise pas l’affichage des rôles, des liaisons de rôle ou Secrets. |
| Azure Kubernetes Service RBAC Writer | Accès en lecture/écriture à la plupart des objets d’un espace de noms. N’autorise pas l’affichage ou la modification des rôles ou des liaisons de rôle. |
| Azure Kubernetes Service RBAC Admin | Accès en lecture/écriture à la plupart des ressources d’un espace de noms, ainsi que la possibilité de créer des rôles et des liaisons de rôle dans l’espace de noms. |
| Administrateur de cluster RBAC pour Azure Kubernetes Service | Contrôle total sur chaque ressource du cluster, sur tous les espaces de noms. |
Pour les modèles d’autorisation personnalisés, vous pouvez créer des définitions de rôles personnalisées qui ciblent des groupes d’API Kubernetes spécifiques à l’aide Microsoft.ContainerService des actions de données du fournisseur de ressources. Pour obtenir des exemples de rôle personnalisés et de configuration pas à pas, consultez Utiliser l’autorisation d’ID Microsoft Entra pour l’API Kubernetes.
Comparison
| Capacité | Contrôle RBAC Kubernetes | Autorisation Entra ID |
|---|---|---|
| Source d’identité | Utilisateurs, groupes, comptes de service Kubernetes | Identités Microsoft Entra ID |
| Étendue d’une seule subvention | Un cluster | Ressource, groupe de ressources, abonnement ou groupe d’administration |
| Gouvernance multi-cluster | Appliquer des manifestes à chaque cluster (généralement GitOps) | Une attribution de rôle dans une étendue plus élevée régit de nombreux clusters |
| Accès conditionnel / PIM | Non pris en charge | Hérité de Entra ID |
| Piste d’audit | Journal d’audit du cluster | Journal d'activité Azure |
| Filtrer l’accès par groupe CRD ou type | Élaborer des objets via CRD Role |
Utiliser les attributs de condition ABAC pour l’attribution de rôle |
Restreindre l’accès aux ressources personnalisées avec les conditions ABAC
Lorsque vous accordez un accès en lecture étendu via l’autorisation d’ID Microsoft Entra, mais que vous souhaitez restreindre les ressources personnalisées (CRD) que le bénéficiaire peut lire, attachez une condition Azure ABAC à l’attribution de rôle.
Sans conditions ABAC, accorder un accès en lecture aux ressources personnalisées nécessite un caractère générique tel que Microsoft.ContainerService/managedClusters/*/read, qui couvre chaque CRD sur chaque cluster dans le périmètre. Avec ABAC, vous pouvez attacher une condition qui limite l’accès à des groupes et types CRD spécifiques, par exemple, autoriser templates.gatekeeper.sh tout en bloquant kyverno.io , sans écrire de manifestes RBAC Kubernetes par cluster.
Pour l’autorisation de l’API Kubernetes, vous pouvez filtrer l’accès aux ressources personnalisées par leur groupe d’API et le type à l’aide des attributs suivants :
Microsoft.ContainerService/managedClusters/customResources:groupMicrosoft.ContainerService/managedClusters/customResources:kind
Pour plus d’informations sur Azure ABAC, consultez Quelles sont les conditions d’attribution de rôle Azure ?. Pour une configuration pas à pas, consultez Restreindre l’accès aux ressources personnalisées à l’aide de conditions ABAC.