Concepts de sécurité pour les applications et les clusters dans AKS (Azure Kubernetes Service)Security concepts for applications and clusters in Azure Kubernetes Service (AKS)

Pour protéger vos données clientes quand vous exécutez des charges de travail d’applications dans AKS (Azure Kubernetes Service), vous devez prendre en compte la sécurité de votre cluster.To protect your customer data as you run application workloads in Azure Kubernetes Service (AKS), the security of your cluster is a key consideration. Kubernetes inclut des composants de sécurité tels que les stratégies réseau et les secrets.Kubernetes includes security components such as network policies and Secrets. Azure ajoute des composants tels que les groupes de sécurité réseau et les mises à niveau de cluster orchestrées.Azure then adds in components such as network security groups and orchestrated cluster upgrades. Ces composants de sécurité sont combinés afin que votre cluster AKS exécute les dernières versions de Kubernetes et mises à jour de sécurité du système d’exploitation, et que le trafic vers les pods et l’accès aux informations d’identification sensibles soient sécurisés.These security components are combined to keep your AKS cluster running the latest OS security updates and Kubernetes releases, and with secure pod traffic and access to sensitive credentials.

Cet article présente les concepts fondamentaux qui sécurisent vos applications dans AKS :This article introduces the core concepts that secure your applications in AKS:

Sécurité du maîtreMaster security

Dans AKS, les composants maîtres Kubernetes font partie du service managé fourni par Microsoft.In AKS, the Kubernetes master components are part of the managed service provided by Microsoft. Chaque cluster AKS a son propre maître Kubernetes dédié monolocataire pour fournir le serveur d’API, le planificateur, etc. Ce maître est managé et maintenu par Microsoft.Each AKS cluster has its own single-tenanted, dedicated Kubernetes master to provide the API Server, Scheduler, etc. This master is managed and maintained by Microsoft.

Par défaut, le serveur d’API Kubernetes utilise une adresse IP publique avec un nom de domaine complet (FQDN).By default, the Kubernetes API server uses a public IP address and a fully qualified domain name (FQDN). Vous pouvez limiter l’accès au point de terminaison du serveur d’API à l’aide de plages d’adresses IP autorisées.You can limit access to the API server endpoint using authorized IP ranges. Vous pouvez également créer un cluster entièrement privé pour limiter l’accès du serveur d’API à votre réseau virtuel.You can also create a fully private cluster to limit API server access to your virtual network.

Vous pouvez contrôler l’accès au serveur d’API avec des contrôles d’accès en fonction du rôle Kubernetes (RBAC Kubernetes) et le RBAC Azure.You can control access to the API server using Kubernetes role-based access control (Kubernetes RBAC) and Azure RBAC. Pour plus d’informations, consultez Intégration d’Azure AD à AKS.For more information, see Azure AD integration with AKS.

Sécurité des nœudsNode security

Les nœuds AKS sont des machines virtuelles Azure dont vous assurez la gestion et la maintenance.AKS nodes are Azure virtual machines that you manage and maintain. Les nœuds Linux exécutent une distribution Ubuntu optimisée à l’aide du runtime de conteneur Moby.Linux nodes run an optimized Ubuntu distribution using the Moby container runtime. Les nœuds Windows Server exécutent une version Windows Server 2019 optimisée et utilisent également le runtime de conteneur Moby.Windows Server nodes run an optimized Windows Server 2019 release and also use the Moby container runtime. Quand un cluster AKS est créé ou fait l’objet d’un scale-up, les nœuds sont déployés automatiquement avec les dernières configurations et mises à jour de sécurité du système d’exploitation.When an AKS cluster is created or scaled up, the nodes are automatically deployed with the latest OS security updates and configurations.

La plateforme Azure applique automatiquement les correctifs de sécurité du système d’exploitation aux nœuds Linux chaque nuit.The Azure platform automatically applies OS security patches to Linux nodes on a nightly basis. Si une mise à jour de la sécurité du système d’exploitation Linux nécessite un redémarrage de l’hôte, ce redémarrage n’est pas effectué automatiquement.If a Linux OS security update requires a host reboot, that reboot is not automatically performed. Vous pouvez redémarrer les nœuds Linux manuellement ou appliquer une approche courante qui consiste à utiliser Kured, un démon de redémarrage open source pour Kubernetes.You can manually reboot the Linux nodes, or a common approach is to use Kured, an open-source reboot daemon for Kubernetes. Kured s’exécute comme un DaemonSet et analyse chaque nœud à la recherche d’un fichier indiquant qu’un redémarrage est nécessaire.Kured runs as a DaemonSet and monitors each node for the presence of a file indicating that a reboot is required. Les redémarrages sont gérés au sein du cluster à l’aide du même processus d’isolation et de drainage que celui appliqué pour la mise à niveau du cluster.Reboots are managed across the cluster using the same cordon and drain process as a cluster upgrade.

Pour les nœuds Windows Server, Windows Update n’exécute pas et n’applique pas automatiquement les dernières mises à jour.For Windows Server nodes, Windows Update does not automatically run and apply the latest updates. Suivez une planification régulière basée sur le cycle de mise à jour de Windows et votre propre processus de validation pour effectuer une mise à niveau sur le ou les pools de nœuds Windows Server dans votre cluster AKS.On a regular schedule around the Windows Update release cycle and your own validation process, you should perform an upgrade on the Windows Server node pool(s) in your AKS cluster. Ce processus de mise à niveau crée des nœuds qui exécutent la dernière image et les derniers correctifs de Windows Server, puis supprime les anciens nœuds.This upgrade process creates nodes that run the latest Windows Server image and patches, then removes the older nodes. Pour plus d’informations sur ce processus, consultez Mettre à niveau un pool de nœuds dans AKS.For more information on this process, see Upgrade a node pool in AKS.

Les nœuds sont déployés sur un sous-réseau de réseau virtuel privé, sans aucune adresse IP publique affectée.Nodes are deployed into a private virtual network subnet, with no public IP addresses assigned. Pour des raisons de gestion et de résolution des problèmes, SSH est activé par défaut.For troubleshooting and management purposes, SSH is enabled by default. Cet accès SSH n’est disponible qu’au moyen de l’adresse IP interne.This SSH access is only available using the internal IP address.

Pour fournir le stockage, les nœuds utilisent Azure Disques managés.To provide storage, the nodes use Azure Managed Disks. Pour la plupart des tailles de nœud de machine virtuelle, il s’agit de disques Premium assortis de disques SSD hautes performances.For most VM node sizes, these are Premium disks backed by high-performance SSDs. Les données stockées sur les disques managés sont automatiquement chiffrées au repos au sein de la plateforme Azure.The data stored on managed disks is automatically encrypted at rest within the Azure platform. Pour améliorer la redondance, ces disques sont également répliqués de manière sécurisée au sein du centre de données Azure.To improve redundancy, these disks are also securely replicated within the Azure datacenter.

Les environnements Kubernetes, dans AKS ou ailleurs, ne sont pas encore totalement sûrs pour une utilisation multi-locataire hostile.Kubernetes environments, in AKS or elsewhere, currently aren't completely safe for hostile multi-tenant usage. Des fonctionnalités de sécurité supplémentaires comme des stratégies de sécurité Pod, ainsi qu’un contrôle d’accès en fonction du rôle Kubernetes (RBAC Kubernetes) plus détaillé pour les nœuds rendent les attaques plus difficiles.Additional security features like Pod Security Policies, or more fine-grained Kubernetes role-based access control (Kubernetes RBAC) for nodes, make exploits more difficult. Mais lors de l’exécution de charges de travail multi-locataires hostiles, seul un hyperviseur garantira véritablement la sécurité.However, for true security when running hostile multi-tenant workloads, a hypervisor is the only level of security that you should trust. Le domaine de sécurité de Kubernetes devient le cluster, et non un nœud individuel.The security domain for Kubernetes becomes the entire cluster, not an individual node. Pour ces types de charges de travail multi-locataires hostiles, vous devez utiliser des clusters physiquement isolés.For these types of hostile multi-tenant workloads, you should use physically isolated clusters. Pour plus d’informations sur les méthodes d’isolation des charges de travail, consultez Meilleures pratiques relatives à l’isolation de clusters dans AKS.For more information on ways to isolate workloads, see Best practices for cluster isolation in AKS.

Isolation du calculCompute isolation

Pour des raisons de conformité ou d’exigences réglementaires, certaines charges de travail peuvent nécessiter un niveau d’isolation élevé par rapport aux autres charges de travail client.Certain workloads may require a high degree of isolation from other customer workloads due to compliance or regulatory requirements. Pour ces charges de travail, Azure fournit des machines virtuelles isolées, qui peuvent être utilisées en tant que nœuds d’agent dans un cluster AKS.For these workloads, Azure provides isolated virtual machines, which can be used as the agent nodes in an AKS cluster. Ces machines virtuelles sont isolées dans un type de matériel spécifique et dédiées à un client unique.These isolated virtual machines are isolated to a specific hardware type and dedicated to a single customer.

Pour utiliser ces machines virtuelles isolées avec un cluster AKS, sélectionnez l’une des tailles de machines virtuelles isolées répertoriées ici comme taille de nœud lors de la création d’un cluster AKS ou de l’ajout d’un pool de nœuds.To use these isolated virtual machines with an AKS cluster, select one of the isolated virtual machines sizes listed here as the Node size when creating an AKS cluster or adding a node pool.

Mise à niveau des clustersCluster upgrades

Pour des raisons de conformité et de sécurité, ou pour que soient utilisées les dernières fonctionnalités, Azure fournit des outils pour orchestrer la mise à niveau d’un cluster et de composants AKS.For security and compliance, or to use the latest features, Azure provides tools to orchestrate the upgrade of an AKS cluster and components. Cette orchestration de la mise à niveau inclut les composants maîtres et agents Kubernetes.This upgrade orchestration includes both the Kubernetes master and agent components. Vous pouvez afficher la liste des versions Kubernetes disponibles pour votre cluster AKS.You can view a list of available Kubernetes versions for your AKS cluster. Pour démarrer le processus de mise à niveau, vous spécifiez une de ces versions disponibles.To start the upgrade process, you specify one of these available versions. Ensuite, Azure isole et draine de manière sécurisée chaque nœud AKS et effectue la mise à niveau.Azure then safely cordons and drains each AKS node and performs the upgrade.

Isolation et drainageCordon and drain

Pendant le processus de mise à niveau, les nœuds AKS sont chacun isolés du cluster afin que de nouveaux pods ne soient pas planifiés sur ces nœuds.During the upgrade process, AKS nodes are individually cordoned from the cluster so new pods aren't scheduled on them. Les nœuds sont ensuite drainés et mis à niveau comme suit :The nodes are then drained and upgraded as follows:

  • Un nouveau nœud est déployé dans le pool de nœuds.A new node is deployed into the node pool. Ce nœud exécute la dernière image et les derniers correctifs du système d’exploitation.This node runs the latest OS image and patches.
  • Un des nœuds existants est identifié pour être mis à niveau.One of the existing nodes is identified for upgrade. Les pods sur ce nœud sont arrêtés normalement et planifiés sur les autres nœuds du pool de nœuds.Pods on this node are gracefully terminated and scheduled on the other nodes in the node pool.
  • Ce nœud existant est supprimé du cluster AKS.This existing node is deleted from the AKS cluster.
  • Le nœud suivant dans le cluster est isolé et drainé au moyen du même processus jusqu’à ce que tous les nœuds soient remplacés dans le cadre du processus de mise à niveau.The next node in the cluster is cordoned and drained using the same process until all nodes are successfully replaced as part of the upgrade process.

Pour plus d’informations, consultez Mettre à niveau un cluster AKS.For more information, see Upgrade an AKS cluster.

Sécurité du réseauNetwork security

Pour la connectivité et la sécurité avec les réseaux locaux, vous pouvez déployer votre cluster AKS sur des sous-réseaux de réseau virtuel Azure existants.For connectivity and security with on-premises networks, you can deploy your AKS cluster into existing Azure virtual network subnets. Ces réseaux virtuels peuvent avoir une connexion Express Route ou VPN de site à site Azure à votre réseau local.These virtual networks may have an Azure Site-to-Site VPN or Express Route connection back to your on-premises network. Des contrôleurs d’entrée Kubernetes peuvent être définis avec des adresses IP privées internes afin que les services ne soient accessibles que via cette connexion réseau interne.Kubernetes ingress controllers can be defined with private, internal IP addresses so services are only accessible over this internal network connection.

Groupes de sécurité réseau AzureAzure network security groups

Pour filtrer le flux du trafic dans les réseaux virtuels, Azure utilise des règles de groupe de sécurité réseau.To filter the flow of traffic in virtual networks, Azure uses network security group rules. Ces règles définissent les plages d’adresses IP source et de destination, les ports et les protocoles qui se voient autoriser ou refuser l’accès aux ressources.These rules define the source and destination IP ranges, ports, and protocols that are allowed or denied access to resources. Des règles par défaut sont créées pour autoriser le trafic TLS vers le serveur d’API Kubernetes.Default rules are created to allow TLS traffic to the Kubernetes API server. Quand vous créez des services avec des équilibreurs de charge, des mappages de ports ou des routes d’entrée, AKS modifie automatiquement le groupe de sécurité réseau afin que le trafic transite de manière appropriée.As you create services with load balancers, port mappings, or ingress routes, AKS automatically modifies the network security group for traffic to flow appropriately.

Dans les cas où vous fournissez votre propre sous-réseau pour votre cluster AKS et que vous souhaitez modifier le flux du trafic, ne modifiez pas le groupe de sécurité réseau de niveau sous-réseau géré par AKS.In cases where you provide your own subnet for your AKS cluster and you wish to modify the flow of traffic, do not modify the subnet-level network security group managed by AKS. Vous pouvez créer des groupes de sécurité réseau de niveau sous-réseau supplémentaires pour modifier le flux du trafic, à condition qu’ils n’interfèrent pas avec le trafic nécessaire à la gestion du cluster, par exemple l’accès à l’équilibreur de charge, la communication avec le plan de contrôle et la sortie.You may create additional subnet-level network security groups to modify the flow of traffic as long as they do not interfere with traffic needed for managing the cluster, such as load balancer access, communication with the control plane, and egress.

Stratégie de réseau KubernetesKubernetes network policy

Pour limiter le trafic réseau entre les pods de votre cluster, AKS propose la prise en charge de stratégies de réseau Kubernetes.To limit network traffic between pods in your cluster, AKS offers support for Kubernetes network policies. Les stratégies de réseau vous permettent de choisir d’autoriser ou de refuser des chemins d’accès réseau spécifiques au sein du cluster en fonction des espaces de noms et des sélecteurs d’étiquettes.With network policies, you can choose to allow or deny specific network paths within the cluster based on namespaces and label selectors.

Secrets KubernetesKubernetes Secrets

Un secret Kubernetes permet d’injecter des données sensibles dans des pods, telles que les clés ou les informations d’identification d’accès.A Kubernetes Secret is used to inject sensitive data into pods, such as access credentials or keys. Tout d’abord, vous créez un secret à l’aide de l’API Kubernetes.You first create a Secret using the Kubernetes API. Quand vous définissez votre pod ou déploiement, un secret spécifique peut être demandé.When you define your pod or deployment, a specific Secret can be requested. Les secrets sont fournis uniquement aux nœuds dont un pod planifié a besoin d’un secret. En outre, le secret est stocké dans un volume tmpfs, au lieu d’être écrit sur le disque.Secrets are only provided to nodes that have a scheduled pod that requires it, and the Secret is stored in tmpfs, not written to disk. Quand le dernier pod sur un nœud qui requiert un secret est supprimé, ce dernier est supprimé du volume tmpfs du nœud.When the last pod on a node that requires a Secret is deleted, the Secret is deleted from the node's tmpfs. Les secrets sont stockés dans un espace de noms donné et ne sont accessibles qu’aux pods se trouvant dans cet espace de noms.Secrets are stored within a given namespace and can only be accessed by pods within the same namespace.

L’utilisation de secrets réduit la quantité d’informations sensibles définies dans le manifeste YAML des pods ou services.The use of Secrets reduces the sensitive information that is defined in the pod or service YAML manifest. Au lieu de cela, vous demandez le secret stocké sur le serveur d’API Kubernetes dans le cadre de votre manifeste YAML.Instead, you request the Secret stored in Kubernetes API Server as part of your YAML manifest. Ainsi, l’accès au secret n’est accordé qu’au pod concerné.This approach only provides the specific pod access to the Secret. Remarque : les fichiers manifeste secrets bruts contiennent les données secrètes au format base64 (consultez la documentation officielle pour plus d’informations).Please note: the raw secret manifest files contains the secret data in base64 format (see the official documentation for more details). Ce fichier doit donc être considéré comme des informations sensibles et ne doit jamais être validé dans le contrôle de code source.Therefore, this file should be treated as sensitive information, and never committed to source control.

Les secrets Kubernetes sont stockés dans etcd, un magasin de clés-valeurs distribué.Kubernetes secrets are stored in etcd, a distributed key-value store. Le magasin etcd est entièrement managé par AKS et les données sont chiffrées au repos sur la plateforme Azure.Etcd store is fully managed by AKS and data is encrypted at rest within the Azure platform.

Étapes suivantesNext steps

Pour vous familiariser avec la sécurisation de vos clusters AKS, consultez Mettre à niveau un cluster AKS.To get started with securing your AKS clusters, see Upgrade an AKS cluster.

Pour connaître les meilleures pratiques associées, voir Meilleures pratiques relatives aux mises à jour et à la sécurité du cluster dans AKS et Bonnes pratiques relatives à la sécurité de pod dans AKS.For associated best practices, see Best practices for cluster security and upgrades in AKS and Best practices for pod security in AKS.

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