Sécurité de l'exécution - Amazon EKS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Sécurité de l'exécution

La sécurité d'exécution fournit une protection active à vos conteneurs pendant leur fonctionnement. L'idée est de détecter et d' and/or empêcher toute activité malveillante de se produire à l'intérieur du conteneur. Cela peut être réalisé à l'aide d'un certain nombre de mécanismes du noyau Linux ou d'extensions de noyau intégrées à Kubernetes, tels que les fonctionnalités Linux, l'informatique sécurisée (seccomp) ou. AppArmor SELinux Il existe également des options telles qu'Amazon GuardDuty et des outils tiers qui peuvent aider à établir des bases de référence et à détecter les activités anormales en réduisant la configuration manuelle des mécanismes du noyau Linux.

Important

Kubernetes ne fournit actuellement aucun mécanisme natif pour le chargement de seccomp ou de profils sur AppArmor les nœuds. SELinux Ils doivent être chargés manuellement ou installés sur les nœuds lors de leur démarrage. Cela doit être fait avant de les référencer dans vos pods, car le planificateur ne sait pas quels nœuds ont des profils. Découvrez ci-dessous comment des outils tels que Security Profiles Operator peuvent aider à automatiser le provisionnement des profils sur les nœuds.

Contextes de sécurité et contrôles Kubernetes intégrés

De nombreux mécanismes de sécurité d'exécution Linux sont étroitement intégrés à Kubernetes et peuvent être configurés via des contextes de sécurité Kubernetes. L'une de ces options est le privileged drapeau, qui est false par défaut et, s'il est activé, équivaut essentiellement à root sur l'hôte. Il est presque toujours inapproprié d'activer le mode privilégié dans les charges de travail de production, mais il existe de nombreux autres contrôles qui peuvent fournir des privilèges plus précis aux conteneurs, le cas échéant.

Fonctionnalités de Linux

Les fonctionnalités de Linux vous permettent d'octroyer certaines fonctionnalités à un pod ou à un conteneur sans fournir toutes les capacités de l'utilisateur root. Les exemples incluent CAP_NET_ADMIN ce qui permet de configurer des interfaces réseau ou des pare-feuxCAP_SYS_TIME, ou qui permet de manipuler l'horloge du système.

Seccomp

Grâce à l'informatique sécurisée (seccomp), vous pouvez empêcher une application conteneurisée d'effectuer certains appels système vers le noyau du système d'exploitation hôte sous-jacent. Bien que le système d'exploitation Linux compte quelques centaines d'appels système, la plupart d'entre eux ne sont pas nécessaires pour exécuter des conteneurs. En limitant les appels système pouvant être effectués par un conteneur, vous pouvez réduire efficacement la surface d'attaque de votre application.

Seccomp fonctionne en interceptant les appels système et en n'autorisant que ceux qui ont été autorisés à passer. Docker possède un profil seccomp par défaut qui convient à la majorité des charges de travail générales, et d'autres environnements d'exécution de conteneurs tels que containerd fournissent des valeurs par défaut comparables. Vous pouvez configurer votre conteneur ou votre Pod pour utiliser le profil seccomp par défaut de l'environnement d'exécution du conteneur en ajoutant ce qui suit à la securityContext section de la spécification du Pod :

securityContext: seccompProfile: type: RuntimeDefault

À partir de la version 1.22 (en alpha, stable à partir de la version 1.27), ce qui précède RuntimeDefault peut être utilisé pour tous les pods d'un nœud en utilisant un seul drapeau kubelet,. --seccomp-default Ensuite, le profil spécifié dans n'securityContextest nécessaire que pour les autres profils.

Il est également possible de créer vos propres profils pour les choses qui nécessitent des privilèges supplémentaires. Cela peut être très fastidieux à effectuer manuellement, mais il existe des outils tels qu'Inspektor Gadget (également recommandé dans la section sur la sécurité du réseau pour générer des politiques réseau) et Security Profiles Operator qui permettent d'utiliser des outils tels que eBPF ou des journaux pour enregistrer les exigences de base en matière de privilèges sous forme de profils seccomp. L'opérateur de profils de sécurité permet en outre d'automatiser le déploiement des profils enregistrés sur les nœuds à l'usage des pods et des conteneurs.

AppArmor et SELinux

AppArmor et SELinux sont connus sous le nom de contrôle d'accès obligatoire ou systèmes MAC. Leur concept est similaire à celui de seccomp, mais avec des fonctionnalités différentes, permettant le contrôle APIs d'accès, par exemple, à des chemins de système de fichiers ou à des ports réseau spécifiques. Le support de ces outils dépend de la distribution Linux, avec Debian/Ubuntu prise en charge AppArmor et prise en charge de RHEL/CentOS/Bottlerocket/Amazon Linux 2023 SELinux. Consultez également la section sur la sécurité de l'infrastructure pour une discussion plus approfondie à ce sujet SELinux.

Les deux AppArmor SELinux sont intégrés à Kubernetes, mais à partir de Kubernetes 1.28, les AppArmor profils doivent être spécifiés via des annotations, tandis que les SELinux étiquettes peuvent être définies directement via le champ Options du SELinux contexte de sécurité.

Comme pour les profils seccomp, l'opérateur de profils de sécurité mentionné ci-dessus peut vous aider à déployer des profils sur les nœuds du cluster. (À l'avenir, le projet vise également à générer des profils pour AppArmor et SELinux comme il le fait pour seccomp.)

Recommandations

Utilisez Amazon GuardDuty pour surveiller le temps d'exécution et détecter les menaces qui pèsent sur vos environnements EKS

Si vous ne disposez pas actuellement d'une solution permettant de surveiller en permanence les temps d'exécution d'EKS, d'analyser les journaux d'audit d'EKS et de détecter les logiciels malveillants et autres activités suspectes, Amazon GuardDuty recommande vivement d'utiliser Amazon aux clients qui recherchent un moyen simple, rapide, sécurisé, évolutif et rentable en un clic de protéger leurs environnements AWS. Amazon GuardDuty est un service de surveillance de la sécurité qui analyse et traite les sources de données fondamentales, telles que les événements de CloudTrail gestion AWS, les journaux d' CloudTrail événements AWS, les journaux de flux VPC (provenant d'instances Amazon EC2), les journaux d'audit Kubernetes et les journaux DNS. Il inclut également la surveillance du temps d'exécution d'EKS. Il utilise des flux de renseignements sur les menaces constamment mis à jour, tels que des listes d'adresses IP et de domaines malveillants, et l'apprentissage automatique pour identifier les activités inattendues, potentiellement non autorisées et malveillantes au sein de votre environnement AWS. Cela peut inclure des problèmes tels que l'augmentation des privilèges, l'utilisation d'informations d'identification divulguées ou la communication avec des adresses IP ou des domaines malveillants, la présence de logiciels malveillants sur vos instances Amazon EC2 et les charges de travail des conteneurs EKS, ou la découverte d'une activité d'API suspecte. GuardDuty vous informe de l'état de votre environnement AWS en produisant des résultats de sécurité que vous pouvez consulter dans la GuardDuty console ou via Amazon EventBridge. GuardDuty vous permet également d'exporter vos résultats vers un compartiment Amazon Simple Storage Service (S3) et de les intégrer à d'autres services tels que AWS Security Hub et Detective.

Regardez cette conférence technique en ligne AWS intitulée « Détection améliorée des menaces pour Amazon EKS avec Amazon GuardDuty - AWS Online Tech Talks » pour découvrir comment activer ces fonctionnalités de sécurité EKS supplémentaires step-by-step en quelques minutes.

Facultatif : utilisez une solution tierce pour la surveillance du temps d'exécution

La création et la gestion des profils seccomp et Apparmor peuvent s'avérer difficiles si vous n'êtes pas familiarisé avec la sécurité Linux. Si vous n'avez pas le temps de devenir compétent, pensez à utiliser une solution commerciale tierce. Beaucoup d'entre eux ont dépassé les profils statiques tels qu'Apparmor et seccomp et ont commencé à utiliser l'apprentissage automatique pour bloquer ou alerter en cas d'activité suspecte. Quelques-unes de ces solutions se trouvent ci-dessous dans la section des outils. Des options supplémentaires sont disponibles sur AWS Marketplace for Containers.

Tenez compte des capacités de add/dropping Linux avant d'écrire des politiques seccomp

Les fonctionnalités impliquent diverses vérifications dans les fonctions du noyau accessibles par des appels système. Si la vérification échoue, l'appel système renvoie généralement une erreur. La vérification peut être effectuée soit juste au début d'un appel système spécifique, soit plus profondément dans le noyau, dans des zones pouvant être accessibles via plusieurs appels système différents (comme l'écriture dans un fichier privilégié spécifique). Seccomp, quant à lui, est un filtre syscall qui est appliqué à tous les appels système avant leur exécution. Un processus peut configurer un filtre qui lui permet de révoquer son droit d'exécuter certains appels système ou des arguments spécifiques pour certains appels système.

Avant d'utiliser seccomp, déterminez si les fonctionnalités de adding/removing Linux vous offrent le contrôle dont vous avez besoin. Voir Configuration des capacités pour les conteneurs pour plus d'informations.

Découvrez si vous pouvez atteindre vos objectifs en utilisant les politiques de sécurité des pods (PSPs)

Les politiques de sécurité des modules offrent de nombreuses manières d'améliorer votre posture de sécurité sans introduire de complexité excessive. Explorez les options disponibles PSPs avant de vous lancer dans la création de profils Seccomp et Apparmor.

Avertissement

À partir de Kubernetes 1.25, PSPs ils ont été supprimés et remplacés par le contrôleur d'admission Pod Security. Les alternatives tierces qui existent incluent OPA/Gatekeeper Kyverno. Une collection de contraintes et de modèles de contraintes pour la mise en œuvre des politiques que l'on trouve couramment dans le référentiel de la bibliothèque Gatekeeper PSPs peut être extraite du référentiel de la bibliothèque Gatekeeper sur. GitHub Et de nombreuses solutions de remplacement se PSPs trouvent dans la bibliothèque des politiques de Kyverno, y compris la collection complète des normes de sécurité des pods.

Outils et ressources