diff --git a/images/csan.png b/images/csan.png
new file mode 100644
index 0000000000000000000000000000000000000000..9050d2ccb5c42b8d445c06ab052d45b0957b13e0
Binary files /dev/null and b/images/csan.png differ
diff --git a/images/logo-calcul.png b/images/logo-calcul.png
new file mode 100644
index 0000000000000000000000000000000000000000..bfe3d514e6d279d44ea54e023314599dbe8976e8
Binary files /dev/null and b/images/logo-calcul.png differ
diff --git a/images/oci.png b/images/oci.png
new file mode 100644
index 0000000000000000000000000000000000000000..40f959fa981cdaa1a6d5973c42d3c8497aaeae5f
Binary files /dev/null and b/images/oci.png differ
diff --git a/images/seccomp.png b/images/seccomp.png
new file mode 100644
index 0000000000000000000000000000000000000000..443bb2cbb28bb3d3230391cdd77a617fa92f3b22
Binary files /dev/null and b/images/seccomp.png differ
diff --git a/images/slurm.jpg b/images/slurm.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d93c35a29ac064f10764c00c4c3a0f6ea6e33d41
Binary files /dev/null and b/images/slurm.jpg differ
diff --git a/images/software-supply-chain.png b/images/software-supply-chain.png
new file mode 100644
index 0000000000000000000000000000000000000000..8eae6d22b073d04e897c88331f7c15fd0a70d0e6
Binary files /dev/null and b/images/software-supply-chain.png differ
diff --git a/images/vm-container.png b/images/vm-container.png
new file mode 100644
index 0000000000000000000000000000000000000000..4c39aaa29ad0dc6d1c15da8521347a49bcb68bf0
Binary files /dev/null and b/images/vm-container.png differ
diff --git a/prez.html b/prez.html
index fdd0789c10546b7e8c72090c69b046659f211ee1..a892a3560df80472bc7c34ab19e655b7a42ada70 100644
--- a/prez.html
+++ b/prez.html
@@ -23,8 +23,9 @@
# Conteneurs pour le calcul
- # 
- # 
+
+
+
###### Martin Souchal 2021 (APC - FACe - ComputeOps)
@@ -85,6 +86,8 @@
alias docker=singularity
...
```
+
+
---
# Vocabulaire
@@ -94,7 +97,7 @@
- Registre : un serveur abritant des images de conteneurs
- Repository : ensemble de registres
-
+
.footnote[Source : Manage Docker containers, by Bachir Chihani and Rafael Benevides]
---
@@ -103,6 +106,8 @@
- Plusieurs formats de manifestes : Dockerfile, Singularity...
- Un manifeste est transformé en image via un mécanisme de build (intégré ou non)
- Un conteneur peut être construit "from scratch" ou a partir d'une autre image
+ - La base d'une image est un OS Linux (Alpine Linux, Busybox, Ubuntu, CentOs...)
+ - Pas de standards pour les manifestes
```yaml
FROM python:3
@@ -114,7 +119,13 @@
COPY . /code/
```
```bash
- docker build Dockerfile
+ docker build -f Dockerfile -t Container .
+ ```
+ ```bash
+ singularity build Container.sif Singularity.def
+ ```
+ ```bash
+ buildah bud -f Dockerfile -t Container .
```
---
# Runtimes
@@ -131,6 +142,8 @@
---
# Isolation et performances
+
+
- runtimes de bas niveau en user mode (namespaces) :
- Temps d'instanciation minimal
- Isolation faible (proche du matériel)
@@ -144,19 +157,68 @@
- Performances lièes aux formats d'images
- Format en couches optimisés pour téléchargement
- Format fchier optimisé pour le stockage
+
+ .footnote[Source : Three Easy Ways to Improve a Container’s Performance by Marialena Perpiraki]
+ ---
+ # Isolation et Sécurité
+ ### focus sur seccomp
+ - Seccomp est utilisé par Docker et Singularity
+ - Permet de filtrer les syscalls depuis les runtimes (liste noire/blanche)
+
+ ```bash
+ ~ $ docker info
+ ...
+ Security Options:
+ apparmor
+ seccomp
+ Profile: default # default seccomp profile applied by default
+ ...
+ ```
+ - En désactivant completement seccomp, tous les syscalls sont autorisés :
+
+ ```bash
+ # Lancer un conteneur sans seccomp
+ ~ $ docker run --rm -it --security-opt seccomp=unconfined alpine sh
+ / # reboot # oops
+ # Lancer docker avec le profil seccomp par défaut
+ ~ $ docker container run --rm -it alpine sh
+ / # reboot # ouf
+ ```
+ ---
+ # Isolation et Sécurité
+ ### focus sur seccomp
+
+
+
+ - Lancement d'un conteneur avec un profil seccomp personnalisé
+
+ ```bash
+ # Run avec un profil interdisant le chmod
+ ~ $ docker container run --rm -it --security-opt seccomp=no-chmod.json alpine sh
+ / # whoami
+ root
+ / # chmod 777 -R /etc
+ chmod: /etc: Operation not permitted
+ ```
+
+ .footnote[Source : [ITNext](https://itnext.io/hardening-docker-and-kubernetes-with-seccomp-a88b1b4e2111)]
---
# Sécurité
-
+
- Docker : daemon root, possibilité d'être root dans un conteneur
+ - Possibilité d'utiliser AppArmor ou seccomp coté admin pour "verrouiller" l'infra
- Conteneurs user mode :
- même utilisateur hors du conteneur et dans le conteneur
- - les problématiques de sécurité sont reportées sur le noyau linux
- - Isolation plus ou moins forte
- - Vecteur de failles de sécurité logicelle important
+ - les problématiques d'élévation de priviléges sont reportées sur le noyau linux
+ - Attention au SUID...
+ - Isolation plus ou moins forte (de userNS a VM)
+ - Vecteur de failles de sécurité logicelle important (cf Alpine Linux)
- Vecteur d'attaque pour rootkit (très facile de cacher du code malicieux dans un conteneur)
+
+
+ .footnote[SetUID : un programme lancé avec le droit “suid” sera exécuté avec les droits du propriétaire du programme et non les droits de l'utilisateur qui l'a lancé]
---
# Registres publics
- ### Ou trouver des images de conteneurs prêtes à l'emploi ?
* Images vérifées
- [NVIDIA NGC](https://ngc.nvidia.com) - images orientées GPU
@@ -167,9 +229,10 @@
- [Singularity Hub](https://singularity-hub.org/)
- [Sylabs cloud](https://cloud.sylabs.io/) - images signées
- [Quay.io](https://quay.io/) (scan de sécurité)
+
+
---
# Registres privés
- ### Comment partager ses applications conteneurisées ?
- Gitlab (Registre Docker)
- Harbor (Registre Docker)
@@ -269,9 +332,11 @@
- Aucun support MPI.
- Image docker : superpositions de couches, pas très portable dans un cluster
- GPU Nvidia supportés par [nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
+ - Utilisé massivement en Intégration continue
- Sécurité :
- daemon root à installer sur tous les noeuds de calculs...
- des utilisateurs root dans votre cluster...
+ - mais sécurisation possible via seccomp
.right[]
---
@@ -291,12 +356,13 @@