Pour ce mois d'octobre, nous vous avons préparé un programme que nous espérons incroyable :
- La sécurité Kube à tous les étages par Hervé Fontbonne, consultant Cloud et DevOps (Les Filles & Les Garçons de la Tech)
- Des superpouvoirs dans kube par Matthis Holleville, Principal Cloud Engineer (Agicap) et mainteneur du projet k8sgpt.ai
Ces présentations seront suivies d'un rapide jeu et du traditionnel apéro !
Merci encore une fois à FGTech de nous accueillir pour cet événement
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2022/06/tensorflow-lite-for-microcontrollers-tflm-recent-developments-a-presentation-from-bdti-and-google/
David Davis, Senior Embedded Software Engineer, and John Withers, Automation and Systems Engineer, both of BDTI, present the “TensorFlow Lite for Microcontrollers (TFLM): Recent Developments” tutorial at the May 2022 Embedded Vision Summit.
TensorFlow Lite Micro (TFLM) is a generic inference framework designed to run TensorFlow models on digital signal processors (DSPs), microcontrollers and other embedded targets with small memory footprints and very low power usage. TFLM aims to be easily portable to various embedded targets from those running an RTOS to bare-metal code. TFLM leverages the model optimization tools from the TensorFlow ecosystem and has additional embedded-specific optimizations to reduce the memory footprint. TFLM also integrates with a number of community contributed optimized hardware-specific kernel implementations.
In this talk, Davis and Withers review collaboration between BDTI and Google over the last year, including porting nearly two dozen operators from TensorFlow Lite to TFLM, creation of a separate Arduino examples repository, improved testing and documentation of both Arduino and Colab training examples and transitioning TFLM’s open-source CI framework to use GitHub Actions.
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用Motonori Shindo
Cluster API は Kubernetes の宣言的APIとリソースの管理機能を活かし、Kubernetes環境のライフサイクル管理を行うもので、Kubernetesコミュニティで仕様の策定と開発が進められています。
これまでもKubernetes環境の構築を支援するツールはいくつかありましたが、Cluster APIはコミュニティからの大きな支持を得ており、Cluster APIのエコシステムが広がりつつあります。
本セッションでは Cluster API の概要と最新の動向、また、Cluster APIを利用した大規模マルチクラウド環境への適用などをデモを交えながら解説を行います。
本資料はCloud Operator Days Tokyo 2020登壇時の資料です。
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2022/06/tensorflow-lite-for-microcontrollers-tflm-recent-developments-a-presentation-from-bdti-and-google/
David Davis, Senior Embedded Software Engineer, and John Withers, Automation and Systems Engineer, both of BDTI, present the “TensorFlow Lite for Microcontrollers (TFLM): Recent Developments” tutorial at the May 2022 Embedded Vision Summit.
TensorFlow Lite Micro (TFLM) is a generic inference framework designed to run TensorFlow models on digital signal processors (DSPs), microcontrollers and other embedded targets with small memory footprints and very low power usage. TFLM aims to be easily portable to various embedded targets from those running an RTOS to bare-metal code. TFLM leverages the model optimization tools from the TensorFlow ecosystem and has additional embedded-specific optimizations to reduce the memory footprint. TFLM also integrates with a number of community contributed optimized hardware-specific kernel implementations.
In this talk, Davis and Withers review collaboration between BDTI and Google over the last year, including porting nearly two dozen operators from TensorFlow Lite to TFLM, creation of a separate Arduino examples repository, improved testing and documentation of both Arduino and Colab training examples and transitioning TFLM’s open-source CI framework to use GitHub Actions.
Cluster API によるKubernetes環境のライフサイクル管理とマルチクラウド環境での適用Motonori Shindo
Cluster API は Kubernetes の宣言的APIとリソースの管理機能を活かし、Kubernetes環境のライフサイクル管理を行うもので、Kubernetesコミュニティで仕様の策定と開発が進められています。
これまでもKubernetes環境の構築を支援するツールはいくつかありましたが、Cluster APIはコミュニティからの大きな支持を得ており、Cluster APIのエコシステムが広がりつつあります。
本セッションでは Cluster API の概要と最新の動向、また、Cluster APIを利用した大規模マルチクラウド環境への適用などをデモを交えながら解説を行います。
本資料はCloud Operator Days Tokyo 2020登壇時の資料です。
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
Rootless Containers means running the container runtimes (e.g. runc, containerd, and kubelet) as well as the containers without the host root privileges. The most significant advantage of Rootless Containers is that it can mitigate potential container-breakout vulnerability of the runtimes, but it is also useful for isolating multi-user environments on HPC hosts. This talk will contain the introduction to rootless containers and deep-dive topics about the recent updates such as Seccomp User Notification. The main focus will be on containerd (CNCF Graduated Project) and its consumer projects including Kubernetes and Docker/Moby, but topics about other runtimes will be discussed as well.
https://sched.co/fGWc
Kubecon 2023 EU - KServe - The State and Future of Cloud-Native Model ServingTheofilos Papapanagiotou
KServe is a cloud-native open source project for serving production ML models built on CNCF projects like Knative and Istio. In this talk, we’ll update you on KServe’s progress towards 1.0, the latest developments, such as ModelMesh and InferenceGraph, and its future roadmap. We’ll discuss the Kubernetes design patterns used in KServe to achieve the core ML inference capability, as well as the design philosophy behind KServe and how it integrates the CNCF ecosystem so you can walk up and down the stack to use features to meet your production model deployment requirements. The well-designed InferenceService interface encapsulates the complexity of networking, lifecycle, server configurations and allows you to easily add serverless capabilities to model servers like TensorFlow Serving, TorchServe, and Triton on CPU/GPU. You can also turn on full service mesh mode to secure your InferenceServices. We’ll walk through different scenarios to show how you can quickly start with KServe and evolve to a production-ready setup with scalability, security, observability, and auto-scaling acceleration using CNCF projects like Knative, Istio, SPIFFE/SPIRE, OpenTelemetry, and Fluid.
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Christophe Furmaniak
Que vous ayez choisi de développer votre application en tant qu'ensemble de petits services ou sur un modèle plus classique, vous avez certainement à gérer des dépendances à des services HTTP.
A moins de faire le choix de ne pas vous soucier de la disponibilité de vos dépendances (dans ce cas vous n’avez rien à faire ici), vous aurez à faire face à des problématiques telles que loadbalancing et gestion des erreurs.
En s’appuyant sur l’exemple d’une application distribuée très simple, nous parcourrons ensemble les différentes implémentations de solutions, les contraintes et bénéfices associés.
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
Rootless Containers means running the container runtimes (e.g. runc, containerd, and kubelet) as well as the containers without the host root privileges. The most significant advantage of Rootless Containers is that it can mitigate potential container-breakout vulnerability of the runtimes, but it is also useful for isolating multi-user environments on HPC hosts. This talk will contain the introduction to rootless containers and deep-dive topics about the recent updates such as Seccomp User Notification. The main focus will be on containerd (CNCF Graduated Project) and its consumer projects including Kubernetes and Docker/Moby, but topics about other runtimes will be discussed as well.
https://sched.co/fGWc
Kubecon 2023 EU - KServe - The State and Future of Cloud-Native Model ServingTheofilos Papapanagiotou
KServe is a cloud-native open source project for serving production ML models built on CNCF projects like Knative and Istio. In this talk, we’ll update you on KServe’s progress towards 1.0, the latest developments, such as ModelMesh and InferenceGraph, and its future roadmap. We’ll discuss the Kubernetes design patterns used in KServe to achieve the core ML inference capability, as well as the design philosophy behind KServe and how it integrates the CNCF ecosystem so you can walk up and down the stack to use features to meet your production model deployment requirements. The well-designed InferenceService interface encapsulates the complexity of networking, lifecycle, server configurations and allows you to easily add serverless capabilities to model servers like TensorFlow Serving, TorchServe, and Triton on CPU/GPU. You can also turn on full service mesh mode to secure your InferenceServices. We’ll walk through different scenarios to show how you can quickly start with KServe and evolve to a production-ready setup with scalability, security, observability, and auto-scaling acceleration using CNCF projects like Knative, Istio, SPIFFE/SPIRE, OpenTelemetry, and Fluid.
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Christophe Furmaniak
Que vous ayez choisi de développer votre application en tant qu'ensemble de petits services ou sur un modèle plus classique, vous avez certainement à gérer des dépendances à des services HTTP.
A moins de faire le choix de ne pas vous soucier de la disponibilité de vos dépendances (dans ce cas vous n’avez rien à faire ici), vous aurez à faire face à des problématiques telles que loadbalancing et gestion des erreurs.
En s’appuyant sur l’exemple d’une application distribuée très simple, nous parcourrons ensemble les différentes implémentations de solutions, les contraintes et bénéfices associés.
FAN, Fully Automated Nagios a été présenté sur le salon "Solution Linux 2009" dans une conférence officielle. Voici le support qui a servi pour cette présentation.
Kubernetes est-il soluble dans la sécurité ? Meetup GenèveNet4All
Le 10 décembre 2019, l’équipe Net4All a eu le plaisir d’organiser à Genève (Impact Hub) : un Meetup nommé : Kubernetes est-il soluble dans la sécurité ?
Alphorm.com Formation hak5 - LAN Turtle et Packet SquirrelAlphorm
Cette formation rentre dans la série de pentest Hardware qui a vu le jour sur Alphorm.
Dans cette serie de mini formation, nous avons pu préalablement découvrir le Wifi Pineaple qui représente un exellent outil de pentest des réseaux sans fils et de Red Teaming.
Dans cette formation, nous allons pouvoir découvrir deux autres redoutables pentest hardwares qui sont le Lan Turtle et le Packet Squirrel. Orienté réseaux informatiques, ces outils sont extrêmement redoutables et possèdent plusieurs fonctionnalités qui leurs permettent d’effectuer un bon nombre d’actions mais aussi d’automatiser plusieurs tâches tel que :
Reconnaissance du réseau
Persistance dans le réseau
Exfiltration de données
Tunneling
Spoofing
Accès VPN
Et bien d’autres …
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm
"Savoir attaquer pour mieux se défendre", telle est la maxime de cette formation Hacking et Sécurité 2020. Partir d’une approche offensive des pratiques et des méthodologies utilisées par les hackers dans le cadre d’intrusions sur les réseaux et les applications. La présente formation hacking et sécurité 2020 se compose de 4 parties :
• Méthodologies de Pentest, Reconnaissance Passive et Active
• Les techniques d'OSINT - L'essentiel
• Attaques Réseaux, Physiques et Clients
• Attaques AD et Web
Dans cette quatrième partie, nous découvrirons ensemble les principales techniques d’attaques dans les environnements active directory et applications web qui nous permettront d’acquérir les bases pour des formations plus avancées.
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...AZUG FR
Le développement exponentiel des solutions cloud ainsi que les révélations de Snowden sur les pratiques de la NSA positionnent la sécurité au cœur des préoccupations des entreprises.
Active Directory est la solution d’annuaire la plus déployée dans les entreprises.
De plus en plus d’applications cloud (Microsoft ou non) s’appuient sur Azure Active Directory.
Maîtriser et sécuriser ses annuaires Active Directory et Azure Active Directory deviennent donc des enjeux stratégiques.
Lors de cette session, nous vous proposons de découvrir :
- Le top 5 des attaques les plus connues autour des technologies Active Directory / Azure Active Directory (NTLM Pass The Hash, Golden Ticket…) avec des démonstrations concrètes dans notre laboratoire.
- Les contres mesures à déployer pour sécuriser ses annuaires Active Directory et Azure Active Directory
- Les principaux outils pour détecter ou se prémunir contre ces attaques comme Microsoft LAPS, Microsoft Advanced Threat Analytics, Microsoft Azure Active Directory Identity Protection et Microsoft Azure Active Directory Privileged Identity Management.
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Trésor-Dux LEBANDA
De nos jours l’internet est devenue une source d’informations (business, réseaux sociaux…), avec des systèmes d’informations qui sont de plus en plus ouverts sur Internet. Ceux-ci présentent quelques failles de sécurité dont la mise en place des mesures sécuritaires devient une condition nécessaire, mais pas suffisante pour se protéger des risques présents sur la toile internet.
Comment interconnecter des réseaux ?
Comment permettre à des réseaux d’échanger des informations et limiter les risques liés à ces échanges ?
Nous avons mis en place un laboratoire de sécurité qui permet de faire des tests et détections d’intrusions. Le travail sait fait en deux parties.
D’abord la mise en place du laboratoire ensuite l’interconnexion avec des sites distants.
Vol WAX 2024 - la chaîne de valeur propulsée par le Platform Engineering chez...Frederic Leger
Slides de notre talk sur le platform engineering chez AirCorsica
On y voit comment l'excellence opérationnelle a progressé chez AirCorsica au bout d'une refonte de 2 ans soutenue par le platform engineering.
Slides de notre meetup de novembre 2022
- devcontainers & github codespaces
- docusaurus
Encore merci à the camp pour l'organisation
Liens annexes :
- https://docusaurus.io/
- https://youtu.be/Nq0cERANO7g
- https://github.com/webofmars/gophers-api/tree/feat-add-devcontainer
Retours d'expériences sur la conception et déploiement d'une architecture complétement multi-cloud pour la solution Omnicloud d'Astrachain (accompagnement par webofmars)
Slides présentées lors du devops DDAY du 18/11/2021
6. Qui suis-je ?
Hervé FONTBONNE
Co-fondateur: Les filles et les garçons de la Tech
● Consultant Cloud et DevOps
● Formateur
@HerveFONTBONNE
herve@fgtech.fr
20. Network Policies : Démo
Mise en place pas à pas
Tout interdire ou presque
Règles adaptées
Outil: Inspecktor Gadget
21. API Server - Authentification Tierce
Pas de gestion de (vrais) utilisateurs.
Les applications et les démons utilisent des ServiceAccounts.
Utilisation d’une solution IAM avec une authentification tierce de type OIDC + RBAC
22. RBAC - Roles Based Access Control
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: demo
rules:
- verbs: ["get","watch","list"]
apiGroups: [""]
resources: ["pods"]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: demo
subjects:
- kind: User
name: alice
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
apiGroup: rbac.authorization.k8s.io
name: pod-reader
Alice a le droit de lister les conteneurs dans le namespace demo, mais pas de les supprimer ni les créer
Outils: KubiScan, krane
25. Kyverno : Démo
2 Cluster Policies :
- Pour autoriser uniquement certains Registries d’image
- Interdire les images non taguées ou en latest
Outil: Policy Reporter (Interface graphique à côté de Kyverno)
Comportement en fonction de la validationFailureAction : audit et enforce
30. Prévention : SecurityContext
Permet de restreindre le contexte d’exécution des Pods et des containers.
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 3000
capabilities:
drop:
- ALL
add:
- NET_ADMIN
31. Détection - Falco
- rule: Detect bash in a container
desc: You shouldn't have a shell run in a container
condition: container.id != host and proc.name = bash
output: Bash ran inside a container (user=%user.name command=%proc.cmdline %container.info)
priority: INFO
36. Réduire l'empreinte de vos images
● Supprimer les packages inutiles à l'exécution (chmod, chown, cron, package manager…)
● Restreindre : User Non Root
● Auditer les permissions des fichiers et dossiers
RUN groupadd -g 999 appgroup &&
useradd -r -u 999 -g appgroup appuser
USER appuser
“Un processus dans un container n’est pas (très) différent d’un autre processus Linux de l’hôte”
37. Scan de vulnérabilité des images
$> podman run aquasec/trivy image python:3.9.18-alpine3.18
39. Le code : Dependency Check
$> podman run owasp/dependency-check:$DC_VERSION
CVE basés sur la National Vulnerability Database (NVD)
40. Observabilité
● Surveiller ce qu’il faut (ni trop, ni pas assez)
○ Logs
○ Métriques
○ Tracing
● Alerter
● Automatiser la réponse à certains évènements
“La casserole qu'on surveille ne déborde jamais.” Sagesse indienne
41. PRA: plan de reprise d’activité
Anticiper les risques et limiter les impacts liés à la survenance d’un sinistre:
● Backup / automatisation
● Procédures rédigées et testées !
“Ne rien planifier, c'est planifier son échec”
43. Fonctionnalités
➢ IA: Apprentissage comportement Flux / Process / File System
➢ 3 modes: Discover / Monitor / Protect
➢ Cartographie des flux
➢ Scan CVE Node / Image
➢ Compliance: PCI-DSS / GDPR / HIPAA / NIST
➢ Sigstore/Cosign Verifiers
➢ Admission Controller (basique)
➢ Réponse automatisable: Quarantaine / Notification
➢ WAF / Data Loss Prevention (basique - Avancé = payant)
Outil gratuit qui centralise les sujets sécurité Kubernetes
➢ Utilisation de RAM:
4 GB de base
➢ Beaucoup de Logs… à gérer
44. Démo Neuvector
➢ Apprentissage des comportements normaux : Réseau et processus
➢ Gestion des règles: n’autoriser que le flux vers backend
➢ Création d’une mise en quarantaine automatique
➢ Visualisation du diagramme des flux
➢ Gestion de la quarantaine
Avant de commencer, savez vous que selon un sondage redhat de 2022 :
93% des sondés ont eu au moins un incident de sécurité sur leurs environnements kubernetes les 12 dernier mois
78% ont maintenant une initiative DevSecOps en cours
Sur ce constat là, on va essayer de voir ce qu’il faut ou ne faut pas faire quand on a un cluster kubernetes en production en balayant les différentes couches
Principes globales de la sécu :
Diminuer la surface d’attaque
(limiter les services exposés, les outils disponibles)
limiter la taille
RBAC / moindre privilèges
gerer les droits finement
limiter les droits et les utilités
ne pas avoir un super compte admin qui a le droit de tout faire
Mise à jour
(avoir des logiciels qui fonctionnent c’est bien, les mettre à jour c’est indispensable)
Outils contrôlés et maîtrisés (communauté, patch de sécurité, projet vivant, etc …)
“tout le monde doit être formé à penser “sécurité” “
on va attaquer la couche réseau.
on va s’interesserer au concept de “diviser pour mieux regner”
et voir a quel point on peut appliquer cet adage à la couche réseau.
Architecture kube plutôt que “kubernetes” avec control plane et data plane segmentée.
Utilisation de vlans pour une segmentation de niveau 2.
modele OSI : couche de liaison
Segmentation en zone firewall distincte (ou en ACL), avec des règles bien précises.
Règle de flux limitant les communications/interaction entre les deux zones logiques et entre chaque zone et l’extérieur (connexion limitée entre les nœuds eux-même, pas de connexion ssh traverse etc …)
limiter les interactions / controler les interactions externes
on monte d’un étage
et on va voir 4 principes :
node : la VM
Voyons maintenant ce que l’on entend par réduire la surface d’attaque d’un noeud
Utiliser des distributions linux recommandées et/ou maîtrisées, de préférence des distributions minimalistes.
Désactiver toutes applications, services, librairies non utilisées.
Limiter le nombre de comptes sur le nœud, supprimer les utilisateurs inutiles, pas d’utilisateurs avec le UID 0. (pour éviter les élévations de priv par usurpation de UID)
Gestion du sudoer.
Voyons maintenant ce que l’on entend par réduire la surface d’attaque d’un noeud
Utiliser des distributions linux recommandées et/ou maîtrisées, de préférence des distributions minimalistes.
Désactiver toutes applications, services, librairies non utilisées.
Limiter le nombre de comptes sur le nœud, supprimer les utilisateurs inutiles, pas d’utilisateurs avec le UID 0. (pour éviter les élévations de priv par usurpation de UID)
Gestion du sudoer.
Voyons maintenant ce que l’on entend par réduire la surface d’attaque d’un noeud
Utiliser des distributions linux recommandées et/ou maîtrisées, de préférence des distributions minimalistes.
Désactiver toutes applications, services, librairies non utilisées.
Limiter le nombre de comptes sur le nœud, supprimer les utilisateurs inutiles, pas d’utilisateurs avec le UID 0. (pour éviter les élévations de priv par usurpation de UID)
Gestion du sudoer.
Controle d’acces et limitations des appels systèmes vers le noyau linux
AppArmor / SELinux ===> système MAC (Mandatory Access Control)
AppArmor est un bouclier permettant de limiter les accès à des ressources (comme le réseau)
basé sur des profiles (par exemple ce que firefox pourra faire et ce qu’il ne pourra pas faire)
SELinux (Security-Enhanced Linux) conçue par la NSA.
SELinux s'appuie sur un ensemble de règles (policy) pour autoriser ou interdire une opération
le + user friendly
Seccomp : “secure computing mode”
limite les appels systèmes vers le noyau linux (read, write, exec, getpid, …)
Utiliser et mettre en place un benchmark comme CIS. (-> a tester régulièrement)
(document gratuit qui liste les bonnes pratiques d’installation et les moyens de remédier aux anomalies détectés) les Cloud provider l’ont adaptés à leurs plateforme (AKS, EKS, …)
le produit kubebench, analysera votre cluster pour vous. Il ne restera plus qu’à vous référencer au rapport de CIS, pour corriger
Établir une stratégie de mise à jour du nœud et des paquets critiques
mise à jour quotidienne, mise à jour des paquets de sécurité en priorité,
mise en place d’un rollback automatique et d’une traçabilité des paquets mis à jour.
(idéalement, les patchs de sécu a mettre à jour tout les jours, mais c’est difficile pour ne pas tout casser)
c’est important de backuper très régulièrement la base ECTD
-> avoir une stratégies de versionner les backups
Avoir une base régulièrement backupée
regarder RKE2 ETCD snapshot
Transition : on a vu le reseau, les machines, on va rentrer dans le vif du sujet.
un cluster c’est l’ensemble des parties logiques du control plane et des data plane.
en bref, kuberntes pour être rapide.
Par défaut, dans kubernetes, tous les pods peuvent parler avec tout le monde
Les “network policies”, ce sont les règles réseaux qui décrivent les interactions réseaux possibles au sein de votre cluster.
Il y a deux termes à connaître quand on parle de réseau :
ingress (flux entrant)
egress (flux sortant)
Avec kube, tout est as code. voyons un exemple de manifest.
conseil: privilégier whitelist plutôt que la blacklist. j’interdis tout, et j’autorise (minim privilège) -> attention à core-dns
et pendant que l’on parle du réseau :
du TLS partout: tout ce qui est chiffré est plus dure à se faire voler et çà complique aussi le travail du man in the middle
Vous avez peur de devoir monter des sidecars avec des certificats entre chaque pods et de gérer le renouvellement sans avoir une durée de vie infini ?
mTLS ! (aka. Istio, Cilium, …)
évidemment, vous avez pensé à protéger l'accès à votre kube-server-api :
plage IP, interdire les appel anonyme et forcer le HTTPS
Mais une gros défaut de kube repose par son système d’authentification par défaut pas fait pour les humains (Kubernetes does not have objects which represent normal user accounts. ) :
distribution de certificat (qui ne sont pas limité dans le temps, qui pourrait se partager
Ne pas distribuer de certif (pas le root)
si vous n’avez pas identity provider compatible OIDC (un vieille AD…), vous pouvez utiliser :
pinniped : outil simple pour sécuriser le moyen de se logger sur un cluster kubernetes
keycloak : provides user federation, strong authentication, user management, fine-grained authorization, and more
Apres l’authentification, la gestion des roles avec le RBAC
permet de Donner des droits fins
par types de ressource
par types d'accès
et De les affecter à des groupes
Appliquez le principe de moindre privilège
conseil : A mettre en place dès le début du cycles de développement. Plus difficile à appliquer à posteriori
Avant d’aller plus loin, attardons nous sur l’admision controller :
regardons ensemble le schema suivant
PodSecurityPolicy sont déprécié avec Kubernetes 1.21, et supprimé de Kubernetes 1.25. A la place de PodSecurityPolicy, vous pourrez appliquer des restrictions à vos pods avec :
Pod Security Admission
des plugins tierce, que vous déploierez et configurerez vous-même
Ce n’est pas comme les PodSecurityContext.
Quel est la diffence en un profil de securité et un context de sécurité ?
Security Contexts configure les pods et les conteneurs au runtime. Security contexts sont définis au niveau Pod et container dans le manifest du pod manifest.
Security profiles sont des mécanismes du control plane qui force un paramétrage spécifique du Security Context, ainsi que d'autres paramètres connexes en dehors du contexte de sécurité
Dans la famille des Webhook Admission controller on trouve Kyverno ou OPA Gatekeeper
kiverno définit des règles de bonnes pratique de sécurité à mettre en place au pres de vos utilisateurs (IT)
Pour améliorer la sécurité
Et son administration
Il intercepte toutes les requêtes envoyé vers l’API Server
Très simple à mettre en place.
Un catalogue de règles est proposé sur le site de Kyverno
Permet de valider des règles dès la demande de création d’objet dans le cluster.
Quelques exemples :
Pas d’images “latest”
Pas de User root
Pas de service NodePort
Obligation de request / limit
etc
Cela permet aussi modifier les objets à la volée ou d’en créer
Ajout de configuration aux objets
Duplication de secret dans les nouveaux namespaces
Dans la famille des Webhook Admission controller on trouve Kyverno ou OPA Gatekeeper
kiverno définit des règles de bonnes pratique de sécurité à mettre en place au pres de vos utilisateurs (IT)
Pour améliorer la sécurité
Et son administration
Il intercepte toutes les requêtes envoyé vers l’API Server
Très simple à mettre en place.
Un catalogue de règles est proposé sur le site de Kyverno
Permet de valider des règles dès la demande de création d’objet dans le cluster.
Quelques exemples :
Pas d’images “latest”
Pas de User root
Pas de service NodePort
Obligation de request / limit
etc
Cela permet aussi modifier les objets à la volée ou d’en créer
Ajout de configuration aux objets
Duplication de secret dans les nouveaux namespaces
Une fonctionnalité mal connu des clusters kuberntes : les logs audits. Attention ce n’est pas activé par défaut sur les cluster on-prem
çà fournit un ensemble chronologique d’enregistrements pertinents pour la sécurité et documentant la séquence des actions dans un cluster.
Le cluster audite les activités générées par les utilisateurs, par les applications qui utilisent l’API Kubernetes et par le control plane lui-même
un fichier de configuration pour définir les événements à sniffer défini par :
un contenu : “toutes tentatives de lister un secret”
étapes : une requête a été envoyée vers l’API server, une réponse est partie…
niveau de log : pour un evenement audité: j’écris rien, les métadatas de la requete, le body de la requête, la réponse de la requête
https://www.udemy.com/course/certified-kubernetes-security-specialist/learn/lecture/23104592#notes
section 27
transition récap cluster : …
maintenant les pods
slide : …
Ils sont chiffrés dans les solutions managés proposés par les fournisseurs de cloud.
Ils existent différentes solutions pour améliorer la sécurité des données sensibles ET NE PAS GERER LES SECRETS DANS KUBE
SOPS, Sealed Secret, Vault HashiCorp
Vault et les solutions managés basées dessus permettent une gestions haut niveau des secrets
Dans Kubernetes et autres environnements d’exécution.
Il permet aussi de gérer :
une Public Key Infrastructure (PKI)
Connexions dynamiques aux Cloud Providers ou aux BDDs
Rotation
En 2 phrases la sécurité sur un pod pourrait se décrire en 2 phases :
prévention (restreinte) security context
Et comme la confiance n’exclue pas le contrôle : détection (surveiller) avec falco
Quelques exemples de configuration du securityContext.
readOnlyRootFilesystem: true
Le fileSystem du container est en read Only
Tout volume monté dans le conteneur aura ses propres permissions de système de fichiers.
allowPrivilegeEscalation: false
interdit qu’un process enfant ait plus de droits que son parent
Pas compatible avec CAP_SYS_ADMIN ou privileged
runAsNonRoot: true / runAsUser: 1000 / runAsGroup: 3000
Contraint l’UID / GID numérique (root: 0) lançant le process du container
fsGroup: 2000
Définit le group des volumes
capabilities: drop / add: définit les capabilities linux
seccompProfile:
type: Localhost
localhostProfile: my-profiles/profile-allow.json
Annotation pour appliqué un profile AppArmor sur un container :
container.apparmor.security.beta.kubernetes.io/<container_name>: <profile_ref>
https://snyk.io/wp-content/uploads/10-Kubernetes-Security-Context-settings-you-should-understand.pdf
Use the default (masked) /proc filesystem mount
Do not use the host network or process space - using "hostNetwork:true" will cause NetworkPolicies to be ignored since the Pod will use its host network.
Drop unused and unnecessary Linux capabilities.
Use SELinux options for more fine-grained process controls.
Give each application its own Kubernetes Service Account.
Do not mount the service account credentials in a container if it does not need to access the Kubernetes API.
Pareil que Kyverno, mais pour la détection, il y a un outil open source qui monte en puissance, c’est Falco
Falco analyse les appels système du noyau pour fournir une visibilité de l'activité
des conteneurs,
des hôtes
du cluster
Il exploite également les événements d'audit de l'API Kubernetes.
Ajout de metadata du contexte
Il est préférable de l’installer sur les nodes directment pas dans le cluster Kubernetes
—
Architecture :
core dans usernamespace : Analyse les infos, envoie les alertes
Configuration : définit les règles à respecter, et quand déclencher les alertes.
Un driver dans le kernel : Envoie les informations d'appel système.
(Par défaut) Module noyau construit sur les bibliothèques C++ libscap et libsinsp.
Sonde eBPF construite à partir des mêmes modules
Falco utilise des règles pour détecter un comportement suspect.
Il posséde un jeu de règles par défaut comme par exemple
un bash dans notre container.
Exécution d'un shell par un conteneur
Montage d'un volume de l'hôte
Lecture de secrets et d'informations sensibles comme /etc/shadow
Installation d'un nouveau paquet sur un conteneur
Apparition d'un nouveau processus ne faisant pas partie du CMD d'un conteneur
Ouverture d'un nouveau port ou connexion suspecte
Lecture/écriture dans des répertoires bien connus tels que /etc, /usr/bin, /usr/sbin, etc.
Changements d’ownership et de mode
Connexions réseau inattendues ou mutations de socket
Création d'un conteneur privilégié
Ce n’est qu’un outil de monitoring uniquement
Il peut envoyer des alertes à un ou plusieurs channels, mais il n’effectue aucune action par lui-même…
https://sysdig.com/blog/intro-runtime-security-falco/
OUTPUTS Falco:
Standard Output
A file
Syslog
A spawned program
A HTTP[s] end point
A client via the gRPC API
Lié à Falco, on ajoutera “Falco Side Kick” pour la remédiation à l’aide de serverless”
Lié à Falco, on ajoutera “Falco Side Kick” pour la remédiation à l’aide de serverless”
transition récap cluster : …
maintenant les pods
Utiliser des images officielles reconnues
Contrôler au maximum vos images
Leur mise à jour
Leur contenu
Pour avoir le contrôle on peut créer une hiérarchie d’image
En partant d’une image d’OS reconnue
Image utilisée pour créer vos images middleware (java, Node etc…)
Et enfin utiliser ces images middleware pour créer vos images applicatives
MCO : maintien en condition opérationnelle
transition : La hiérarchie d’image va permettre d’adapter les images à votre contexte.
Du point de vue de la sécurité il faut
Réduire la surface d’attaque : Réduire les binaires et librairies embarquées dans vos images, ce sont autant de portes ouvertes à des vulnérabilités.
Multi stage pour embarquer dans l’image finale uniquement l’exécutable et l'environnement d’exécution.
Définir un User non root pour démarrer le processus du container et adapter les permissions sur les dossiers
Donner des droits root à un container, c’est exactement comme donner des droits root sur la machine host
Malgres tous nos efforts de choix d’images de bases, il faut continuer à ne pas avoir confiance
Scanner régulièrement vos images
Répondre en fonction des résultats du Scan
Intégration Simple dans la chaîne d’intégration
Parler de signature
-> trivy permet de lister des CVE connues, la criticité, les plages de présence des failles
alpine : OS dédié au contenaire de type docker
distroless : image mise à disposition par google, avec un ensemble de bonne pratique. ex: nonroot, pas de bash, …
Comme Trivy, mais pour les dépendances applicatives de vos applications.
pour chaque dependance/librairie, on a la liste des CVE + détails de la CVE + remediation (les versions infectées par la version)
Attention aux faux positifs, c’est le plus compliqué.
Possibilité d’exclure des CVE pour des dépendances/librairies en cas de non alerte (par ex : une faille sur l’exposition JMX mais vous n'autorisez pas l’usage du JMX dans votre contexte…)
Dans une CI, ne bloquez pas en cas de détection, autorisez-vous un petit délai de remédiation (si c’est possible)
Exemple de sortie :
https://jeremylong.github.io/DependencyCheck/general/SampleReport.html
transition : La hiérarchie d’image va permettre d’adapter les images à votre contexte.
Du point de vue de la sécurité il faut
Réduire la surface d’attaque : Réduire les binaires et librairies embarquées dans vos images, ce sont autant de portes ouvertes à des vulnérabilités.
Multi stage pour embarquer dans l’image finale uniquement l’exécutable et l'environnement d’exécution.
Définir un User non root pour démarrer le processus du container et adapter les permissions sur les dossiers
Donner des droits root à un container, c’est exactement comme donner des droits root sur la machine host
transition : La hiérarchie d’image va permettre d’adapter les images à votre contexte.
Du point de vue de la sécurité il faut
Réduire la surface d’attaque : Réduire les binaires et librairies embarquées dans vos images, ce sont autant de portes ouvertes à des vulnérabilités.
Multi stage pour embarquer dans l’image finale uniquement l’exécutable et l'environnement d’exécution.
Définir un User non root pour démarrer le processus du container et adapter les permissions sur les dossiers
Donner des droits root à un container, c’est exactement comme donner des droits root sur la machine host
transition : La hiérarchie d’image va permettre d’adapter les images à votre contexte.
Du point de vue de la sécurité il faut
Réduire la surface d’attaque : Réduire les binaires et librairies embarquées dans vos images, ce sont autant de portes ouvertes à des vulnérabilités.
Multi stage pour embarquer dans l’image finale uniquement l’exécutable et l'environnement d’exécution.
Définir un User non root pour démarrer le processus du container et adapter les permissions sur les dossiers
Donner des droits root à un container, c’est exactement comme donner des droits root sur la machine host
transition : La hiérarchie d’image va permettre d’adapter les images à votre contexte.
Du point de vue de la sécurité il faut
Réduire la surface d’attaque : Réduire les binaires et librairies embarquées dans vos images, ce sont autant de portes ouvertes à des vulnérabilités.
Multi stage pour embarquer dans l’image finale uniquement l’exécutable et l'environnement d’exécution.
Définir un User non root pour démarrer le processus du container et adapter les permissions sur les dossiers
Donner des droits root à un container, c’est exactement comme donner des droits root sur la machine host
Si a tout les étages vous avez suivi les conseils :
Diminuer la surface d’attaque
RBAC / moindre privilèges
Mise à jour
Outils contrôlés et maîtrisés (communauté, patch de sécurité, projet vivant, etc …)
Vous pouvez mieux dormir