Options d’accès et d’identité pour Azure Kubernetes Service (AKS)Access and identity options for Azure Kubernetes Service (AKS)

Il existe différentes façons d'authentifier, de contrôler/autoriser l'accès et de sécuriser les clusters Kubernetes.There are different ways to authenticate, control access/authorize and secure Kubernetes clusters. Avec le contrôle d’accès en fonction du rôle Kubernetes (RBAC Kubernetes), vous pouvez accorder à des utilisateurs, groupes et comptes de service l’accès aux seules ressources dont ils ont besoin.Using Kubernetes role-based access control (Kubernetes RBAC), you can grant users, groups, and service accounts access to only the resources they need. À l’aide d’Azure Kubernetes Service (AKS), vous pouvez améliorer la structure de sécurité et des autorisations en utilisant Azure Active Directory et Azure RBAC.With Azure Kubernetes Service (AKS), you can further enhance the security and permissions structure by using Azure Active Directory and Azure RBAC. Ces approches vous aident à sécuriser l’accès à votre cluster et fournissent uniquement les autorisations minimales requises aux développeurs et aux opérateurs.These approaches help you secure your cluster access and provide only the minimum required permissions to developers and operators.

Cet article présente les principaux concepts permettant de vous authentifier et d’affecter des autorisations dans AKS.This article introduces the core concepts that help you authenticate and assign permissions in AKS.

Autorisations de service AKSAKS service permissions

Lors de la création d’un cluster, AKS crée ou modifie les ressources dont il a besoin pour créer et exécuter le cluster, telles que des machines virtuelles et des cartes réseau, pour le compte de l’utilisateur qui crée le cluster.When creating a cluster, AKS creates or modifies resources it needs to create and run the cluster, such as VMs and NICs, on behalf of the user creating the cluster. Cette identité est distincte de l’autorisation d’identité du cluster, qui est créée à la création du cluster.This identity is distinct from the cluster's identity permission, which is created during cluster creation.

Autorisations de l’identité qui crée et exploite le clusterIdentity creating and operating the cluster permissions

Les autorisations suivantes sont requises par l’identité qui crée et exécute le cluster.The following permissions are needed by the identity creating and operating the cluster.

AutorisationPermission MotifReason
Microsoft.Compute/diskEncryptionSets/readMicrosoft.Compute/diskEncryptionSets/read Requise pour lire l’ID du jeu de chiffrement de disque.Required to read disk encryption set ID.
Microsoft.Compute/proximityPlacementGroups/writeMicrosoft.Compute/proximityPlacementGroups/write Requise pour mettre à jour les groupes de placement de proximité.Required for updating proximity placement groups.
Microsoft.Network/applicationGateways/readMicrosoft.Network/applicationGateways/read
Microsoft.Network/applicationGateways/writeMicrosoft.Network/applicationGateways/write
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/join/action
Requises pour configurer des passerelles d’application et joindre le sous-réseau.Required to configure application gateways and join the subnet.
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/join/action Requise pour configurer le groupe de sécurité réseau pour le sous-réseau lors de l’utilisation d’un réseau virtuel personnalisé.Required to configure the Network Security Group for the subnet when using a custom VNET.
Microsoft.Network/publicIPAddresses/join/actionMicrosoft.Network/publicIPAddresses/join/action
Microsoft.Network/publicIPPrefixes/join/actionMicrosoft.Network/publicIPPrefixes/join/action
Requises pour configurer les adresses IP publiques sortantes sur l’équilibreur de charge standard.Required to configure the outbound public IPs on the Standard Load Balancer.
Microsoft.OperationalInsights/workspaces/sharedkeys/readMicrosoft.OperationalInsights/workspaces/sharedkeys/read
Microsoft.OperationalInsights/workspaces/readMicrosoft.OperationalInsights/workspaces/read
Microsoft.OperationsManagement/solutions/writeMicrosoft.OperationsManagement/solutions/write
Microsoft.OperationsManagement/solutions/readMicrosoft.OperationsManagement/solutions/read
Microsoft.ManagedIdentity/userAssignedIdentities/assign/actionMicrosoft.ManagedIdentity/userAssignedIdentities/assign/action
Requises pour créer et mettre à jour des espaces de travail Log Analytics et la supervision Azure pour les conteneurs.Required to create and update Log Analytics workspaces and Azure monitoring for containers.

Autorisations de l’identité du cluster AKSAKS cluster identity permissions

Les autorisations suivantes sont utilisées par l’identité du cluster AKS, qui est créée et associée au cluster AKS à la création du cluster.The following permissions are used by the AKS cluster identity, which is created and associated with the AKS cluster when the cluster is created. Chaque autorisation est utilisée pour les raisons suivantes :Each permission is used for the reasons below:

AutorisationPermission MotifReason
Microsoft.Network/loadBalancers/deleteMicrosoft.Network/loadBalancers/delete
Microsoft.Network/loadBalancers/readMicrosoft.Network/loadBalancers/read
Microsoft.Network/loadBalancers/writeMicrosoft.Network/loadBalancers/write
Requises pour configurer l’équilibreur de charge pour un service LoadBalancer.Required to configure the load balancer for a LoadBalancer service.
Microsoft.Network/publicIPAddresses/deleteMicrosoft.Network/publicIPAddresses/delete
Microsoft.Network/publicIPAddresses/readMicrosoft.Network/publicIPAddresses/read
Microsoft.Network/publicIPAddresses/writeMicrosoft.Network/publicIPAddresses/write
Requises pour rechercher et configurer des IP publiques pour un service LoadBalancer.Required to find and configure public IPs for a LoadBalancer service.
Microsoft.Network/publicIPAddresses/join/actionMicrosoft.Network/publicIPAddresses/join/action Requise pour configurer des IP publiques pour un service LoadBalancer.Required for configuring public IPs for a LoadBalancer service.
Microsoft.Network/networkSecurityGroups/readMicrosoft.Network/networkSecurityGroups/read
Microsoft.Network/networkSecurityGroups/writeMicrosoft.Network/networkSecurityGroups/write
Requises pour créer ou supprimer des règles de sécurité pour un service LoadBalancer.Required to create or delete security rules for a LoadBalancer service.
Microsoft.Compute/disks/deleteMicrosoft.Compute/disks/delete
Microsoft.Compute/disks/readMicrosoft.Compute/disks/read
Microsoft.Compute/disks/writeMicrosoft.Compute/disks/write
Microsoft.Compute/locations/DiskOperations/readMicrosoft.Compute/locations/DiskOperations/read
Requises pour configurer AzureDisks.Required to configure AzureDisks.
Microsoft.Storage/storageAccounts/deleteMicrosoft.Storage/storageAccounts/delete
Microsoft.Storage/storageAccounts/listKeys/actionMicrosoft.Storage/storageAccounts/listKeys/action
Microsoft.Storage/storageAccounts/readMicrosoft.Storage/storageAccounts/read
Microsoft.Storage/storageAccounts/writeMicrosoft.Storage/storageAccounts/write
Microsoft.Storage/operations/readMicrosoft.Storage/operations/read
Requises pour configurer les comptes de stockage pour AzureFile ou AzureDisk.Required to configure storage accounts for AzureFile or AzureDisk.
Microsoft.Network/routeTables/readMicrosoft.Network/routeTables/read
Microsoft.Network/routeTables/routes/deleteMicrosoft.Network/routeTables/routes/delete
Microsoft.Network/routeTables/routes/readMicrosoft.Network/routeTables/routes/read
Microsoft.Network/routeTables/routes/writeMicrosoft.Network/routeTables/routes/write
Microsoft.Network/routeTables/writeMicrosoft.Network/routeTables/write
Requises pour configurer des tables de routes et des routes pour les nœuds.Required to configure route tables and routes for nodes.
Microsoft.Compute/virtualMachines/readMicrosoft.Compute/virtualMachines/read Requise pour rechercher des informations pour les machines virtuelles dans un VMAS, telles que les zones, le domaine d’erreur, la taille et les disques de données.Required to find information for virtual machines in a VMAS, such as zones, fault domain, size, and data disks.
Microsoft.Compute/virtualMachines/writeMicrosoft.Compute/virtualMachines/write Requise pour attacher AzureDisks à une machine virtuelle dans un VMAS.Required to attach AzureDisks to a virtual machine in a VMAS.
Microsoft.Compute/virtualMachineScaleSets/readMicrosoft.Compute/virtualMachineScaleSets/read
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/readMicrosoft.Compute/virtualMachineScaleSets/virtualMachines/read
Microsoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/readMicrosoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read
Requises pour rechercher des informations pour les machines virtuelles dans un groupe de machines virtuelles identiques, telles que les zones, le domaine d’erreur, la taille et les disques de données.Required to find information for virtual machines in a virtual machine scale set, such as zones, fault domain, size, and data disks.
Microsoft.Network/networkInterfaces/writeMicrosoft.Network/networkInterfaces/write Requise pour ajouter une machine virtuelle dans un VMAS à un pool d’adresses de back-ends d’équilibreur de charge.Required to add a virtual machine in a VMAS to a load balancer backend address pool.
Microsoft.Compute/virtualMachineScaleSets/writeMicrosoft.Compute/virtualMachineScaleSets/write Requise pour ajouter un groupe de machines virtuelles identiques à des pools d’adresses de back-ends d’un équilibreur de charge et effectuer un scale-out des nœuds dans un groupe de machines virtuelles identiques.Required to add a virtual machine scale set to a load balancer backend address pools and scale out nodes in a virtual machine scale set.
Microsoft.Compute/virtualMachineScaleSets/virtualmachines/writeMicrosoft.Compute/virtualMachineScaleSets/virtualmachines/write Requise pour attacher AzureDisks et ajouter une machine virtuelle à partir d’un groupe de machines virtuelles identiques à l’équilibreur de charge.Required to attach AzureDisks and add a virtual machine from a virtual machine scale set to the load balancer.
Microsoft.Network/networkInterfaces/readMicrosoft.Network/networkInterfaces/read Requise pour rechercher des IP internes et des pools d’adresses de back-ends d’équilibreur de charge pour les machines virtuelles dans un VMAS.Required to search internal IPs and load balancer backend address pools for virtual machines in a VMAS.
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/readMicrosoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read Requise pour rechercher des IP internes et des pools d’adresses de back-ends d’équilibreur de charge pour une machine virtuelle dans un groupe de machines virtuelles identiques.Required to search internal IPs and load balancer backend address pools for a virtual machine in a virtual machine scale set.
Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ ipconfigurations/publicipaddresses/readMicrosoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ ipconfigurations/publicipaddresses/read Requise pour rechercher des IP publiques pour une machine virtuelle dans un groupe de machines virtuelles identiques.Required to find public IPs for a virtual machine in a virtual machine scale set.
Microsoft.Network/virtualNetworks/readMicrosoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/readMicrosoft.Network/virtualNetworks/subnets/read
Requises pour vérifier si un sous-réseau existe pour l’équilibreur de charge interne dans un autre groupe de ressources.Required to verify if a subnet exists for the internal load balancer in another resource group.
Microsoft.Compute/snapshots/deleteMicrosoft.Compute/snapshots/delete
Microsoft.Compute/snapshots/readMicrosoft.Compute/snapshots/read
Microsoft.Compute/snapshots/writeMicrosoft.Compute/snapshots/write
Requises pour configurer des instantanés pour AzureDisk.Required to configure snapshots for AzureDisk.
Microsoft.Compute/locations/vmSizes/readMicrosoft.Compute/locations/vmSizes/read
Microsoft.Compute/locations/operations/readMicrosoft.Compute/locations/operations/read
Requises pour rechercher les tailles des machines virtuelles pour la recherche des limites de volume AzureDisk.Required to find virtual machine sizes for finding AzureDisk volume limits.

Autorisations supplémentaires de l’identité du clusterAdditional cluster identity permissions

Les autorisations supplémentaires suivantes sont requises par l’identité du cluster lors de la création d’un cluster avec des attributs spécifiques.The following additional permissions are needed by the cluster identity when creating a cluster with specific attributes. Ces autorisations ne sont pas attribuées automatiquement et vous devez donc les ajouter à l’identité du cluster après sa création.These permissions are not automatically assigned so you must add these permissions to the cluster identity after its created.

AutorisationPermission MotifReason
Microsoft.Network/networkSecurityGroups/writeMicrosoft.Network/networkSecurityGroups/write
Microsoft.Network/networkSecurityGroups/readMicrosoft.Network/networkSecurityGroups/read
Requises si vous utilisez un groupe de sécurité réseau dans un autre groupe de ressources.Required if using a network security group in another resource group. Requises pour configurer des règles de sécurité pour un service LoadBalancer.Required to configure security rules for a LoadBalancer service.
Microsoft.Network/virtualNetworks/subnets/readMicrosoft.Network/virtualNetworks/subnets/read
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/join/action
Requises si vous utilisez un sous-réseau dans un autre groupe de ressources, tel qu’un réseau virtuel personnalisé.Required if using a subnet in another resource group such as a custom VNET.
Microsoft.Network/routeTables/routes/readMicrosoft.Network/routeTables/routes/read
Microsoft.Network/routeTables/routes/writeMicrosoft.Network/routeTables/routes/write
Requises si vous utilisez un sous-réseau associé à une table de routes dans un autre groupe de ressources, tel qu’un réseau virtuel personnalisé avec une table de routes personnalisée.Required if using a subnet associated with a route table in another resource group such as a custom VNET with a custom route table. Requises pour vérifier si un sous-réseau existe déjà pour le sous-réseau dans l’autre groupe de ressources.Required to verify if a subnet already exists for the subnet in the other resource group.
Microsoft.Network/virtualNetworks/subnets/readMicrosoft.Network/virtualNetworks/subnets/read Requise si vous utilisez un équilibreur de charge interne dans un autre groupe de ressources.Required if using an internal load balancer in another resource group. Requise pour vérifier si un sous-réseau existe déjà pour l’équilibreur de charge interne dans le groupe de ressources.Required to verify if a subnet already exists for the internal load balancer in the resource group.

Contrôle d’accès en fonction du rôle Kubernetes (RBAC Kubernetes)Kubernetes role-based access control (Kubernetes RBAC)

Afin de fournir un filtrage granulaire des actions que les utilisateurs peuvent effectuer, Kubernetes recourt au contrôle d’accès en fonction du rôle Kubernetes (RBAC Kubernetes).To provide granular filtering of the actions that users can do, Kubernetes uses Kubernetes role-based access control (Kubernetes RBAC). Ce mécanisme de contrôle vous permet d’affecter à des utilisateurs ou à des groupes d’utilisateurs, l’autorisation d’accomplir des opérations, telles que la création ou la modification de ressources, ou encore l’affichage de journaux d’activité à partir de charges de travail d’applications en cours d’exécution.This control mechanism lets you assign users, or groups of users, permission to do things like create or modify resources, or view logs from running application workloads. La portée de ces autorisations peut être limitée à un seul espace de noms, ou accordée à l’ensemble du cluster AKS.These permissions can be scoped to a single namespace, or granted across the entire AKS cluster. Avec le contrôle RBAC de Kubernetes, vous créez des rôles pour définir des autorisations, puis affectez ces rôles aux utilisateurs avec les liaisons de rôle.With Kubernetes RBAC, you create roles to define permissions, and then assign those roles to users with role bindings.

Pour plus d’informations, consultez Utilisation de l’autorisation RBAC Kubernetes.For more information, see Using Kubernetes RBAC authorization.

Rôles et ClusterRolesRoles and ClusterRoles

Avant d’attribuer des autorisations aux utilisateurs avec RBAC Kubernetes, vous devez tout d’abord définir ces autorisations en tant que rôle.Before you assign permissions to users with Kubernetes RBAC, you first define those permissions as a Role. Les rôles Kubernetes accordent des autorisations.Kubernetes roles grant permissions. Le concept d’autorisation refusée n’existe pas.There's no concept of a deny permission.

Les rôles sont utilisés pour accorder des autorisations dans un espace de noms.Roles are used to grant permissions within a namespace. Si vous devez accorder des autorisations sur l’ensemble du cluster ou sur des ressources de cluster en dehors d’un espace de noms donné, vous pouvez utiliser ClusterRoles à la place.If you need to grant permissions across the entire cluster, or to cluster resources outside a given namespace, you can instead use ClusterRoles.

Un ClusterRole fonctionne de la même façon pour accorder des autorisations aux ressources, mais il peut être appliqué aux ressources dans l’ensemble du cluster, et non dans un espace de noms spécifique.A ClusterRole works in the same way to grant permissions to resources, but can be applied to resources across the entire cluster, not a specific namespace.

RoleBindings et ClusterRoleBindingsRoleBindings and ClusterRoleBindings

Une fois les rôles définis pour accorder des autorisations aux ressources, vous affectez ces autorisations RBAC Kubernetes au moyen d’un RoleBinding.Once roles are defined to grant permissions to resources, you assign those Kubernetes RBAC permissions with a RoleBinding. Si votre cluster AKS s’intègre avec Azure Active Directory (Azure AD), les liaisons sont la manière dont ces utilisateurs Azure AD se voient accorder des autorisations pour effectuer des actions au sein du cluster. Pour plus d’informations, consultez la section Contrôler l’accès aux ressources de cluster à l’aide du contrôle d’accès en fonction du rôle Kubernetes et des identités Azure Active Directory.If your AKS cluster integrates with Azure Active Directory (Azure AD), bindings are how those Azure AD users are granted permissions to perform actions within the cluster, see how in Control access to cluster resources using Kubernetes role-based access control and Azure Active Directory identities.

Les liaisons de rôle servent à assigner des rôles pour un espace de noms donné.Role bindings are used to assign roles for a given namespace. Cette approche vous permet de séparer logiquement un cluster AKS unique, avec des utilisateurs uniquement capable d’accéder aux ressources d’application dans leur espace de noms attribué.This approach lets you logically segregate a single AKS cluster, with users only able to access the application resources in their assigned namespace. Si vous avez besoin de lier des rôles sur l’ensemble du cluster, ou sur des ressources de cluster en dehors d’un espace de noms donné, vous pouvez utiliser ClusterRoleBindings à la place.If you need to bind roles across the entire cluster, or to cluster resources outside a given namespace, you can instead use ClusterRoleBindings.

Un ClusterRoleBinding fonctionne de la même façon pour lier des rôles aux utilisateurs, mais il peut être appliqué aux ressources sur l’ensemble du cluster, et non à un espace de noms spécifique.A ClusterRoleBinding works in the same way to bind roles to users, but can be applied to resources across the entire cluster, not a specific namespace. Ce moyen vous permet d’accorder aux administrateurs ou aux techniciens du support technique l’accès à toutes les ressources dans le cluster AKS.This approach lets you grant administrators or support engineers access to all resources in the AKS cluster.

Nota

Toute action de cluster prise par Microsoft/AKS est effectuée avec le consentement de l’utilisateur sous un rôle Kubernetes intégré aks-service et une liaison de rôle intégrée aks-service-rolebinding.Any cluster actions taken by Microsoft/AKS are made with user consent under a built-in Kubernetes role aks-service and built-in role binding aks-service-rolebinding. Ce rôle permet à AKS de dépanner et de diagnostiquer les problèmes de cluster, mais ne peut pas modifier les autorisations, ni créer des rôles ou des liaisons de rôle, ni d’autres actions à privilèges élevés.This role enables AKS to troubleshoot and diagnose cluster issues, but can't modify permissions nor create roles or role bindings, or other high privilege actions. L’accès aux rôles est activé uniquement sous les tickets de support actifs avec l’accès juste-à-temps (JIT).Role access is only enabled under active support tickets with just-in-time (JIT) access. En savoir plus sur les stratégies de prise en charge AKS.Read more about AKS support policies.

Comptes de service KubernetesKubernetes service accounts

Un des principaux types d’utilisateur dans Kubernetes est le compte de service.One of the primary user types in Kubernetes is a service account. Un compte de service existe dans l’API Kubernetes et est géré par cette API.A service account exists in, and is managed by, the Kubernetes API. Les informations d’identification des comptes de service sont stockées en tant que secrets Kubernetes, ce qui leur permet d’être utilisées par les pods autorisés à communiquer avec le serveur d’API.The credentials for service accounts are stored as Kubernetes secrets, which allows them to be used by authorized pods to communicate with the API Server. La plupart des requêtes d’API fournissent un jeton d’authentification pour un compte de service ou un compte d’utilisateur normal.Most API requests provide an authentication token for a service account or a normal user account.

Les comptes d'utilisateurs normaux permettent un accès plus traditionnel pour les administrateurs ou les développeurs humains, et pas seulement pour les services et les processus.Normal user accounts allow more traditional access for human administrators or developers, not just services, and processes. Kubernetes ne fournit pas de solution de gestion des identités dans laquelle les comptes et les mots de passe d'utilisateurs standard sont stockés.Kubernetes itself doesn't provide an identity management solution where regular user accounts and passwords are stored. Par contre, il est possible d’intégrer des solutions d’identité externes à Kubernetes.Instead, external identity solutions can be integrated into Kubernetes. Pour les clusters AKS, cette solution d’identité intégrée est Azure Active Directory.For AKS clusters, this integrated identity solution is Azure Active Directory.

Pour plus d’informations sur les options d’identité dans Kubernetes, consultez Authentification Kubernetes.For more information on the identity options in Kubernetes, see Kubernetes authentication.

Intégration d’Azure Active DirectoryAzure Active Directory integration

La sécurité des clusters AKS peut être améliorée avec l’intégration d’Azure Active Directory (AD).The security of AKS clusters can be enhanced with the integration of Azure Active Directory (AD). S’appuyant sur des décennies de gestion des identités d’entreprise, Azure AD est un service multilocataire, basé sur le cloud pour la gestion des identités et des annuaires, qui combine les principaux services d’annuaire, la gestion des accès aux applications et la protection des identités.Built on decades of enterprise identity management, Azure AD is a multi-tenant, cloud-based directory, and identity management service that combines core directory services, application access management, and identity protection. Avec Azure AD, vous pouvez intégrer des identités locales dans les clusters AKS pour fournir une source unique de sécurité et de gestion des comptes.With Azure AD, you can integrate on-premises identities into AKS clusters to provide a single source for account management and security.

Intégration d’Azure Active Directory aux clusters AKS

Avec les clusters AKS intégrés Azure AD, vous pouvez accorder aux utilisateurs ou aux groupes l’accès aux ressources Kubernetes dans un espace de noms ou au sein du cluster.With Azure AD-integrated AKS clusters, you can grant users or groups access to Kubernetes resources within a namespace or across the cluster. Pour obtenir un contexte de configuration kubectl, un utilisateur peut exécuter la commande az aks get-credentials.To obtain a kubectl configuration context, a user can run the az aks get-credentials command. Lorsqu’un utilisateur interagit ensuite avec le cluster AKS par le biais de kubectl, il est invité à se connecter avec ses informations d’identification Azure AD.When a user then interacts with the AKS cluster with kubectl, they're prompted to sign in with their Azure AD credentials. Cette solution fournit une source unique pour les informations d’identification de mots de passe et de gestion des comptes utilisateur.This approach provides a single source for user account management and password credentials. L’utilisateur peut uniquement accéder aux ressources, tel que défini par l’administrateur du cluster.The user can only access the resources as defined by the cluster administrator.

L’authentification Azure AD est fournie aux clusters AKS à l’aide d’OpenID Connect.Azure AD authentication is provided to AKS clusters with OpenID Connect. OpenID Connect est une couche d’identité basée sur le protocole OAuth 2.0.OpenID Connect is an identity layer built on top of the OAuth 2.0 protocol. Pour plus d’informations sur OpenID Connect, voir la documentation sur Open ID Connect.For more information on OpenID Connect, see the Open ID connect documentation. Depuis le cluster Kubernetes, l’authentification par jeton de Webhook est utilisée pour vérifier les jetons d’authentification.From inside of the Kubernetes cluster, Webhook Token Authentication is used to verify authentication tokens. L’authentification par jeton de Webhook est configurée et gérée en tant que partie du cluster AKS.Webhook token authentication is configured and managed as part of the AKS cluster.

Webhook et serveur APIWebhook and API server

Webhook et le flux d’authentification du serveur API

Comme indiqué dans le graphique ci-dessus, le serveur API appelle le serveur webhook AKS et effectue les étapes suivantes :As shown in the graphic above, the API server calls the AKS webhook server and performs the following steps:

  1. L’application cliente Azure AD est utilisée par kubectl pour connecter des utilisateurs avec le flux d’octroi d’autorisation d’appareil OAuth 2,0.The Azure AD client application is used by kubectl to sign in users with OAuth 2.0 device authorization grant flow.
  2. Azure AD fournit un access_token, id_token et un refresh_token.Azure AD provides an access_token, id_token, and a refresh_token.
  3. L’utilisateur envoie une requête à kubectl avec un access_token à partir de kubeconfig.The user makes a request to kubectl with an access_token from kubeconfig.
  4. Kubectl envoie le jeton access_token au serveur d’API.Kubectl sends the access_token to API Server.
  5. Le serveur API est configuré avec le serveur webhook d’authentification pour effectuer la validation.The API Server is configured with the Auth WebHook Server to perform validation.
  6. Le serveur webhook d’authentification confirme que la signature JSON Web Token est valide en vérifiant la clé de signature publique Azure AD.The authentication webhook server confirms the JSON Web Token signature is valid by checking the Azure AD public signing key.
  7. L’application serveur utilise les informations d’identification fournies par l’utilisateur pour interroger les appartenances aux groupes de l’utilisateur connecté à partir de l’API Graph MS.The server application uses user-provided credentials to query group memberships of the logged-in user from the MS Graph API.
  8. Une réponse est envoyée au serveur d’API avec des informations utilisateur, telles que la revendication de nom d’utilisateur principal (UPN) du jeton d’accès et l’appartenance au groupe de l’utilisateur en fonction de l’ID d’objet.A response is sent to the API Server with user information such as the user principal name (UPN) claim of the access token, and the group membership of the user based on the object ID.
  9. L’API effectue une décision d’autorisation basée sur le rôle Kubernetes/RoleBinding.The API performs an authorization decision based on the Kubernetes Role/RoleBinding.
  10. Une fois l’autorisation accordée, le serveur API renvoie une réponse à kubectl.Once authorized, the API server returns a response to kubectl.
  11. Kubectl envoie les commentaires à l’utilisateur.Kubectl provides feedback to the user.

Découvrez comment intégrer AKS à AAD ici.Learn how to integrate AKS with AAD here.

Contrôle d’accès en fonction du rôle Azure (Azure RBAC)Azure role-based access control (Azure RBAC)

Le contrôle RBAC Azure est un système d’autorisation basé sur Azure Resource Manager qui propose une gestion affinée des accès des ressources Azure.Azure RBAC is an authorization system built on Azure Resource Manager that provides fine-grained access management of Azure resources.

Le contrôle RBAC Azure est conçu pour fonctionner sur les ressources de votre abonnement AKS, tandis que la conception de RBAC Kubernetes le destine aux ressources Kubernetes de votre cluster AKS.Azure RBAC is designed to work on resources within your Azure subscription while Kubernetes RBAC is designed to work on Kubernetes resources within your AKS cluster.

Avec le contrôle RBAC Azure, vous créez une définition de rôle qui décrit les autorisations à appliquer.With Azure RBAC, you create a role definition that outlines the permissions to be applied. Cette définition de rôle est ensuite affectée, via une attribution de rôle, à un utilisateur ou à un groupe sur une étendue particulière, qui peut être une ressource individuelle, un groupe de ressources ou l’abonnement.A user or group is then assigned this role definition via a role assignment for a particular scope, which could be an individual resource, a resource group, or across the subscription.

Pour plus d’informations, consultez Qu’est-ce que le contrôle d’accès en fonction du rôle Azure (Azure RBAC) ?For more information, see What is Azure role-based access control (Azure RBAC)?

Il existe deux niveaux d’accès nécessaires pour pleinement utiliser un cluster AKS :There are two levels of access needed to fully operate an AKS cluster:

  1. Accédez à la ressource AKS dans votre abonnement Azure.Access the AKS resource in your Azure subscription. Ce niveau d’accès vous permet de contrôler les opérations de mise à l’échelle ou de mise à niveau de votre cluster à l’aide des API AKS, ainsi que d’extraire votre kubeconfig.This process allows you to control things scaling or upgrading your cluster using the AKS APIs as well as pull your kubeconfig.
  2. Accédez à l’API Kubernetes.Access to the Kubernetes API. Ce niveau d’accès est contrôlé par le RBAC Kubernetes (traditionnellement) ou par l’intégration du RBAC Azure à AKS pour l’autorisation Kubernetes.This access is controlled either by Kubernetes RBAC (traditionally) or by integrating Azure RBAC with AKS for Kubernetes authorization

Azure RBAC pour autoriser l’accès à la ressource AKSAzure RBAC to authorize access to the AKS resource

Avec RBAC Azure, vous pouvez fournir à vos utilisateurs (ou identités) un accès granulaire aux ressources AKS dans un ou plusieurs abonnements.With Azure RBAC, you can provide your users (or identities) with granular access to AKS resources across one or more subscriptions. Par exemple, vous pouvez avoir le rôle de contributeur d’Azure Kubernetes Service qui vous permet d’effectuer des actions telles que mettre à l’échelle et mettre à niveau votre cluster.For example, you could have the Azure Kubernetes Service Contributor role that allows you to do actions like scale and upgrade your cluster. Alors qu’un autre utilisateur peut avoir le rôle d’administrateur de cluster d’Azure Kubernetes Service qui autorise uniquement l’extraction du kubeconfig d’administration.While another user could have the Azure Kubernetes Service Cluster Admin role that only gives permission to pull the Admin kubeconfig.

Vous pouvez également donner à votre utilisateur le rôle de Contributeur général, qui englobe les autorisations ci-dessus et toutes les actions possibles sur la ressource AKS, à l’exception de la gestion des autorisations.Alternatively you could give your user the general Contributor role, which would encompass the above permissions and every action possible on the AKS resource with the exception of managing permissions itself.

Découvrez plus d’informations sur l’utilisation d’Azure RBAC pour sécuriser l’accès au fichier kubeconfig qui donne accès à l’API Kubernetes ici.See more how to use Azure RBAC to secure the access to the kubeconfig file that gives access to the Kubernetes API here.

Utiliser Azure RBAC pour l’autorisation Kubernetes (préversion)Azure RBAC for Kubernetes Authorization (Preview)

Avec l’intégration RBAC Azure, AKS utilise un serveur webhook d’autorisation Kubernetes pour vous permettre de gérer les autorisations et les attributions de ressources de cluster K8s intégrées à Azure AD à l’aide de la définition de rôle Azure et des attributions de rôles.With the Azure RBAC integration, AKS will use a Kubernetes Authorization webhook server to enable you to manage permissions and assignments of Azure AD-integrated K8s cluster resources using Azure role definition and role assignments.

Azure RBAC pour le flux d’autorisation Kubernetes

Comme indiqué dans le diagramme ci-dessus, lorsque vous utilisez l’intégration RBAC Azure, toutes les requêtes envoyées à l’API Kubernetes suivent le même processus d’authentification, comme expliqué dans la section Intégration d’Azure Active.As shown on the above diagram, when using the Azure RBAC integration all requests to the Kubernetes API will follow the same authentication flow as explained on the Azure Active integration section.

Mais après cela, au lieu de s’appuyer uniquement sur le RBAC Kubernetes pour l’autorisation, la requête est en fait autorisée par Azure, à condition que l’identité qui a fait la demande existe dans AAD.But after that, instead of solely relying on Kubernetes RBAC for Authorization, the request is actually going to be authorized by Azure, as long as the identity that made the request exists in AAD. Si l’identité n’existe pas dans AAD, par exemple un compte de service Kubernetes, le RBAC Azure ne démarrera pas et il s’agira du RBAC Kubernetes normal.If the identity doesn't exist in AAD, for example a Kubernetes service account, then the Azure RBAC won't kick in, and it will be the normal Kubernetes RBAC.

Dans ce scénario, vous pouvez donner aux utilisateurs l’un des quatre rôles intégrés, ou créer des rôles personnalisés comme vous le feriez avec les rôles Kubernetes, mais dans ce cas, à l’aide des mécanismes et des API Azure RBAC.In this scenario you could give users one of the four built-in roles, or create custom roles as you would do with Kubernetes roles but in this case using the Azure RBAC mechanisms and APIs.

Cette fonctionnalité vous permet, par exemple, de fournir non seulement aux utilisateurs des autorisations d’accès à la ressource AKS sur tous les abonnements, mais aussi de les configurer et de leur attribuer le rôle et les autorisations qu’ils auront dans chacun de ces clusters qui contrôlent l’accès à l’API Kubernetes.This feature will allow you to, for example, not only give users permissions to the AKS resource across subscriptions but set up and give them the role and permissions that they will have inside each of those clusters that controls the access to the Kubernetes API. Par exemple, vous pouvez accorder le rôle Azure Kubernetes Service RBAC Viewer sur l’étendue de l’abonnement et son destinataire peut répertorier et obtenir tous les objets Kubernetes de tous les clusters, mais pas les modifier.For example, you can grant the Azure Kubernetes Service RBAC Viewer role on the subscription scope and its recipient will be able to list and get all Kubernetes objects from all clusters, but not modify them.

Rôles intégrésBuilt-in roles

AKS propose quatre rôles intégrés.AKS provides the following four built-in roles. Ils sont similaires aux rôles intégrés Kubernetes mais avec quelques différences comme la prise en charge des CRD.They are similar to the Kubernetes built-in roles but with a few differences like supporting CRDs. Pour obtenir la liste complète des actions autorisées par chaque rôle intégré, consultez cet article.For the full list of actions allowed by each built-in role, see here.

RôleRole DescriptionDescription
Azure Kubernetes Service RBAC ViewerAzure Kubernetes Service RBAC Viewer Autorise l’accès en lecture seule pour voir la plupart des objets dans un espace de noms.Allows read-only access to see most objects in a namespace. Il n’autorise pas l’affichage des rôles ou des liaisons de rôles.It doesn't allow viewing roles or role bindings. Ce rôle n’autorise pas l’affichage des Secrets, car la lecture du contenu de secrets permet d’accéder aux informations d’identification ServiceAccount dans l’espace de noms, ce qui permet l’accès aux API comme n’importe quel ServiceAccount dans l’espace de noms (une forme d’élévation de privilèges)This role doesn't allow viewing Secrets, since reading the contents of Secrets enables access to ServiceAccount credentials in the namespace, which would allow API access as any ServiceAccount in the namespace (a form of privilege escalation)
Azure Kubernetes Service RBAC WriterAzure Kubernetes Service RBAC Writer Autorise l’accès en lecture/écriture pour la plupart des objets dans un espace de noms.Allows read/write access to most objects in a namespace. Ce rôle n’autorise pas l’affichage ni la modification des rôles et des liaisons de rôles.This role doesn't allow viewing or modifying roles or role bindings. Toutefois, il permet d’accéder à Secrets et d’exécuter des pods comme tout ServiceAccount dans l’espace de noms. Il peut donc être utilisé pour obtenir les niveaux d’accès API de n’importe quel ServiceAccount dans l’espace de noms.However, this role allows accessing Secrets and running Pods as any ServiceAccount in the namespace, so it can be used to gain the API access levels of any ServiceAccount in the namespace.
Azure Kubernetes Service RBAC AdminAzure Kubernetes Service RBAC Admin Autorise l’accès administrateur, normalement accordé au sein d’un espace de noms.Allows admin access, intended to be granted within a namespace. Autorise l’accès en lecture/écriture à la plupart des ressources dans un espace de noms (ou dans l’étendue du cluster), y compris la possibilité de créer des rôles et des liaisons de rôles dans l’espace de noms.Allows read/write access to most resources in a namespace (or cluster scope), including the ability to create roles and role bindings within the namespace. Ce rôle n’autorise pas l’accès en écriture au quota de ressources ou à l’espace de noms lui-même.This role doesn't allow write access to resource quota or to the namespace itself.
Azure Kubernetes Service RBAC Cluster AdminAzure Kubernetes Service RBAC Cluster Admin Autorise l’accès de super utilisateur qui permet d’effectuer n’importe quelle action sur toutes les ressources.Allows super-user access to perform any action on any resource. Ce rôle donne un contrôle total sur l’ensemble des ressources dans le cluster et dans tous les espaces de noms.It gives full control over every resource in the cluster and in all namespaces.

Pour savoir comment activer Azure RBAC pour l’autorisation Kubernetes lisez cet article.To learn how to enable Azure RBAC for Kubernetes authorization, read here.

RésuméSummary

Ce tableau récapitule les méthodes permettant aux utilisateurs de s’authentifier auprès de Kubernetes lorsque l’intégration Azure AD est activée.This table summarizes the ways users can authenticate to Kubernetes when Azure AD integration is enabled. Dans tous les cas, la séquence de commandes de l’utilisateur est la suivante :In all cases, the user's sequence of commands is:

  1. Exécuter az login pour s’authentifier sur Azure.Run az login to authenticate to Azure.
  2. Exécuter az aks get-credentials pour télécharger les informations d’identification du cluster dans .kube/config.Run az aks get-credentials to download credentials for the cluster into .kube/config.
  3. Exécuter les commandes kubectl (la première peut déclencher l’authentification basée sur le navigateur pour s’authentifier auprès du cluster, comme décrit dans le tableau suivant).Run kubectl commands (the first of which may trigger browser-based authentication to authenticate to the cluster, as described in the following table).

L’attribution de rôle dont il est question dans la deuxième colonne correspond à l’octroi de rôle Azure RBAC indiqué sous l’onglet Contrôle d’accès du portail Azure.The Role Grant referred to in the second column is the Azure RBAC role grant shown on the Access Control tab in the Azure portal. Le groupe Azure AD administrateur de cluster est affiché sous l’onglet Configuration dans le portail (ou avec le nom de paramètre --aad-admin-group-object-ids dans Azure CLI).The Cluster Admin Azure AD Group is shown on the Configuration tab in the portal (or with parameter name --aad-admin-group-object-ids in the Azure CLI).

DescriptionDescription Octroi de rôle requisRole grant required Groupe(s) Azure AD administrateur de clusterCluster admin Azure AD group(s) Quand l’utiliserWhen to use
Connexion administrateur héritée à l’aide d’un certificat clientLegacy admin login using client certificate Rôle administrateur Azure Kubernetes.Azure Kubernetes Admin Role. Ce rôle permet l’utilisation de az aks get-credentials avec l’indicateur --admin, ce qui télécharge un certificat administrateur de cluster hérité (non-Azure AD) dans le .kube/config de l’utilisateur.This role allows az aks get-credentials to be used with the --admin flag, which downloads a legacy (non-Azure AD) cluster admin certificate into the user's .kube/config. Il s’agit du seul objectif du rôle administrateur Azure Kubernetes.This is the only purpose of "Azure Kubernetes Admin Role". n/an/a Si vous êtes bloqué et n’avez pas accès à un groupe Azure AD valide avec accès à votre cluster.If you're permanently blocked by not having access to a valid Azure AD group with access to your cluster.
Azure AD avec liaisons (cluster)RoleBindings manuellesAzure AD with manual (Cluster)RoleBindings Rôle d’utilisateur Azure Kubernetes.Azure Kubernetes User Role. Le rôle d’utilisateur permet l’utilisation de az aks get-credentials sans indicateur --admin.The "User" role allows az aks get-credentials to be used without the --admin flag. (Il s’agit de l’unique objectif du rôle d’utilisateur Azure Kubernetes.) Ainsi, un cluster Azure AD peut télécharger une entrée vide dans .kube/config, ce qui déclenche l’authentification basée sur le navigateur lorsqu’il est utilisé pour la première fois par kubectl.(This is the only purpose of "Azure Kubernetes User Role".) The result, on an Azure AD-enabled cluster, is the download of an empty entry into .kube/config, which triggers browser-based authentication when it's first used by kubectl. L’utilisateur ne se trouve dans aucun de ces groupes.User is not in any of these groups. L’utilisateur ne se trouvant dans aucun groupe d’administration de cluster, ses droits sont entièrement contrôlés par n’importe quelle liaison RoleBindings ou ClusterRoleBindings configurée par les administrateurs de cluster.Because the user is not in any Cluster Admin groups, their rights will be controlled entirely by any RoleBindings or ClusterRoleBindings that have been set up by cluster admins. Les liaisons (cluster)RoleBindings désignent les utilisateurs ou groupes Azure AD en tant que subjects.The (Cluster)RoleBindings nominate Azure AD users or Azure AD groups as their subjects. Si aucune de ces liaisons n’a été configurée, l’utilisateur ne sera pas en mesure d’exécuter de commandes kubectl.If no such bindings have been set up, the user will not be able to excute any kubectl commands. Si vous souhaitez un contrôle d’accès affiné et que vous n’utilisez pas Azure RBAC pour l’autorisation Kubernetes.If you want fine-grained access control, and you're not using Azure RBAC for Kubernetes Authorization. Notez que l’utilisateur qui configure les liaisons doit se connecter à l’aide d’une des autres méthodes répertoriées dans ce tableau.Note that the user who sets up the bindings must log in by one of the other methods listed in this table.
Azure AD par membre du groupe d’administrationAzure AD by member of admin group Identique à ce qui précèdeSame as above L’utilisateur est membre d’un des groupes répertoriés ici.User is a member of one of the groups listed here. AKS génère automatiquement une liaison ClusterRoleBinding qui lie tous les groupes répertoriés au rôle de Kubernetes cluster-admin.AKS automatically generates a ClusterRoleBinding that binds all of the listed groups to the cluster-admin Kubernetes role. Ainsi, les utilisateurs de ces groupes peuvent exécuter toutes les commandes kubectl comme cluster-admin.So users in these groups can run all kubectl commands as cluster-admin. Si vous souhaitez accorder aux utilisateurs des droits d’administrateur complets et que vous n’utilisez pas Azure RBAC pour l’autorisation Kubernetes.If you want to conveniently grant users full admin rights, and are not using Azure RBAC for Kubernetes authorization.
Azure AD avec Azure RBAC pour l’autorisation KubernetesAzure AD with Azure RBAC for Kubernetes Authorization Deux rôles : Premièrement, rôle d’utilisateur Azure Kubernetes (comme ci-dessus).Two roles: First, Azure Kubernetes User Role (as above). Deuxièmement, l’un des rôles «Azure Kubernetes Service RBAC... » répertoriés ci-dessus, ou votre propre alternative personnalisée.Second, one of the "Azure Kubernetes Service RBAC..." roles listed above, or your own custom alternative. Le champ des rôles d’administrateur de l’onglet Configuration n’est pas pertinent lorsqu’Azure RBAC pour l’autorisation Kubernetes est activé.The admin roles field on the Configuration tab is irrelevant when Azure RBAC for Kubernetes Authorization is enabled. Vous utilisez Azure RBAC pour l’autorisation Kubernetes.You are using Azure RBAC for Kubernetes authorization. Cette approche vous offre un contrôle affiné, sans avoir à configurer de liaisons RoleBindings ou ClusterRoleBindings.This approach gives you fine-grained control, without the need to set up RoleBindings or ClusterRoleBindings.

Étapes suivantesNext steps

Pour plus d’informations sur les concepts fondamentaux de Kubernetes et d’AKS, consultez les articles suivants :For more information on core Kubernetes and AKS concepts, see the following articles: