SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
LA SÉCURITÉ (kube) À TOUS LES ÉTAGES
Adrien MONTIGNEAUX, François BERTHAULT, Hervé FONTBONNE
Qui suis-je ? / Qui sommes-nous ?
Adrien MONTIGNEAUX
Les filles et les garçons de la Tech
● Consultant Cloud et DevOps
Qui suis-je ?
François Berthault
Les filles et les garçons de la Tech
capitaine devops
★ Dev&Ops
★ Architecte
★ Coach DevOps
★ kubernetes et observabilité
@fanfansama
Qui suis-je ? / Qui sommes-nous ?
Hervé FONTBONNE
Co-fondateur Les filles et les garçons de la Tech
● Consultant Cloud et DevOps
● Formateur
Au programme
Les bases
Kubernetes
Sécurité
Concepts Globaux de Kubernetes
Sécurité : Quelques principes globaux
Réseau Diviser pour mieux régner
Réseau : “Diviser pour mieux régner”
Noeud
Réduire la surface d’attaque
Hardening
Benchmark et mise à jour
Sauvegarde ETCD
Node: Réduire la surface dʼattaque
-
-
Node: Hardening
Node: Benchmark et Mise à jour
Node: Sauvegarde ETCD
Cluster
Network Policies
Role Based Access Control (RBAC)
Authentification Tierce
Pod Security Admission & Controller
Kubernetes Policies
Audit Logs
Network Policies
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
app: nginx
ingress:
- from:
- podSelector:
matchLabels:
access: "true"
RBAC - Roles Based Access Control
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: ns-demo
rules:
- verbs: ["get","watch","list"]
apiGroups: [""]
resources: ["pods"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: ns-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 ns-demo, mais pas de les supprimer ni les créer
API - 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
Admission Controller (1/2)
Pod Security Admission - PSA (2/2)
https://kubernetes.io/docs/concepts/security/pod-security-standards/
enforce rejet de la ressource
audit log de violation + événement
warn événement
privileged namespace délibérément ouverte et entièrement illimitée.
baseline namespace faciliter l'adoption des “workloads” tout en empêchant les escalades de privilèges connues.
restricted namespace appliquer les meilleures pratiques actuelles de renforcement des pods, au détriment d'une certaine compatibilité.
apiVersion: v1
kind: Namespace
metadata:
name: test-ns
labels:
pod-security.kubernetes.io/enforce: baseline
Kubernetes Policy: Kyverno
Audit logs
Pod
Gestion des données sensibles
Sécuriser le contexte d’exécution
Détecter les comportements anormaux
Gestion des données sensibles
Prévention / Détection
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
fsGroup: 2000
capabilities:
drop:
- CAP_SYS_ADMIN
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
Remédiation : Réponses aux alertes !
Images
Containers
De bonnes bases
Le strict nécessaire
Pas de super pouvoirs
Scan des CVE
Image de base / Hiérarchie d’image
Réduire l'empreinte de vos images
Supprimer les packages inutiles à l'exécution (curl, nmap, …)
Faire du multi-stage
Restreindre : User Non Root
RUN groupadd -g 999 appgroup && 
useradd -r -u 999 -g appgroup appuser
USER appuser
“Un processus dans un container n’est pas différent d’un autre processus Linux de l’hôte”
Scan de vulnérabilité des images
$> podman run aquasec/trivy image python:3.4-alpine
Diminuer la surface d’attaque
26 Août 2022 (Apple M1 / linux/arm64/v8) Size Low Medium High Critical
node:18
Digest: sha256:a0a2fc4435b0c9ae7bec0a69b1279323a4a41c5a005581fbf30d39cd5777db37
939.71 MB 523 198 323 30
node:18-alpine
Digest: sha256:9b435939937b0deef5c1f6fcfd1f265aa7a77574388b671fda322e662744472d
164.38 MB 0 0 0 0
gcr.io/distroless/nodejs:18
Digest: sha256:de566fe4f6afb9c4714bb8e5d8b53818898b39f14ff5df2da768a00748bd52c0
154.74 MB 11 0 3 0
Le code : Dependency Check
$> podman run owasp/dependency-check:$DC_VERSION
CVE basés sur la National Vulnerability Database (NVD)
Ce que l’on retiendra …
MERCI

Weitere ähnliche Inhalte

Ähnlich wie The real WAX ROADSHOW K8S 2022.pdf

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 

Ähnlich wie The real WAX ROADSHOW K8S 2022.pdf (20)

Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécuritéLe Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Terraform - IAC - de quoi s'agit t'il ?.pdf
Terraform - IAC - de quoi s'agit t'il ?.pdfTerraform - IAC - de quoi s'agit t'il ?.pdf
Terraform - IAC - de quoi s'agit t'il ?.pdf
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 

The real WAX ROADSHOW K8S 2022.pdf

  • 1. LA SÉCURITÉ (kube) À TOUS LES ÉTAGES Adrien MONTIGNEAUX, François BERTHAULT, Hervé FONTBONNE
  • 2. Qui suis-je ? / Qui sommes-nous ? Adrien MONTIGNEAUX Les filles et les garçons de la Tech ● Consultant Cloud et DevOps
  • 3. Qui suis-je ? François Berthault Les filles et les garçons de la Tech capitaine devops ★ Dev&Ops ★ Architecte ★ Coach DevOps ★ kubernetes et observabilité @fanfansama
  • 4. Qui suis-je ? / Qui sommes-nous ? Hervé FONTBONNE Co-fondateur Les filles et les garçons de la Tech ● Consultant Cloud et DevOps ● Formateur
  • 7. Concepts Globaux de Kubernetes
  • 8. Sécurité : Quelques principes globaux
  • 9. Réseau Diviser pour mieux régner
  • 10. Réseau : “Diviser pour mieux régner”
  • 11. Noeud Réduire la surface d’attaque Hardening Benchmark et mise à jour Sauvegarde ETCD
  • 12. Node: Réduire la surface dʼattaque - -
  • 14. Node: Benchmark et Mise à jour
  • 16. Cluster Network Policies Role Based Access Control (RBAC) Authentification Tierce Pod Security Admission & Controller Kubernetes Policies Audit Logs
  • 17. Network Policies --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: access-nginx spec: podSelector: matchLabels: app: nginx ingress: - from: - podSelector: matchLabels: access: "true"
  • 18. RBAC - Roles Based Access Control --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: pod-reader namespace: ns-demo rules: - verbs: ["get","watch","list"] apiGroups: [""] resources: ["pods"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: ns-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 ns-demo, mais pas de les supprimer ni les créer
  • 19. API - 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
  • 21. Pod Security Admission - PSA (2/2) https://kubernetes.io/docs/concepts/security/pod-security-standards/ enforce rejet de la ressource audit log de violation + événement warn événement privileged namespace délibérément ouverte et entièrement illimitée. baseline namespace faciliter l'adoption des “workloads” tout en empêchant les escalades de privilèges connues. restricted namespace appliquer les meilleures pratiques actuelles de renforcement des pods, au détriment d'une certaine compatibilité. apiVersion: v1 kind: Namespace metadata: name: test-ns labels: pod-security.kubernetes.io/enforce: baseline
  • 24. Pod Gestion des données sensibles Sécuriser le contexte d’exécution Détecter les comportements anormaux
  • 25. Gestion des données sensibles
  • 27. 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 fsGroup: 2000 capabilities: drop: - CAP_SYS_ADMIN
  • 28. 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
  • 29. Remédiation : Réponses aux alertes !
  • 30. Images Containers De bonnes bases Le strict nécessaire Pas de super pouvoirs Scan des CVE
  • 31. Image de base / Hiérarchie d’image
  • 32. Réduire l'empreinte de vos images Supprimer les packages inutiles à l'exécution (curl, nmap, …) Faire du multi-stage Restreindre : User Non Root RUN groupadd -g 999 appgroup && useradd -r -u 999 -g appgroup appuser USER appuser “Un processus dans un container n’est pas différent d’un autre processus Linux de l’hôte”
  • 33. Scan de vulnérabilité des images $> podman run aquasec/trivy image python:3.4-alpine
  • 34. Diminuer la surface d’attaque 26 Août 2022 (Apple M1 / linux/arm64/v8) Size Low Medium High Critical node:18 Digest: sha256:a0a2fc4435b0c9ae7bec0a69b1279323a4a41c5a005581fbf30d39cd5777db37 939.71 MB 523 198 323 30 node:18-alpine Digest: sha256:9b435939937b0deef5c1f6fcfd1f265aa7a77574388b671fda322e662744472d 164.38 MB 0 0 0 0 gcr.io/distroless/nodejs:18 Digest: sha256:de566fe4f6afb9c4714bb8e5d8b53818898b39f14ff5df2da768a00748bd52c0 154.74 MB 11 0 3 0
  • 35. Le code : Dependency Check $> podman run owasp/dependency-check:$DC_VERSION CVE basés sur la National Vulnerability Database (NVD)
  • 36. Ce que l’on retiendra …
  • 37. MERCI