Publicité
Publicité

Contenu connexe

Similaire à The real WAX ROADSHOW K8S 2022.pdf(20)

Publicité

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
  5. Au programme
  6. Les bases Kubernetes Sécurité
  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 - -
  13. Node: Hardening
  14. Node: Benchmark et Mise à jour
  15. Node: Sauvegarde ETCD
  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
  20. Admission Controller (1/2)
  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
  22. Kubernetes Policy: Kyverno
  23. Audit logs
  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
  26. Prévention / Détection
  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
Publicité