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
16. Cluster
Network Policies
Role Based Access Control (RBAC)
Authentification Tierce
Pod Security Admission & Controller
Kubernetes Policies
Audit Logs
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
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
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