Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

elearning:workbooks:centos:6:sec:l111 [2021/02/28 14:19] – created adminelearning:workbooks:centos:6:sec:l111 [2021/02/28 16:52] (Version actuelle) admin
Ligne 5: Ligne 5:
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
  
-======LRF411 - Démarrer avec Docker======+======LRF411 - Gestion de la Sécurité de Docker======
  
 =====Contenu du Module===== =====Contenu du Module=====
  
-  * **LRF411 - Démarrer avec Docker**+  * **LRF411 - Gestion de la Sécurité de Docker**
     * Contenu du Module     * Contenu du Module
-    * Présentation de Docker +    * LAB #1 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker 
-    * LAB #Travailler avec Docker +    * LAB #Le Script docker-bench-security.sh 
-      * 1.1 - Installer docker +    * LAB #3 - Sécurisation de la Configuration de l'Hôte Docker 
-      * 1.2 - Démarrer un Conteneur +      * 3.1 - [WARN] 1.2.1 - Ensure a separate partition for containers has been created 
-      * 1.3 - Consulter la Liste des Conteneurs et Images +      * 3.2 - [WARN] 1.2.3 Ensure auditing is configured for the Docker daemon 
-      * 1.4 - Rechercher une Image dans un Dépôt +    * LAB #4 - Sécurisation de la Configuration du daemon Docker 
-      * 1.5 - Supprimer un Conteneur d'une Image +      * 4.- [WARN] 2.1 - Ensure network traffic is restricted between containers on the default bridge 
-      * 1.6 - Créer une Image à partir d'un Conteneur Modifié +      * 4.2 - [WARN] 2.8 - Enable user namespace support 
-      * 1.7 - Supprimer une Image +      * 4.3 - [WARN] 2.11 - Ensure that authorization for Docker client commands is enabled 
-      1.8 Créer un Conteneur avec un Nom Spécifique +      * 4.4 - [WARN] 2.12 - Ensure centralized and remote logging is configured 
-      * 1.Exécuter une Commande dans un Conteneur +      * 4.5 - [WARN] 2.14 - Ensure Userland Proxy is Disabled 
-      * 1.10 Injecter des Variables d'Environnement dans un Conteneur +      * 4.6 - [WARN] 2.17 - Ensure containers are restricted from acquiring new privileges 
-      * 1.11 Modifier le Nom d'Hôte d'un Conteneur +      * 4.7 - Le Fichier /etc/docker/daemon.json 
-      * 1.12 Mapper des Ports d'un Conteneur +    LAB #5 Sécurisation des Images et les Fichiers de Construction 
-      * 1.13 Démarrer un Conteneur en mode Détaché +      * 5.- [WARN] 4.Ensure a user for the container has been created 
-      * 1.14 Accéder aux Services d'un Conteneur de l'Extérieur +      * 5.[WARN] 4.5 - Ensure Content trust for Docker is Enabled 
-      * 1.15 Arrêter et Démarrer un Conteneur +      * 5.[WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images 
-      * 1.16 Utiliser des Signaux avec un Conteneur +    * LAB #6 - Sécurisation du Container Runtime 
-      * 1.17 Forcer la Suppression d'un Conteneur en cours d'Exécution +      * 6.- [WARN] 5.Ensure AppArmor Profile is Enabled 
-      * 1.18 Utilisation Simple d'un Volume +      * 6.[WARN] 5.2 - Ensure SELinux security options are set, if applicable 
-      * 1.19 Télécharger une image sans créer un conteneur +      * 6.[WARN] 5.10 - Ensure memory usage for container is limited 
-      * 1.20 S'attacher à un conteneur en cours d'exécution +      * 6.[WARN] 5.11 - Ensure CPU priority is set appropriately on the container 
-      * 1.21 Installer un logiciel dans le conteneur +      * 6.[WARN] 5.12 - Ensure the container's root filesystem is mounted as read only 
-      * 1.22 Utilisation de la commande docker commit +      * 6.[WARN] 5.14 - Ensure 'on-failure' container restart policy is set to '5
-      * 1.23 Se connecter au serveur du conteneur de l'extérieur+      * 6.[WARN] 5.25 - Ensure the container is restricted from acquiring additional privileges 
 +      * 6.[WARN] 5.26 - Ensure container health is checked at runtime 
 +      * 6.[WARN] 5.28 - Ensure PIDs cgroup limit is used 
 +    * LAB #7 - Sécurisation des Images avec Docker Content Trust 
 +      * 7.- DOCKER_CONTENT_TRUST 
 +      * 7.DCT et la commande docker pull 
 +        * L'option disable-content-trust 
 +      * 7.DCT et la commande docker push 
 +      * 7.DCT et la commande docker build 
 +        * Créer un deuxième Repositry 
 +        * Supprimer une Signature
  
-=====Présentation de Docker=====+=====LAB #1 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker=====
  
-Docker est une application de virtualisation légère qui utilise des **images** et des **conteneurs**.+Au contraire des solutions classiques de gestion de machines virtuelles où l'accès est souvent conditionné à l'attribution de rôles, Docker ne possède pas ce type de mécanisme. De ce fait toute personne ayant accès à l'hôte soit par **sudo** soit en étant membre du groupe **docker** peut accéder à tous les conteneurs voire les arrêter, supprimer et en créer d'autres.
  
-Une **image** est un paquet exécutable contenant tout ce qu'il est necessaire afin d'exécuter un logiciel donné, incluant :+<code> 
 +root@debian9:~# cat /etc/group | grep docker 
 +docker:x:999: 
 +root@debian9:~# usermod -aG docker trainee 
 +root@debian9:~# exit 
 +déconnexion 
 +trainee@manager:~$ docker ps 
 +Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied 
 +trainee@manager:~$ newgrp docker 
 +trainee@manager:~$ docker ps -a 
 +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                 NAMES 
 +d02c6115724c        alpine              "/bin/sh"                6 days ago          Exited (0) 6 days ago                               alpine1 
 +trainee@manager:~$ docker rm alpine1 
 +alpine1 
 +trainee@manager:~$ docker run ---name alpine1 alpine sleep 99999 
 +a214e2df0499c97e8da25a6c9ea751ac75344c9bcd7d238f8cb8d5c777510ab9 
 +trainee@manager:~$ docker ps -a 
 +CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES 
 +a214e2df0499        alpine              "/bin/sh"           6 seconds ago       Up 5 seconds                            alpine1 
 +</code>
  
-  * le code +=====LAB #2 - Le Script docker-bench-security.sh=====
-  * un runtime +
-  * des bibliothèques, +
-  * des variables d'environnement +
-  * des fichiers de configuration+
  
-Un **conteneur** est une instance de l'image en cours d'exécution en mémoireElle est isolée de l'environnement de l'hôte par défaut mais peut accéder à des fichiers et de ports de l'hôte selon la configuration.+Le **Center for Internet Security (CIS)** est une organisation indépendante à but non-lucratif qui publie des best practices dans de nombreux domaines de l'informatiqueLe guide pour Docker peut être téléchargé à partir de l'adresse [[https://www.cisecurity.org/benchmark/docker/]].
  
-Les conteneurs exécutent des applications nativement en utilisant le noyau de la machine hôte. De ce fait les performances d'un conteneur sont supérieures à celles d'une machine virtuelle qui doit passer par un hyperviseur pour accéder aux ressources de la machine hôte.+Le guide est divisé en plusieurs sections :
  
-Docker existe en deux versions **Docker-CE*(Docker Community Edition) et **Docker-EE** (Docker Enterprise Edition). Pour consulter les différences entre les deux versionsconsultez le lien  **[[https://docs.docker.com/engine/installation/]]**.+  La configuration de l'hôte Docker
 +  La configuration du daemon Docker
 +  Les fichiers de configuration du daemon Docker
 +  Les images ainsi que les fichiers servant à la construction des images, 
 +  Le container runtime, 
 +  Les opérations sécuritaires relatives à Docker, 
 +  La configuration de Docker Swarm.
  
-=====LAB #1 - Travailler avec Docker=====+Ce guide est à utiliser avec le script **Docker Benchmark Security**.
  
-====1.1 - Installer docker==== +Clonez le script **docker-bench-security.sh** en utilisant **git** :
- +
-Docker n'est pas dans le dépôts de Debian. Afin de l'installer il convient d'ajouter le dépôt de docker. Premièrement, il est nécessaire d'installer les paquets permettant à Debian d'utiliser un dépôt en https :+
  
 <code> <code>
-root@debian9:~# apt-get update +trainee@manager:~$ su 
-... +Mot de passe : fenestros 
-root@debian9:~# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common +root@debian9:~# git clone https://github.com/docker/docker-bench-security.git 
-Reading package lists... Done +Clonage dans 'docker-bench-security'... 
-Building dependency tree        +remoteEnumerating objects18, done. 
-Reading state information... Done +remoteCounting objects: 100% (18/18)done
-ca-certificates is already the newest version. +remote: Compressing objects: 100% (16/16), done
-ca-certificates set to manually installed. +remote: Total 1921 (delta 5)reused 6 (delta 2)pack-reused 1903 
-gnupg2 is already the newest version. +Réception d'objets: 100% (1921/1921), 2.90 MiB | 908.00 KiB/s, fait
-gnupg2 set to manually installed+Résolution des deltas: 100% (1339/1339), fait.
-The following extra packages will be installed: +
-  libcurl3 python3-dbus python3-software-properties unattended-upgrades +
-Suggested packages+
-  python-dbus-doc python3-dbus-dbg +
-The following NEW packages will be installed: +
-  apt-transport-https curl libcurl3 python3-dbus python3-software-properties +
-  software-properties-common unattended-upgrades +
-0 upgraded7 newly installed, 0 to remove and 1 not upgraded+
-Need to get 960 kB of archives+
-After this operation, 2,344 kB of additional disk space will be used+
-Do you want to continue? [Y/n] +
 </code> </code>
  
-Téléchargez la clef GPG officielle de docker :+Exécutez maintenant le script **Docker Benchmark Security** :
  
 <code> <code>
-root@debian9:~# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add +root@debian9:~# cd docker-bench-security/ 
-OK +root@debian9:~/docker-bench-security# ./docker-bench-security.sh 
-</code>+# ------------------------------------------------------------------------------ 
 +# Docker Bench for Security v1.3.5 
 +
 +# Docker, Inc. (c) 2015- 
 +
 +# Checks for dozens of common best-practices around deploying Docker containers in production. 
 +# Inspired by the CIS Docker Benchmark v1.2.0. 
 +# ------------------------------------------------------------------------------ 
 + 
 +Initializing vendredi 8 novembre 2019, 12:12:03 (UTC+0100)
  
-Vérifiez que l'ID de la clef est **9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88** : 
  
-<code> +[INFO] 1 Host Configuration 
-root@debian9:~# apt-key fingerprint 0EBFCD88 + 
-/etc/apt/trusted.gpg +[INFO] 1.General Configuration 
--------------------+[NOTE] 1.1.1  Ensure the container host has been Hardened 
-pub   4096R/0EBFCD88 2017-02-22 +[INFO] 1.1.2  - Ensure Docker is up to date 
-      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88 +[INFO]        * Using 19.03.4, verify is it up to date as deemed necessary 
-uid                  Docker Release (CE deb) <docker@docker.com> +[INFO]        * Your operating system vendor may provide support and security maintenance for Docker 
-sub   4096R/F273FCD8 2017-02-22+ 
 +[INFO] 1.2 - Linux Hosts Specific Configuration 
 +[WARN] 1.2.1 Ensure a separate partition for containers has been created
 ... ...
 </code> </code>
  
-Ajoutez le dépôt **stable** de docker :+Ce script sert à automatiser le contrôle des points précédemment cités et produit un rapport contenant des annotations :
  
-<code> +  * **[PASS]** : Concerne les points qui n'ont pas besoin d'être modifiés, 
-root@debian9:~# add-apt-repository "deb [arch=amd64https://download.docker.com/linux/debian $(lsb_release -cs) stable" +  * **[WARN]** Concerne les points qui **doivent** être modifiés, 
-</code>+  * **[INFO]** Concerne les points qui doivent être passés en revue selon les besoins de votre configuration, 
 +  * **[NOTE]** : Vous informe d'un **best practice**.
  
-<WRAP center round important> +=====LAB #3 Sécurisation de la Configuration de l'Hôte Docker=====
-**Important** Notez que la commande **lsb_release -cs** retourne le nom de la distribution Debian, à savoir dans ce cas **stretch**. +
-</WRAP>+
  
-Installez maintenant le paquet **docker-ce** :+Lors de l'exécution du script, vous devez obtenir un résultat similaire à ceci en ce qui concerne la Sécurité de la Configuration de l'hôte Docker :
  
-<code> +<file>
-root@debian9:~# apt-get update+
 ... ...
-root@debian9:~# apt-get install docker-ce +[INFO1 - Host Configuration
-Reading package lists... Done +
-Building dependency tree        +
-Reading state information... Done +
-The following extra packages will be installed: +
-  aufs-tools cgroupfs-mount git git-man libapparmor1 liberror-perl +
-  libnih-dbus1 libnih1 makedev mountall plymouth rsync +
-Suggested packages: +
-  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk +
-  gitweb git-arch git-cvs git-mediawiki git-svn plymouth-themes +
-The following NEW packages will be installed: +
-  aufs-tools cgroupfs-mount docker-ce git git-man libapparmor1 liberror-perl +
-  libnih-dbus1 libnih1 makedev mountall plymouth rsync +
-0 upgraded, 13 newly installed, 0 to remove and 99 not upgraded. +
-Need to get 26.5 MB of archives. +
-After this operation, 123 MB of additional disk space will be used. +
-Do you want to continue? [Y/n +
-</code>+
  
-Dernièrementvérifiez la version de Docker client et serveur :+[INFO] 1.1 - General Configuration 
 +[NOTE] 1.1.1  - Ensure the container host has been Hardened 
 +[INFO] 1.1.2  - Ensure Docker is up to date 
 +[INFO]        * Using 19.03.4verify is it up to date as deemed necessary 
 +[INFO]        * Your operating system vendor may provide support and security maintenance for Docker
  
-<code> +[INFO] 1.2 - Linux Hosts Specific Configuration 
-root@debian9:~# docker version +[WARN] 1.2.1 - Ensure a separate partition for containers has been created 
-Client: Docker Engine Community +[INFO] 1.2.2  - Ensure only trusted users are allowed to control Docker daemon 
- Version:           19.03.4 +[INFO]        * docker:x:999:trainee 
- API version:       1.40 +[WARN] 1.2.3  - Ensure auditing is configured for the Docker daemon 
- Go version:        go1.12.10 +[WARN] 1.2.4  - Ensure auditing is configured for Docker files and directories - /var/lib/docker 
- Git commit:        9013bf583a +[WARN] 1.2.5  - Ensure auditing is configured for Docker files and directories /etc/docker 
- Built:             Fri Oct 18 15:52:34 2019 +[WARN] 1.2.6  - Ensure auditing is configured for Docker files and directories - docker.service 
- OS/Arch:           linux/amd64 +[WARN] 1.2.7  - Ensure auditing is configured for Docker files and directories - docker.socket 
- Experimental:      false+[WARN] 1.2.8  - Ensure auditing is configured for Docker files and directories - /etc/default/docker 
 +[INFO] 1.2.9  - Ensure auditing is configured for Docker files and directories - /etc/sysconfig/docker 
 +[INFO]        * File not found 
 +[INFO] 1.2.10  - Ensure auditing is configured for Docker files and directories - /etc/docker/daemon.json 
 +[INFO]         * File not found 
 +[WARN] 1.2.11  - Ensure auditing is configured for Docker files and directories - /usr/bin/containerd 
 +[INFO] 1.2.12  - Ensure auditing is configured for Docker files and directories - /usr/sbin/runc 
 +[INFO]         * File not found 
 +... 
 +</file>
  
-Server: Docker Engine - Community +Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**.
- Engine: +
-  Version:          19.03.4 +
-  API version:      1.40 (minimum version 1.12) +
-  Go version:       go1.12.10 +
-  Git commit:       9013bf583a +
-  Built:            Fri Oct 18 15:51:05 2019 +
-  OS/Arch:          linux/amd64 +
-  Experimental:     false +
- containerd: +
-  Version:          1.2.10 +
-  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339 +
- runc: +
-  Version:          1.0.0-rc8+dev +
-  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657 +
- docker-init: +
-  Version:          0.18.0 +
-  GitCommit:        fec3683 +
-</code>+
  
-<WRAP center round important> +====3.1 [WARN] 1.2.1 - Ensure a separate partition for containers has been created====
-**Important** Docker est composé de trois éléments : un serveur, un client et un ou plusieur Repositories ou DépôtsNous reviendrons sur les dépôts dans le détail plus tard dans ce cours. +
-</WRAP>+
  
-Re-démarrez la machine virtuelle avant de poursuivre :+Par défaut, tous les fichiers de Docker sont stockés dans le répertoire **/var/lib/docker**, y compris toutes les images, tous les conteneurs et tous les volumes. Sur un système hôte n'ayant qu'une seule partition il y a un risque, tous comme le risque lié au répertoire **/var/log/**, que le disque devient saturé.
  
-<code+====3.2 - [WARN] 1.2.3  - Ensure auditing is configured for the Docker daemon==== 
-root@debian9:~# shutdown -r now + 
-</code>+<file
 +[WARN] 1.2.4  Ensure auditing is configured for Docker files and directories - /var/lib/docker 
 +[WARN] 1.2.5  - Ensure auditing is configured for Docker files and directories - /etc/docker 
 +[WARN] 1.2.6  - Ensure auditing is configured for Docker files and directories - docker.service 
 +[WARN] 1.2.7  - Ensure auditing is configured for Docker files and directories - docker.socket 
 +[WARN] 1.2.8  - Ensure auditing is configured for Docker files and directories - /etc/default/docker 
 +[WARN] 1.2.11  - Ensure auditing is configured for Docker files and directories - /usr/bin/containerd 
 +</file>
  
-====1.2 - Démarrer un Conteneur====+Ces avertissements sont présents parce que **auditd** n'est pas installé et parce qu'il n'y a pas de règles spécifiques au daemon Docker et ses répertoires et fichiers associés
  
-Démarrez un conteneur de l'image hello-world :+Pour installer auditd, utilisez **apt-get** 
  
 <code> <code>
-root@debian9:~docker run hello-world +root@debian9:~/docker-bench-security# apt-get install auditd 
-Unable to find image 'hello-world:latest' locally +</code>
-latest: Pulling from library/hello-world +
-1b930d010525: Pull complete  +
-Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535 +
-Status: Downloaded newer image for hello-world:latest+
  
-Hello from Docker! +Modifiez ensuite le fichier **/etc/audit/rules.d/audit.rules** :
-This message shows that your installation appears to be working correctly.+
  
-To generate this message, Docker took the following steps: +<code> 
- 1The Docker client contacted the Docker daemon+root@debian9:~/docker-bench-security# vi /etc/audit/rules.d/audit.rules 
- 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. +root@debian9:~/docker-bench-security# cat /etc/audit/rules.d/audit.rules 
-    (amd64) +## First rule - delete all 
- 3The Docker daemon created a new container from that image which runs the +-D
-    executable that produces the output you are currently reading. +
- 4. The Docker daemon streamed that output to the Docker client, which sent it +
-    to your terminal.+
  
-To try something more ambitious, you can run an Ubuntu container with: +## Increase the buffers to survive stress events. 
- $ docker run -it ubuntu bash+## Make this bigger for busy systems 
 +-b 8192
  
-Share images, automate workflows, and more with a free Docker ID: +## This determine how long to wait in burst of events 
- https://hub.docker.com/+--backlog_wait_time 0
  
-For more examples and ideas, visit: +## Set failure mode to syslog 
- https://docs.docker.com/get-started/+-f 1 
 + 
 +##Docker 
 +-w /usr/bin/docker -p wa 
 +-w /var/lib/docker -p wa 
 +-w /etc/docker -p wa 
 +-w /lib/systemd/system/docker.service -p wa 
 +-w /lib/systemd/system/docker.socket -p wa 
 +-w /etc/default/docker -p wa 
 +-w /etc/docker/daemon.json -p wa 
 +-w /usr/bin/docker-containerd -p wa 
 +-w /usr/bin/docker-runc -p wa 
 +-w /usr/bin/containerd -p wa
 </code> </code>
  
-<WRAP center round important> +<WRAP center round important 60%
-**Important** - Notez que si l'image servant à générer le conteneur n'est pas présente sur le système hôte, celle-ci est téléchargée automatiquement depuis un dépôt ( par défaut le dépôt **docker.io** ) en utilisant la commande **docker pull**.+**Important** : L'option **-w** indique **watch** et concerne le fichier qui suit. L'option **-p** journalise les modifications éventuelles.
 </WRAP> </WRAP>
  
-Démarrez un conteneur de l'image ubuntu:latest en mode interactif grâce à l'utilisation des options **-i** et **-t** en lui passant en argument **bash** pour que celui-ci soient lancé au démarrage du conteneur :+Re-démarrez ensuite auditd :
  
 <code> <code>
-root@debian9:~docker run -it ubuntu bash +root@debian9:~/docker-bench-securitysystemctl restart auditd
-Unable to find image 'ubuntu:latest' locally +
-latest: Pulling from library/ubuntu +
-898c46f3b1a1: Pull complete  +
-63366dfa0a50: Pull complete  +
-041d4cd74a92: Pull complete  +
-6e1bee0f8701: Pull complete  +
-Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8 +
-Status: Downloaded newer image for ubuntu:latest +
-root@3a3f9bda6cbd:/ls +
-bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +
-root@3a3f9bda6cbd:/# cat /etc/lsb-release +
-DISTRIB_ID=Ubuntu +
-DISTRIB_RELEASE=18.04 +
-DISTRIB_CODENAME=bionic +
-DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"+
 </code> </code>
  
-<WRAP center round important> +Vérifiez ensuite la prise en charge des règles : 
-**Important** - Notez que dans ce cas le conteneur est lancé avec comme argument **bash** qui lancera /bin/bash dans le conteneur.+ 
 +<code> 
 +root@debian9:~/docker-bench-security# cat /etc/audit/audit.rules 
 +## This file is automatically generated from /etc/audit/rules.d 
 +-D 
 +-b 8192 
 +-f 1 
 +--backlog_wait_time 0 
 +-w /usr/bin/docker -p wa 
 +-w /var/lib/docker -p wa 
 +-w /etc/docker -p wa 
 +-w /lib/systemd/system/docker.service -p wa 
 +-w /lib/systemd/system/docker.socket -p wa 
 +-w /etc/default/docker -p wa 
 +-w /etc/docker/daemon.json -p wa 
 +-w /usr/bin/docker-containerd -p wa 
 +-w /usr/bin/docker-runc -p wa 
 +-w /usr/bin/containerd -p wa 
 +</code> 
 + 
 +<WRAP center round important 60%
 +**Important** - Pour plus d'information concernant la création de règles personalisées avec auditd, consultez cette **[[https://www.linux.com/tutorials/customized-file-monitoring-auditd/|page]]**.
 </WRAP> </WRAP>
  
-Consulter la liste des paquets installés dans le conteneur ubuntu :+Ré-exécutez le script **Docker Benchmark Security** :
  
 <code> <code>
-root@835001339e79:/# dpkg -+root@debian9:~/docker-bench-security# ./docker-bench-security.sh  
-Desired=Unknown/Install/Remove/Purge/Hold +... 
-| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend +[PASS] 1.2.4  - Ensure auditing is configured for Docker files and directories - /var/lib/docker 
-|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) +[PASS] 1.2. Ensure auditing is configured for Docker files and directories - /etc/docker 
-||/ Name                                 Version                 Architecture            Description +[PASS] 1.2.6  - Ensure auditing is configured for Docker files and directories docker.service 
-+++-====================================-=======================-=======================-============================================================================= +[PASS] 1.2.7  - Ensure auditing is configured for Docker files and directories docker.socket 
-ii  adduser                              3.116ubuntu1            all                     add and remove users and groups +[PASS] 1.2.8  - Ensure auditing is configured for Docker files and directories /etc/default/docker 
-ii  apt                                  1.6.8                   amd64                   commandline package manager +... 
-ii  base-files                           10.1ubuntu2.4           amd64                   Debian base system miscellaneous files +[PASS] 1.2.11 Ensure auditing is configured for Docker files and directories - /usr/bin/containerd 
-ii  base-passwd                          3.5.44                  amd64                   Debian base system master password and group files +...
-ii  bash                                 4.4.18-2ubuntu1         amd64                   GNU Bourne Again SHell +
-ii  bsdutils                             1:2.31.1-0.4ubuntu3.3   amd64                   basic utilities from 4.4BSD-Lite +
-ii  bzip2                                1.0.6-8.1               amd64                   high-quality block-sorting file compressor - utilities +
-ii  coreutils                            8.28-1ubuntu1           amd64                   GNU core utilities +
-ii  dash                                 0.5.8-2.10              amd64                   POSIX-compliant shell +
-ii  debconf                              1.5.66                  all                     Debian configuration management system +
-ii  debianutils                          4.8.4                   amd64                   Miscellaneous utilities specific to Debian +
-ii  diffutils                            1:3.6-1                 amd64                   File comparison utilities +
-ii  dpkg                                 1.19.0.5ubuntu2.1       amd64                   Debian package management system +
-ii  e2fsprogs                            1.44.1-1ubuntu1.1       amd64                   ext2/ext3/ext4 file system utilities +
-ii  fdisk                                2.31.1-0.4ubuntu3.3     amd64                   collection of partitioning utilities +
-ii  findutils                            4.6.0+git+20170828-2    amd64                   utilities for finding files--find, xargs +
-ii  gcc-8-base:amd64                     8.2.0-1ubuntu2~18.04    amd64                   GCC, the GNU Compiler Collection (base package) +
-ii  gpgv                                 2.2.4-1ubuntu1.2        amd64                   GNU privacy guard - signature verification tool +
-ii  grep                                 3.1-2                   amd64                   GNU grep, egrep and fgrep +
-ii  gzip                                 1.6-5ubuntu1            amd64                   GNU compression utilities +
-ii  hostname                             3.20                    amd64                   utility to set/show the host name or domain name +
-ii  init-system-helpers                  1.51                    all                     helper tools for all init systems +
-ii  libacl1:amd64                        2.2.52-3build1          amd64                   Access control list shared library +
-ii  libapt-pkg5.0:amd64                  1.6.8                   amd64                   package management runtime library +
-ii  libattr1:amd64                       1:2.4.47-2build1        amd64                   Extended attribute shared library +
-ii  libaudit-common                      1:2.8.2-1ubuntu1        all                     Dynamic library for security auditing - common files +
-ii  libaudit1:amd64                      1:2.8.2-1ubuntu1        amd64                   Dynamic library for security auditing +
-ii  libblkid1:amd64                      2.31.1-0.4ubuntu3.3     amd64                   block device ID library +
-ii  libbz2-1.0:amd64                     1.0.6-8.1               amd64                   high-quality block-sorting file compressor library - runtime +
-ii  libc-bin                             2.27-3ubuntu1           amd64                   GNU C Library: Binaries +
-ii  libc6:amd64                          2.27-3ubuntu1           amd64                   GNU C Library: Shared libraries +
-ii  libcap-ng0:amd64                     0.7.7-3.1               amd64                   An alternate POSIX capabilities library +
-ii  libcom-err2:amd64                    1.44.1-1ubuntu1.1       amd64                   common error description library +
-ii  libdb5.3:amd64                       5.3.28-13.1ubuntu1      amd64                   Berkeley v5.3 Database Libraries [runtime] +
-ii  libdebconfclient0:amd64              0.213ubuntu1            amd64                   Debian Configuration Management System (C-implementation library) +
-ii  libext2fs2:amd64                     1.44.1-1ubuntu1.1       amd64                   ext2/ext3/ext4 file system libraries +
-ii  libfdisk1:amd64                      2.31.1-0.4ubuntu3.3     amd64                   fdisk partitioning library +
-ii  libffi6:amd64                        3.2.1-                amd64                   Foreign Function Interface library runtime +
-ii  libgcc1:amd64                        1:8.2.0-1ubuntu2~18.04  amd64                   GCC support library +
-ii  libgcrypt20:amd64                    1.8.1-4ubuntu1.1        amd64                   LGPL Crypto library - runtime library +
-ii  libgmp10:amd64                       2:6.1.2+dfsg-2          amd64                   Multiprecision arithmetic library +
-ii  libgnutls30:amd64                    3.5.18-1ubuntu1         amd64                   GNU TLS library - main runtime library +
-ii  libgpg-error0:amd64                  1.27-6                  amd64                   library for common error values and messages in GnuPG components +
-ii  libhogweed4:amd64                    3.4-1                   amd64                   low level cryptographic library (public-key cryptos) +
-ii  libidn2-0:amd64                      2.0.4-1.1build2         amd64                   Internationalized domain names (IDNA2008/TR46) library +
-ii  liblz4-1:amd64                       0.0~r131-2ubuntu3       amd64                   Fast LZ compression algorithm library - runtime +
-ii  liblzma5:amd64                       5.2.2-1.3               amd64                   XZ-format compression library +
-ii  libmount1:amd64                      2.31.1-0.4ubuntu3.3     amd64                   device mounting library +
-ii  libncurses5:amd64                    6.1-1ubuntu1.18.04      amd64                   shared libraries for terminal handling +
-ii  libncursesw5:amd64                   6.1-1ubuntu1.18.04      amd64                   shared libraries for terminal handling (wide character support) +
-ii  libnettle6:amd64                     3.4-1                   amd64                   low level cryptographic library (symmetric and one-way cryptos) +
-ii  libp11-kit0:amd64                    0.23.9-2                amd64                   library for loading and coordinating access to PKCS#11 modules - runtime +
-ii  libpam-modules:amd64                 1.1.8-3.6ubuntu2.18.04. amd64                   Pluggable Authentication Modules for PAM +
-ii  libpam-modules-bin                   1.1.8-3.6ubuntu2.18.04. amd64                   Pluggable Authentication Modules for PAM - helper binaries +
-ii  libpam-runtime                       1.1.8-3.6ubuntu2.18.04. all                     Runtime support for the PAM library +
-ii  libpam0g:amd64                       1.1.8-3.6ubuntu2.18.04. amd64                   Pluggable Authentication Modules library +
-ii  libpcre3:amd64                       2:8.39-9                amd64                   Old Perl 5 Compatible Regular Expression Library - runtime files +
-ii  libprocps6:amd64                     2:3.3.12-3ubuntu1.1     amd64                   library for accessing process information from /proc +
-ii  libseccomp2:amd64                    2.3.1-2.1ubuntu4        amd64                   high level interface to Linux seccomp filter +
-ii  libselinux1:amd64                    2.7-2build2             amd64                   SELinux runtime shared libraries +
-ii  libsemanage-common                   2.7-2build2             all                     Common files for SELinux policy management libraries +
-ii  libsemanage1:amd64                   2.7-2build2             amd64                   SELinux policy management library +
-ii  libsepol1:amd64                      2.7-1                   amd64                   SELinux library for manipulating binary security policies +
-ii  libsmartcols1:amd64                  2.31.1-0.4ubuntu3.3     amd64                   smart column output alignment library +
-ii  libss2:amd64                         1.44.1-1ubuntu1.1       amd64                   command-line interface parsing library +
-ii  libstdc++6:amd64                     8.2.0-1ubuntu2~18.04    amd64                   GNU Standard C++ Library v3 +
-ii  libsystemd0:amd64                    237-3ubuntu10.13        amd64                   systemd utility library +
-ii  libtasn1-6:amd64                     4.13-2                  amd64                   Manage ASN.1 structures (runtime) +
-ii  libtinfo5:amd64                      6.1-1ubuntu1.18.04      amd64                   shared low-level terminfo library for terminal handling +
-ii  libudev1:amd64                       237-3ubuntu10.13        amd64                   libudev shared library +
-ii  libunistring2:amd64                  0.9.9-0ubuntu1          amd64                   Unicode string library for C +
-ii  libuuid1:amd64                       2.31.1-0.4ubuntu3.3     amd64                   Universally Unique ID library +
-ii  libzstd1:amd64                       1.3.3+dfsg-2ubuntu1     amd64                   fast lossless compression algorithm +
-ii  login                                1:4.5-1ubuntu1          amd64                   system login tools +
-ii  lsb-base                             9.20170808ubuntu1       all                     Linux Standard Base init script functionality +
-ii  mawk                                 1.3.3-17ubuntu3         amd64                   a pattern scanning and text processing language +
-ii  mount                                2.31.1-0.4ubuntu3.3     amd64                   tools for mounting and manipulating filesystems +
-ii  ncurses-base                         6.1-1ubuntu1.18.04      all                     basic terminal type definitions +
-ii  ncurses-bin                          6.1-1ubuntu1.18.04      amd64                   terminal-related programs and man pages +
-ii  passwd                               1:4.5-1ubuntu1          amd64                   change and administer password and group data +
-ii  perl-base                            5.26.1-6ubuntu0.3       amd64                   minimal Perl system +
-ii  procps                               2:3.3.12-3ubuntu1.1     amd64                   /proc file system utilities +
-ii  sed                                  4.4-2                   amd64                   GNU stream editor for filtering/transforming text +
-ii  sensible-utils                       0.0.12                  all                     Utilities for sensible alternative selection +
-ii  sysvinit-utils                       2.88dsf-59.10ubuntu1    amd64                   System-V-like utilities +
-ii  tar                                  1.29b-2ubuntu0.1        amd64                   GNU version of the tar archiving utility +
-ii  ubuntu-keyring                       2018.09.18.1~18.04.0    all                     GnuPG keys of the Ubuntu archive +
-ii  util-linux                           2.31.1-0.4ubuntu3.3     amd64                   miscellaneous system utilities +
-ii  zlib1g:amd64                         1:1.2.11.dfsg-0ubuntu2  amd64                   compression library - runtime +
-root@835001339e79:/# exit +
-exit +
-root@debian9:~# +
 </code> </code>
  
-Les options de la commande docker run peuvent être visualisées avec la commande :+=====LAB #4 - Sécurisation de la Configuration du daemon Docker=====
  
-<code> +Exécutez de nouveau le script **docker-bench-security.sh**. Vous devez obtenir un résultat similaire à ceci en ce qui concerne la sécurité de la configuration du daemon Docker :
-root@debian9:~# docker run --help+
  
-Usage: docker run [OPTIONSIMAGE [COMMAND] [ARG...]+<file> 
 +... 
 +[INFO2 - Docker daemon configuration 
 +[WARN2.1  - Ensure network traffic is restricted between containers on the default bridge 
 +[PASS] 2.2  - Ensure the logging level is set to 'info' 
 +[PASS] 2.3  - Ensure Docker is allowed to make changes to iptables 
 +[PASS] 2.4  - Ensure insecure registries are not used 
 +[PASS2.5  - Ensure aufs storage driver is not used 
 +[INFO] 2.6  - Ensure TLS authentication for Docker daemon is configured 
 +[INFO]      * Docker daemon not listening on TCP 
 +[INFO] 2.7  - Ensure the default ulimit is configured appropriately 
 +[INFO]      * Default ulimit doesn't appear to be set 
 +[WARN] 2.8  - Enable user namespace support 
 +[PASS] 2.9  - Ensure the default cgroup usage has been confirmed 
 +[PASS] 2.10  - Ensure base device size is not changed until needed 
 +[WARN] 2.11  - Ensure that authorization for Docker client commands is enabled 
 +[WARN] 2.12  - Ensure centralized and remote logging is configured 
 +[PASS] 2.13  - Ensure live restore is Enabled (Incompatible with swarm mode) 
 +[WARN] 2.14  - Ensure Userland Proxy is Disabled 
 +[PASS] 2.15  - Ensure that a daemon-wide custom seccomp profile is applied if appropriate 
 +[PASS] 2.16  - Ensure that experimental features are not implemented in production 
 +[WARN] 2.17  - Ensure containers are restricted from acquiring new privileges 
 +... 
 +</file>
  
-Run a command in a new container+Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**.
  
-Options: +====4.1 - [WARN2.1  - Ensure network traffic is restricted between containers on the default bridge====
-      --add-host list                  Add a custom host-to-IP mapping (host:ip) +
-  -a, --attach list                    Attach to STDIN, STDOUT or STDERR +
-      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) +
-      --blkio-weight-device list       Block IO weight (relative device weight) (default []+
-      --cap-add list                   Add Linux capabilities +
-      --cap-drop list                  Drop Linux capabilities +
-      --cgroup-parent string           Optional parent cgroup for the container +
-      --cidfile string                 Write the container ID to the file +
-      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period +
-      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota +
-      --cpu-rt-period int              Limit CPU real-time period in microseconds +
-      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds +
-  -c, --cpu-shares int                 CPU shares (relative weight) +
-      --cpus decimal                   Number of CPUs +
-      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1+
-      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1) +
-  -d, --detach                         Run container in background and print container ID +
-      --detach-keys string             Override the key sequence for detaching a container +
-      --device list                    Add a host device to the container +
-      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list +
-      --device-read-bps list           Limit read rate (bytes per second) from a device (default []) +
-      --device-read-iops list          Limit read rate (IO per second) from a device (default []) +
-      --device-write-bps list          Limit write rate (bytes per second) to a device (default []) +
-      --device-write-iops list         Limit write rate (IO per second) to a device (default []) +
-      --disable-content-trust          Skip image verification (default true) +
-      --dns list                       Set custom DNS servers +
-      --dns-option list                Set DNS options +
-      --dns-search list                Set custom DNS search domains +
-      --entrypoint string              Overwrite the default ENTRYPOINT of the image +
-  -e, --env list                       Set environment variables +
-      --env-file list                  Read in a file of environment variables +
-      --expose list                    Expose a port or a range of ports +
-      --group-add list                 Add additional groups to join +
-      --health-cmd string              Command to run to check health +
-      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s) +
-      --health-retries int             Consecutive failures needed to report unhealthy +
-      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) +
-      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s) +
-      --help                           Print usage +
-  -h, --hostname string                Container host name +
-      --init                           Run an init inside the container that forwards signals and reaps processes +
-  -i, --interactive                    Keep STDIN open even if not attached +
-      --ip string                      IPv4 address (e.g., 172.30.100.104) +
-      --ip6 string                     IPv6 address (e.g., 2001:db8::33) +
-      --ipc string                     IPC mode to use +
-      --isolation string               Container isolation technology +
-      --kernel-memory bytes            Kernel memory limit +
-  -l, --label list                     Set meta data on a container +
-      --label-file list                Read in a line delimited file of labels +
-      --link list                      Add link to another container +
-      --link-local-ip list             Container IPv4/IPv6 link-local addresses +
-      --log-driver string              Logging driver for the container +
-      --log-opt list                   Log driver options +
-      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33) +
-  -m, --memory bytes                   Memory limit +
-      --memory-reservation bytes       Memory soft limit +
-      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap +
-      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1) +
-      --mount mount                    Attach a filesystem mount to the container +
-      --name string                    Assign a name to the container +
-      --network string                 Connect a container to a network (default "default"+
-      --network-alias list             Add network-scoped alias for the container +
-      --no-healthcheck                 Disable any container-specified HEALTHCHECK +
-      --oom-kill-disable               Disable OOM Killer +
-      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000) +
-      --pid string                     PID namespace to use +
-      --pids-limit int                 Tune container pids limit (set -1 for unlimited) +
-      --privileged                     Give extended privileges to this container +
-  -p, --publish list                   Publish a container's port(s) to the host +
-  -P, --publish-all                    Publish all exposed ports to random ports +
-      --read-only                      Mount the container's root filesystem as read only +
-      --restart string                 Restart policy to apply when a container exits (default "no"+
-      --rm                             Automatically remove the container when it exits +
-      --runtime string                 Runtime to use for this container +
-      --security-opt list              Security Options +
-      --shm-size bytes                 Size of /dev/shm +
-      --sig-proxy                      Proxy received signals to the process (default true) +
-      --stop-signal string             Signal to stop a container (default "SIGTERM"+
-      --stop-timeout int               Timeout (in seconds) to stop a container +
-      --storage-opt list               Storage driver options for the container +
-      --sysctl map                     Sysctl options (default map[]) +
-      --tmpfs list                     Mount a tmpfs directory +
-  -t, --tty                            Allocate a pseudo-TTY +
-      --ulimit ulimit                  Ulimit options (default []) +
-  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>]) +
-      --userns string                  User namespace to use +
-      --uts string                     UTS namespace to use +
-  -v, --volume list                    Bind mount a volume +
-      --volume-driver string           Optional volume driver for the container +
-      --volumes-from list              Mount volumes from the specified container(s) +
-  -w, --workdir string                 Working directory inside the container +
-</code>+
  
-====1.3 - Consulter la Liste des Conteneurs et Images====+Par défaut Docker permet un trafic réseau sans restrictions entre des conteneurs sur le même hôteIl est cependant possible de modifier la configuration par défaut. Pour empêcher ceci, il faut fixer la valeur de **icc** à **false**. De cette façon, docker crée des conteneurs qui peuvent communiquer entre eux **uniquement** s'il existe un lien.
  
-Pour consulter tous les conteneursutilisez la commande **docker ps** avec l'option **-a** :+Pour plus d'informationsconsultez cette **[[https://docs.docker.com/engine/userguide/networking/|page]]**.
  
-<code> +====4.2 [WARN] 2.8  Enable user namespace support====
-root@debian9:~# docker ps -+
-CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                       PORTS               NAMES +
-3a3f9bda6cbd        ubuntu              "bash"              About a minute ago   Exited (127) 3 seconds ago                       wizardly_buck +
-26ef17bd115d        hello-world         "/hello"            8 minutes ago        Exited (0) 8 minutes ago                         angry_chaplygin +
-</code>+
  
-<WRAP center round important> +Cet avertissement nous indique que l'utilisation des **user namespaces** n'est pas activée. Le support des **user namespaces** du noyau Linux permet d'attribuer une plage d'UIDs et de GIDs unique à un processus et donc à un conteneur, en dehors de la plage traditionnelle utilisée par l'hôte Docker. L'avantage ici est que les processus ayant l'UID de root dans le conteneur seront mappés à un UID sans privilèges dans l'hôte Docker. Pour utiliser user namespace, il faut fixer la valeur de **userns-remap** à **default**. Dans ce cas précis Docker crée un utilisateur dénommé **dockremap**. Notez qu'il est aussi possible de fixer vos propres valeurs avec **"userns-remap": "user:group"**.
-**Important** - Notez que chaque conteneur peut être référencé par son **CONTAINER ID** ou par son **NAME**. +
-</WRAP>+
  
-Pour consulter la liste des imagesutilisez la commande **docker images** :+Pour plus d'informationsconsultez cette **[[https://docs.docker.com/engine/security/userns-remap/|page]]**.
  
-<code> +====4.3 - [WARN] 2.11  - Ensure that authorization for Docker client commands is enabled====
-root@debian9:~# docker images +
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +
-ubuntu              latest              94e814e2efa8        weeks ago         88.9MB +
-hello-world         latest              fce289e99eb9        months ago        4.84kB +
-</code>+
  
-<WRAP center round important> +Par défaut, Docker permet un accès sans restrictions aux daemon Docker. Il est possible de restreindre l'accès à des utilisateurs authentifiés en utilisant un plug-in. Cette ligne est sans importance parce que l'accès au socket local Docker est limité aux membres du groupe **docker** (voir DOF202 La Sécurité de la Configuration de l'Hôte Docker)
-**Important** - Notez que chaque image est référencée par son IMAGE ID. +
-</WRAP>+
  
-====1.4 - Rechercher une Image dans un Dépôt====+Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/extend/plugins_authorization/|page]]**.
  
-Pour rechercher une image docker dans le dépôt par défaut, utilisez la commande **docker search** :+====4.4 - [WARN] 2.12  - Ensure centralized and remote logging is configured====
  
-<code> +Cet avertissement indique que la configuration de rsyslog ne permet pas l'envoie des traces vers un serveur de journalisation distantElle indique aussi que la valeur de **log-driver** n'a pas été spécifiéePour activer cette configuration, il faut fixer la valeur de **log-driver** à **syslog** puis configurer **syslog** ainsi que la valeur de **log-opts** correctement.
-root@debian9:~# docker search --filter=stars=5 centos +
-NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED +
-centos                            The official build of CentOS                  5288                [OK]                 +
-ansible/centos7-ansible           Ansible on Centos7                              121                                     [OK] +
-jdeathe/centos-ssh                CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   107                                     [OK] +
-consol/centos-xfce-vnc            Centos container with "headless" VNC session…   84                                      [OK] +
-imagine10255/centos6-lnmp-php56   centos6-lnmp-php56                              53                                      [OK] +
-centos/mysql-57-centos7           MySQL 5.7 SQL database server                   50                                       +
-tutum/centos                      Simple CentOS docker image with SSH access      44                                       +
-gluster/gluster-centos            Official GlusterFS Image [ CentOS-7 +  Glust…   40                                      [OK] +
-openshift/base-centos7            A Centos7 derived base image for Source-To-I…   40                                       +
-centos/postgresql-96-centos7      PostgreSQL is an advanced Object-Relational …   37                                       +
-centos/python-35-centos7          Platform for building and running Python 3.5…   34                                       +
-kinogmt/centos-ssh                CentOS with SSH                                 26                                      [OK] +
-centos/httpd-24-centos7           Platform for running Apache httpd 2.4 or bui…   22                                       +
-centos/php-56-centos7             Platform for building and running PHP 5.6 ap…   20                                       +
-openshift/jenkins-2-centos7       A Centos7 based Jenkins v2.x image for use w…   20                                       +
-pivotaldata/centos-gpdb-dev       CentOS image for GPDB developmentTag names…   10                                       +
-openshift/wildfly-101-centos7     A Centos7 based WildFly v10.1 image for use …                         +
-</code>+
  
-<WRAP center round important> +Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/admin/logging/overview/|page]]**.
-**Important** - Notez que chaque image est référencée par la colonne NAMELe NAME est sous le format **repository/mainteneur/nom** sauf dans le cas où il s'agit de l'image "officielle" de l'éditeur au quel cas le format est simplement **repository/nom**. La notion de STARS ( étoiles ) vient de Docker Hub et est une indication de la satisfaction de la communauté. +
-</WRAP>+
  
-====1.5 - Supprimer un Conteneur d'une Image====+====4.5 - [WARN] 2.14  - Ensure Userland Proxy is Disabled====
  
-Pour supprimer un conteneur d'une image, il convient d'utiliser la commande **docker rm** en référencant le conteneur soit par son **NAME** soit par son CONTAINER ID :+Il existe deux méthodes pour qu'un conteneur puisse router vers l'extérieur :
  
-<code> +  * le mode **Hairpin NAT**, 
-root@debian9:~# docker ps -a +  * **Userland Proxy**.
-CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES +
-3a3f9bda6cbd        ubuntu              "bash"              7 minutes ago       Exited (127) 5 minutes ago                       wizardly_buck +
-26ef17bd115d        hello-world         "/hello"            13 minutes ago      Exited (0) 13 minutes ago                        angry_chaplygin +
-root@debian9:~# docker rm wizardly_buck +
-wizardly_buck +
-root@debian9:~# docker ps -a +
-CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES +
-26ef17bd115d        hello-world         "/hello"            14 minutes ago      Exited (0) 14 minutes ago                       angry_chaplygin +
-root@debian9:~# docker images +
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +
-ubuntu              latest              94e814e2efa8        4 weeks ago         88.9MB +
-hello-world         latest              fce289e99eb9        3 months ago        4.84kB +
-</code>+
  
-<WRAP center round important> +Il est préférable d'utiliser le mode Hairpin NAT qui peut utilise Iptables et qui possède de meilleures performances. La plupart des systèmes d'opération modernes peuvent utiliser le mode Hairpin NATPour désactiver Userland Proxyil faut fixer la valeur de **userland-proxy** à **false**.
-**Important** - Notez que dans le cas de l'utilisation du CONTAINER ID, il n'est pas necéssaire d'utiliser la totalité de l'IDPar exempledans le cas ci-dessus, le CONTAINER ID du conteneur **wizardly_buck** était **3a3f9bda6cbd**. La commande de suppression aurait pu utilisé **3a3f9bda6cbd**, **3a3f9b** ou même **3a3**. +
-</WRAP>+
  
-====1.6 -Créer une Image à partir d'un Conteneur Modifié===+Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/userguide/networking/default_network/binding/|page]]**.
  
-Modifier un conteneur d'une image :+====4.6 - [WARN] 2.17  - Ensure containers are restricted from acquiring new privileges====
  
-<code> +Par défaut un conteneur peut obtenir une escalade de privilèges en utilisant les binaires setuid ou setgid. Pour interdire ceci il faut fixer la valeur de **no-new-privileges** à **true**.
-root@debian9:~# docker run -it ubuntu +
-root@54b0dae2f3a9:/# ls +
-bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +
-root@54b0dae2f3a9:/# rm -rf /home +
-root@54b0dae2f3a9:/# ls +
-bin  boot  dev  etc  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +
-root@54b0dae2f3a9:/# exit +
-exit +
-root@debian9:~#  +
-</code>+
  
-<WRAP center round important> +Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/userguide/networking/default_network/binding/|page]]**. 
-**Important** - Notez ici la suppression du répertoire **home** dans le conteneur **54b0dae2f3a9**. + 
-</WRAP>+====4.7 - Le Fichier /etc/docker/daemon.json ====
  
-Consultez la différence entre le conteneur et l'image de base :+Créez le fichier **/etc/docker/daemon.json** 
  
 <code> <code>
-root@debian9:~docker ps -+root@debian9:~/docker-bench-security# vi /etc/docker/daemon.json 
-CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES +root@debian9:~/docker-bench-security# cat /etc/docker/daemon.json 
-54b0dae2f3a9        ubuntu              "/bin/bash"         About a minute ago   Exited (0) About a minute ago                       tender_mendeleev +
-26ef17bd115d        hello-world         "/hello"            18 minutes ago       Exited (0) 18 minutes ago                           angry_chaplygin +    "icc": false, 
-root@debian9:~docker diff tender_mendeleev +    "userns-remap": "default", 
-/root +    "log-driver": "syslog", 
-/root/.bash_history +    "live-restore": true, 
-D /home+    "userland-proxy": false, 
 +    "no-new-privileges": true 
 +}
 </code> </code>
  
-<WRAP center round important> +Notez ici que **live-restore** est fixé à **true**. Ceci permet aux conteneurs de continuer à fonctionner même quand le daemon Docker ne fonctionne pas. Ceci est utile pendant la mise-à-jour de Docker.
-**Important** - La sortie de la commande **docker diff** comporte des lettres dont les significations sont les suivantes : C = Create, D = Delete, A = Add. +
-</WRAP>+
  
-Créez un autre conteneur à partir de l'image de base :+Re-démarrez le service Docker :
  
 <code> <code>
-root@debian9:~docker run -it ubuntu +root@debian9:~/docker-bench-securitysystemctl restart docker
-root@92f0d4bb7967:/# ls +
-bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +
-root@92f0d4bb7967:/# exit +
-exit +
-root@debian9:~+
 </code> </code>
  
-<WRAP center round important> +Vérifiez la présence de l'utilisateur dénommé **dockremap** :
-**Important** - Dans ce nouveau conteneur, le répertoire **/home** est présent compte tenu du fait qu'il a été généré à partir de l'image d'origine, inchangée depuis sa compilation. +
-</WRAP> +
- +
-Créez maintenant l'image **ubuntu_1** à partir du conteneur **competent_pasteur** en utilisant la commande **docker commit** :+
  
 <code> <code>
-root@debian9:~docker ps -a +root@debian9:~/docker-bench-security# id dockremap 
-CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES +uid=116(dockremapgid=121(dockremapgroupes=121(dockremap)
-92f0d4bb7967        ubuntu              "/bin/bash"         39 seconds ago      Exited (032 seconds ago                       musing_benz +
-54b0dae2f3a9        ubuntu              "/bin/bash"         3 minutes ago       Exited (03 minutes ago                        tender_mendeleev +
-26ef17bd115d        hello-world         "/hello"            19 minutes ago      Exited (019 minutes ago                       angry_chaplygin +
-root@debian9:~# docker commit tender_mendeleev ubuntu_1 +
-sha256:2ba8e0ec5e38332c8ab15c4b33fd140a9c74d72231d05a6965c40a39fbb44584 +
-root@debian9:~# docker images +
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +
-ubuntu_1            latest              2ba8e0ec5e38        15 seconds ago      88.9MB +
-ubuntu              latest              94e814e2efa8        4 weeks ago         88.9MB +
-hello-world         latest              fce289e99eb9        3 months ago        4.84kB+
 </code> </code>
  
-====1.7 Supprimer une Image==== +-exécutez le script **Docker Benchmark Security** :
- +
-Créez maintenant un conteneur à partir de la nouvelle image **ubuntu_1** :+
  
 <code> <code>
-root@debian9:~# docker run -it ubuntu_1 +root@debian9:~# cd docker-bench-security/ 
-root@904215fb79b4:/# ls +root@debian9:~/docker-bench-security./docker-bench-security.sh  
-bin  boot  dev  etc  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +... 
-root@904215fb79b4:/# exit +[PASS] 2.1  - Ensure network traffic is restricted between containers on the default bridge 
-exit +... 
-root@debian9:~# +[PASS] 2.8  - Enable user namespace support 
 +... 
 +[WARN] 2.11  - Ensure that authorization for Docker client commands is enabled 
 +[PASS] 2.12  - Ensure centralized and remote logging is configured 
 +... 
 +[PASS] 2.14  - Ensure Userland Proxy is Disabled 
 +... 
 +[PASS] 2.17  - Ensure containers are restricted from acquiring new privileges 
 +...
 </code> </code>
  
-<WRAP center round important> +Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file/|page]]**.
-**Important** - Notez l'absence du répertoire **home** dans le conteneur **904215fb79b4**. +
-</WRAP>+
  
-Essayez de supprimer l'image **ubuntu_1** :+=====LAB #5 - Sécurisation des Images et les Fichiers de Construction===== 
 + 
 +Créez le conteneur mysql :
  
 <code> <code>
-root@debian9:~# docker rmi ubuntu_1 +root@debian9:~/docker-bench-security# docker container run -d --name mysql -e MYSQL_ROOT_PASSWORD=password mysql 
-Error response from daemonconflictunable to remove repository reference "ubuntu_1" (must force) - container 904215fb79b4 is using its referenced image 2ba8e0ec5e38 +Unable to find image 'mysql:latest' locally 
-root@debian9:~# docker ps -a +latest: Pulling from library/mysql 
-CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES +80369df48736Pull complete  
-904215fb79b4        ubuntu_1            "/bin/bash        About a minute ago   Exited (0) 49 seconds ago                       priceless_swirles +e8f52315cb10Pull complete  
-92f0d4bb7967        ubuntu              "/bin/bash"         2 minutes ago        Exited (0) 2 minutes ago                        musing_benz +cf2189b391fc: Pull complete  
-54b0dae2f3a9        ubuntu              "/bin/bash"         6 minutes ago        Exited (0) 5 minutes ago                        tender_mendeleev +cc98f645c682: Pull complete  
-26ef17bd115d        hello-world         "/hello"            22 minutes ago       Exited (0) 22 minutes ago                       angry_chaplygin+27a27ac83f74: Pull complete  
 +fa1f04453414: Pull complete  
 +d45bf7d22d33: Pull complete  
 +3dbac26e409c: Pull complete  
 +9017140fb8c1: Pull complete  
 +b76dda2673ae: Pull complete  
 +bea9eb46d12a: Pull complete  
 +e1f050a38d0f: Pull complete  
 +Digest: sha256:7345ce4ce6f0c1771d01fa333b8edb2c606ca59d385f69575f8e3e2ec6695eee 
 +Status: Downloaded newer image for mysql:latest 
 +54606c03c52c5e3ec0328029d69b869d4b285fb433015576dedc8b8dd4ad0494 
 +root@debian9:~/docker-bench-security# docker ps -a 
 +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                 NAMES 
 +54606c03c52c        mysql               "docker-entrypoint.s…  seconds ago       Up 4 seconds               3306/tcp, 33060/tcp   mysql
 </code> </code>
  
-<WRAP center round important> +Exécutez de nouveau le script **docker-bench-security.sh**. Vous devez obtenir un résultat similaire à ceci en ce qui concerne la sécurité des images et les fichiers de leur construction :
-**Important** - Notez qu'il n'est pas possible de supprimer l'image **ubuntu_1** tant que le conteneur **priceless_swirles** soit actif. +
-</WRAP> +
- +
-Supprimez donc le conteneur **priceless_swirles** ainsi que l'image **ubuntu_1** :+
  
 <code> <code>
-root@debian9:~# docker rm priceless_swirles +root@debian9:~/docker-bench-security./docker-bench-security.sh 
-priceless_swirles +... 
-root@debian9:~# docker ps -a +[INFO] 4 Container Images and Build File 
-CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES +[WARN] 4.1  - Ensure user for the container has been created 
-92f0d4bb7967        ubuntu              "/bin/bash"         minutes ago       Exited (0) minutes ago                        musing_benz +[WARN]      * Running as root: mysql 
-54b0dae2f3a9        ubuntu              "/bin/bash"         7 minutes ago       Exited (0) 6 minutes ago                        tender_mendeleev +[NOTE] 4.2  - Ensure that containers use only trusted base images 
-26ef17bd115d        hello-world         "/hello"            23 minutes ago      Exited (0) 23 minutes ago                       angry_chaplygin +[NOTE] 4. - Ensure that unnecessary packages are not installed in the container 
-root@debian9:~# docker rmi ubuntu_1 +[NOTE] 4.4  - Ensure images are scanned and rebuilt to include security patches 
-Untaggedubuntu_1:latest +[WARN] 4.5  Ensure Content trust for Docker is Enabled 
-Deletedsha256:2ba8e0ec5e38332c8ab15c4b33fd140a9c74d72231d05a6965c40a39fbb44584 +[WARN] 4.6  - Ensure that HEALTHCHECK instructions have been added to container images 
-Deletedsha256:308e9761a8fc84661e46eff564b0bbca12b458e71bdf77bf4abbb59b21efdbbe +[WARN]      * No Healthcheck found[alpine:latest] 
-root@debian9:~# docker images +[WARN]      * No Healthcheck found[mysql:latest] 
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +[INFO] 4.7  - Ensure update instructions are not use alone in the Dockerfile 
-ubuntu              latest              94e814e2efa8        weeks ago         88.9MB +[INFO]      * Update instruction found[mysql:latest] 
-hello-world         latest              fce289e99eb9        3 months ago        1.84kB+[NOTE] 4.8  - Ensure setuid and setgid permissions are removed 
 +[PASS] 4.9  - Ensure that COPY is used instead of ADD in Dockerfiles 
 +[NOTE] 4.10  - Ensure secrets are not stored in Dockerfiles 
 +[NOTE] 4.11  Ensure only verified packages are installed 
 +...
 </code> </code>
  
-Pour pouvoir supprimer tous les conteneurslistez-les par leur **Container ID** :+====5.1 - [WARN] 4.1  - Ensure a user for the container has been created==== 
 + 
 +Les processus dans le conteneur **root-nginx** tourne sous l'UID de root. Ceci est l'action par défaut de Docker. 
 + 
 +Pour plus d'informationsconsultez cette **[[https://docs.docker.com/engine/security/security/|page]]**. 
 + 
 +====5.2 [WARN] 4.5  - Ensure Content trust for Docker is Enabled==== 
 + 
 +Cette ligne indique que le support de Content trust n'a pas été activé. Content trust permet de s'assurer de la provenance des images utilisées car celles-ci sont signées. 
 + 
 +Pour activer le Content trust, il faut positionner la valeur de la variable **DOCKER_CONTENT_TRUST** à **1** :
  
 <code> <code>
-root@debian9:~docker ps -aq +root@debian9:~/docker-bench-security# echo "DOCKER_CONTENT_TRUST=1" | sudo tee -a /etc/environment 
-92f0d4bb7967 +DOCKER_CONTENT_TRUST=1 
-54b0dae2f3a9 +root@debian9:~/docker-bench-security# source /etc/environment
-26ef17bd115d+
 </code> </code>
  
-Supprimer toutes les conteneurs :+Re-démarrez la machine virtuelle **Manager** et démarrez le conteneur **mysql** :
  
 <code> <code>
-root@debian9:~# docker rm `docker ps -aq` +root@debian9:~/docker-bench-security# docker container start mysql 
-92f0d4bb7967 +mysql 
-54b0dae2f3a9 +root@debian9:~/docker-bench-security# docker ps -a 
-26ef17bd115d +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES 
-root@debian9:~# docker ps -aq +54606c03c52c        mysql               "docker-entrypoint.s…"   10 minutes ago      Up 2 seconds        3306/tcp, 33060/tcp   mysql
-root@debian9:~# +
 </code> </code>
  
-Pour supprimer un conteneur dès la fin de son exécution, utilisez l'option **--rm** :+Exécutez de nouveau le script et notez le contenu de la section 4 :
  
 <code> <code>
-root@debian9:~# docker run -it --rm ubuntu +root@debian9:~/docker-bench-security./docker-bench-security.sh 
-root@d123b0112fc2:/# ls +... 
-bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +[INFO] 4 Container Images and Build File 
-root@d123b0112fc2:/# exit +[WARN] 4.1  - Ensure a user for the container has been created 
-exit +[WARN]      * Running as root: mysql 
-root@debian9:~# docker ps -aq +[NOTE] 4.2  - Ensure that containers use only trusted base images 
-root@debian9:~# +[NOTE] 4.3  - Ensure that unnecessary packages are not installed in the container 
 +[NOTE] 4.4  - Ensure images are scanned and rebuilt to include security patches 
 +[PASS] 4.5  - Ensure Content trust for Docker is Enabled 
 +[WARN] 4.6  - Ensure that HEALTHCHECK instructions have been added to container images 
 +[WARN]      * No Healthcheck found[alpine:latest] 
 +[WARN]      * No Healthcheck found[mysql:latest] 
 +[INFO] 4.7  Ensure update instructions are not use alone in the Dockerfile 
 +[INFO]      * Update instruction found[mysql:latest] 
 +[NOTE] 4.8  - Ensure setuid and setgid permissions are removed 
 +[PASS] 4.9  - Ensure that COPY is used instead of ADD in Dockerfiles 
 +[NOTE] 4.10  - Ensure secrets are not stored in Dockerfiles 
 +[NOTE] 4.11  - Ensure only verified packages are installed 
 +...
 </code> </code>
  
-====1.8 - Créer un Conteneur avec un Nom Spécifique====+Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/security/trust/content_trust/|page]]**.
  
-Créez maintenant un conteneur avec un nom spécifique :+====5.3 - [WARN] 4.6  - Ensure that HEALTHCHECK instructions have been added to container images====
  
-<code> +Quand une image est construite il est possible d'y mettre un **HEALTHCHECK** dont le statut peut être vérifié par Docker afin de relancer le conteneur si nécessaire. 
-root@debian9:~# docker run -it --name=i2tch ubuntu +
-root@04b5ab87539a:/# ls +
-bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +
-root@04b5ab87539a:/# exit +
-exit +
-root@debian9:~# docker ps -a +
-CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES +
-04b5ab87539a        ubuntu              "/bin/bash"         11 seconds ago      Exited (0) 4 seconds ago                       i2tch +
-</code>+
  
-Pour obtenir de l'information concernant un conteneurutilisez la commande **docker inspect** :+Pour mettre en place un HEALTHCHECKil conviendrait, par exemple, d'inclure la ligne suivante dans le fichier DOCKERFILE servant à construire l'image :
  
-<code+<file
-root@debian9:~# docker inspect i2tch +HEALTHCHECK --interval=20s --timeout=3s CMD curl -f http://localhost:8000|| exit 1 
-+</file>
-    { +
-        "Id": "04b5ab87539aed114cbfc3ba15d10be61cd88b9cffc88c6de9bd26e203b363b5", +
-        "Created": "2019-04-09T14:22:45.623162229Z", +
-        "Path": "/bin/bash", +
-        "Args": [], +
-        "State":+
-            "Status": "exited", +
-            "Running": false, +
-            "Paused": false, +
-            "Restarting": false, +
-            "OOMKilled": false, +
-            "Dead": false, +
-            "Pid": 0, +
-            "ExitCode": 0, +
-            "Error": "", +
-            "StartedAt": "2019-04-09T14:22:46.301514689Z", +
-            "FinishedAt": "2019-04-09T14:22:51.91071787Z" +
-        }, +
-        "Image": "sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499", +
-        "ResolvConfPath""/var/lib/docker/containers/04b5ab87539aed114cbfc3ba15d10be61cd88b9cffc88c6de9bd26e203b363b5/resolv.conf", +
-        "HostnamePath""/var/lib/docker/containers/04b5ab87539aed114cbfc3ba15d10be61cd88b9cffc88c6de9bd26e203b363b5/hostname", +
-        "HostsPath": "/var/lib/docker/containers/04b5ab87539aed114cbfc3ba15d10be61cd88b9cffc88c6de9bd26e203b363b5/hosts", +
-        "LogPath": "/var/lib/docker/containers/04b5ab87539aed114cbfc3ba15d10be61cd88b9cffc88c6de9bd26e203b363b5/04b5ab87539aed114cbfc3ba15d10be61cd88b9cffc88c6de9bd26e203b363b5-json.log", +
-        "Name": "/i2tch", +
-        "RestartCount": 0, +
-        "Driver": "overlay2", +
-        "Platform": "linux", +
-        "MountLabel": "", +
-        "ProcessLabel": "", +
-        "AppArmorProfile": "", +
-        "ExecIDs": null, +
-        "HostConfig":+
-            "Binds": null, +
-            "ContainerIDFile": "", +
-            "LogConfig":+
-                "Type": "json-file", +
-                "Config": {} +
-            }, +
-            "NetworkMode": "default", +
-            "PortBindings": {}, +
-            "RestartPolicy":+
-                "Name": "no", +
-                "MaximumRetryCount":+
-            }, +
-            "AutoRemove": false, +
-            "VolumeDriver": "", +
-            "VolumesFrom": null, +
-            "CapAdd": null, +
-            "CapDrop": null, +
-            "Dns": [], +
-            "DnsOptions": [], +
-            "DnsSearch": [], +
-            "ExtraHosts": null, +
-            "GroupAdd": null, +
-            "IpcMode": "shareable", +
-            "Cgroup": "", +
-            "Links": null, +
-            "OomScoreAdj": 0, +
-            "PidMode": "", +
-            "Privileged": false, +
-            "PublishAllPorts": false, +
-            "ReadonlyRootfs": false, +
-            "SecurityOpt": null, +
-            "UTSMode": "", +
-            "UsernsMode": "", +
-            "ShmSize": 67108864, +
-            "Runtime": "runc", +
-            "ConsoleSize":+
-                0, +
-                0 +
-            ], +
-            "Isolation": "", +
-            "CpuShares": 0, +
-            "Memory": 0, +
-            "NanoCpus": 0, +
-            "CgroupParent": "", +
-            "BlkioWeight": 0, +
-            "BlkioWeightDevice": [], +
-            "BlkioDeviceReadBps": null, +
-            "BlkioDeviceWriteBps": null, +
-            "BlkioDeviceReadIOps": null, +
-            "BlkioDeviceWriteIOps": null, +
-            "CpuPeriod": 0, +
-            "CpuQuota": 0, +
-            "CpuRealtimePeriod": 0, +
-            "CpuRealtimeRuntime": 0, +
-            "CpusetCpus": "", +
-            "CpusetMems": "", +
-            "Devices": [], +
-            "DeviceCgroupRules": null, +
-            "DiskQuota": 0, +
-            "KernelMemory": 0, +
-            "MemoryReservation": 0, +
-            "MemorySwap": 0, +
-            "MemorySwappiness": null, +
-            "OomKillDisable": false, +
-            "PidsLimit": 0, +
-            "Ulimits": null, +
-            "CpuCount": 0, +
-            "CpuPercent": 0, +
-            "IOMaximumIOps": 0, +
-            "IOMaximumBandwidth": 0, +
-            "MaskedPaths":+
-                "/proc/asound", +
-                "/proc/acpi", +
-                "/proc/kcore", +
-                "/proc/keys", +
-                "/proc/latency_stats", +
-                "/proc/timer_list", +
-                "/proc/timer_stats", +
-                "/proc/sched_debug", +
-                "/proc/scsi", +
-                "/sys/firmware" +
-            ], +
-            "ReadonlyPaths":+
-                "/proc/bus", +
-                "/proc/fs", +
-                "/proc/irq", +
-                "/proc/sys", +
-                "/proc/sysrq-trigger" +
-            ] +
-        }, +
-        "GraphDriver":+
-            "Data":+
-                "LowerDir": "/var/lib/docker/overlay2/1151d32cdd4dda25ee299fe2c2a8df9dcb1b7fc4c47701c2925c437fb7c3a616-init/diff:/var/lib/docker/overlay2/84bcc6977e49ee3d477255450d69b98195b721b017124194b376f6e6c0645233/diff:/var/lib/docker/overlay2/eee0d6bc849e0c074de73e17eaf11b296dd860a0fb17097f37f9af86d28dcf9b/diff:/var/lib/docker/overlay2/0deb30449649adfed4d1abb678939b2409c4804976ceea4cb75508d0fdf415b6/diff:/var/lib/docker/overlay2/a156bf77423d93e38ef326b3ca6a1d0248ce801733800dad2767070380d682b6/diff", +
-                "MergedDir": "/var/lib/docker/overlay2/1151d32cdd4dda25ee299fe2c2a8df9dcb1b7fc4c47701c2925c437fb7c3a616/merged", +
-                "UpperDir": "/var/lib/docker/overlay2/1151d32cdd4dda25ee299fe2c2a8df9dcb1b7fc4c47701c2925c437fb7c3a616/diff", +
-                "WorkDir": "/var/lib/docker/overlay2/1151d32cdd4dda25ee299fe2c2a8df9dcb1b7fc4c47701c2925c437fb7c3a616/work" +
-            }, +
-            "Name": "overlay2" +
-        }, +
-        "Mounts": [], +
-        "Config":+
-            "Hostname": "04b5ab87539a", +
-            "Domainname": "", +
-            "User": "", +
-            "AttachStdin": true, +
-            "AttachStdout": true, +
-            "AttachStderr": true, +
-            "Tty": true, +
-            "OpenStdin": true, +
-            "StdinOnce": true, +
-            "Env":+
-                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +
-            ], +
-            "Cmd":+
-                "/bin/bash" +
-            ], +
-            "ArgsEscaped": true, +
-            "Image": "ubuntu", +
-            "Volumes": null, +
-            "WorkingDir": "", +
-            "Entrypoint": null, +
-            "OnBuild": null, +
-            "Labels": {} +
-        }, +
-        "NetworkSettings":+
-            "Bridge": "", +
-            "SandboxID": "304fc54e6d23247d4faf08995b65646967670def542812d902d2ee33d178794d", +
-            "HairpinMode": false, +
-            "LinkLocalIPv6Address": "", +
-            "LinkLocalIPv6PrefixLen": 0, +
-            "Ports": {}, +
-            "SandboxKey": "/var/run/docker/netns/304fc54e6d23", +
-            "SecondaryIPAddresses": null, +
-            "SecondaryIPv6Addresses": null, +
-            "EndpointID": "", +
-            "Gateway": "", +
-            "GlobalIPv6Address": "", +
-            "GlobalIPv6PrefixLen": 0, +
-            "IPAddress": "", +
-            "IPPrefixLen": 0, +
-            "IPv6Gateway": "", +
-            "MacAddress": "", +
-            "Networks":+
-                "bridge":+
-                    "IPAMConfig": null, +
-                    "Links": null, +
-                    "Aliases": null, +
-                    "NetworkID": "f2d947904cba4a871af3e50d6e1ec0a3a055849185bf7ba473b2e028880bd8a9", +
-                    "EndpointID": "", +
-                    "Gateway": "", +
-                    "IPAddress": "", +
-                    "IPPrefixLen": 0, +
-                    "IPv6Gateway": "", +
-                    "GlobalIPv6Address": "", +
-                    "GlobalIPv6PrefixLen": 0, +
-                    "MacAddress": "", +
-                    "DriverOpts": null +
-                } +
-            } +
-        } +
-    } +
-+
-</code>+
  
-====1.9 - Exécuter une Commande dans un Conteneur====+Ce test permet de vérifier que le conteneur peut atteindre l'URL indiqué tous les 20 secondes et produit une erreur au bout de 3 secondes.
  
-Pour exécuter une commande spécifique dans un conteneurpassez la commande en argument :+Pour plus d'informationsconsultez cette **[[https://docs.docker.com/engine/reference/builder/#healthcheck|page]]**. 
 + 
 +=====LAB #6 - Sécurisation du Container Runtime===== 
 + 
 +Exécutez de nouveau le script **docker-bench-security.sh**, vous devez obtenir un résultat similaire à ceci en ce qui concerne la sécurité du Container Runtime :
  
 <code> <code>
-root@debian9:~# docker run --rm ubuntu env +root@debian9:~/docker-bench-security./docker-bench-security.sh 
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +... 
-HOSTNAME=77bb110031aa +[INFO] 5 - Container Runtime 
-HOME=/root +[WARN] 5.1  - Ensure that, if applicable, an AppArmor Profile is enabled  
-root@debian9:~# +[WARN]      * No AppArmorProfile Found: mysql 
 +[WARN] 5.2  - Ensure that, if applicable, SELinux security options are set 
 +[WARN]      * No SecurityOptions Found: mysql 
 +[PASS] 5.3  - Ensure Linux Kernel Capabilities are restricted within containers 
 +[PASS] 5.4  - Ensure that privileged containers are not used 
 +[PASS] 5.5  - Ensure sensitive host system directories are not mounted on containers 
 +[PASS] 5.6  - Ensure sshd is not run within containers 
 +[PASS] 5.7  Ensure privileged ports are not mapped within containers 
 +[NOTE] 5.8  Ensure that only needed ports are open on the container 
 +[PASS] 5.9  - Ensure the host's network namespace is not shared 
 +[WARN] 5.10  - Ensure that the memory usage for containers is limited 
 +[WARN]      * Container running without memory restrictionsmysql 
 +[WARN] 5.11  - Ensure CPU priority is set appropriately on the container 
 +[WARN]      * Container running without CPU restrictionsmysql 
 +[WARN] 5.12  - Ensure that the container's root filesystem is mounted as read only 
 +[WARN]      * Container running with root FS mounted R/Wmysql 
 +[PASS] 5.13  - Ensure that incoming container traffic is bound to a specific host interface 
 +[WARN] 5.14  - Ensure that the 'on-failure' container restart policy is set to '5' 
 +[WARN]      * MaximumRetryCount is not set to 5mysql 
 +[PASS] 5.15  - Ensure the host's process namespace is not shared 
 +[PASS] 5.16  - Ensure the host's IPC namespace is not shared 
 +[PASS] 5.17  - Ensure that host devices are not directly exposed to containers 
 +[INFO] 5.18  - Ensure that the default ulimit is overwritten at runtime if needed 
 +[INFO]      * Container no default ulimit overridemysql 
 +[PASS] 5.19  - Ensure mount propagation mode is not set to shared 
 +[PASS] 5.20  - Ensure the host's UTS namespace is not shared 
 +[PASS] 5.21  - Ensure the default seccomp profile is not Disabled 
 +[NOTE] 5.22  - Ensure docker exec commands are not used with privileged option 
 +[NOTE] 5.23  - Ensure that docker exec commands are not used with the user=root option 
 +[PASS] 5.24  - Ensure that cgroup usage is confirmed 
 +[WARN] 5.25  - Ensure that the container is restricted from acquiring additional privileges 
 +[WARN]      * Privileges not restrictedmysql 
 +[WARN] 5.26  - Ensure that container health is checked at runtime 
 +[WARN]      * Health check not set: mysql 
 +[INFO] 5.27  - Ensure that Docker commands always make use of the latest version of their image 
 +[WARN] 5.28  - Ensure that the PIDs cgroup limit is used 
 +[WARN]      * PIDs limit not set: mysql 
 +[INFO] 5.29  - Ensure that Docker's default bridge 'docker0' is not used 
 +[INFO]      * Container in docker0 network: mysql 
 +[PASS] 5.30  - Ensure that the host's user namespaces are not shared 
 +[PASS] 5.31  - Ensure that the Docker socket is not mounted inside any containers 
 +...
 </code> </code>
  
-====1.10 - Injecter des Variables d'Environnement dans un Conteneur====+Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**.
  
-Pour injecter une ou des variables d'environnement dans un conteneur, utilisez un fichier pré-établi :+====6.1 - [WARN] 5.1  - Ensure AppArmor Profile is Enabled==== 
 + 
 +Cet avertissement est présent parce que le conteneur n'utilise pas AppArmor. 
 + 
 +Pour plus d'informations, consultez cette **[[https://cloud.google.com/container-optimized-os/docs/how-to/secure-apparmor|page]]**. 
 + 
 +====6.2 - [WARN] 5.2  - Ensure SELinux security options are set, if applicable==== 
 + 
 +Cet avertissement est présent parce que le conteneur n'utilise pas SELinux. 
 + 
 +Pour plus d'informationsconsultez cette **[[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/container_security_guide/docker_selinux_security_policy|page]]**. 
 + 
 +====6.3 - [WARN] 5.10  - Ensure memory usage for container is limited==== 
 + 
 +Cet avertissement est du au fait que les conteneurs ont automatiquement accès à la totalité de la RAM de l'hôte Docker :
  
 <code> <code>
-root@debian9:~# vi env.list +root@debian9:~# docker run -d -p 8081:80 nginx 
-root@debian9:~# cat env.list +b04b2a6f0dd93da21a8b7640afc319406e42868a141f90936dbcf52ab5bffb0d 
-EDITOR=vim +root@debian9:~# docker stats 
-HOSTNAME=ubuntudocker+CONTAINER ID        NAME                 CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS 
 +b04b2a6f0dd9        dazzling_blackburn   0.00%               1.789MiB / 1.957GiB   0.09%               2.38kB / 0B         0B / 0B             2 
 +^C
 </code> </code>
 +
 +Supprimez le conteneur et re-créez le avec une limite de mémoire :
  
 <code> <code>
-root@debian9:~# docker run --rm --env-file=env.list ubuntu env +root@debian9:~# docker ps -
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                        PORTS                  NAMES 
-HOSTNAME=ubuntudocker +b04b2a6f0dd9        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute             0.0.0.0:8081->80/tcp   dazzling_blackburn 
-EDITOR=vim +5b31fe1e13bc        ubuntu              "bash -c ':() { | …"   14 minutes ago       Exited (254) 13 minutes ago                          pensive_fermat 
-HOME=/root +7788c67c3b69        mysql               "docker-entrypoint.s…"   About an hour ago    Exited (255) 18 minutes ago   3306/tcp, 33060/tcp    mysql 
-root@debian9:~# +root@debian9:~# docker rm -f b0 
 +b0 
 +root@debian9:~# docker run -d -p 8081:80 --memory="256m" nginx 
 +095472e5096a57277230ff94822d9bd0ad479ad26a33cbf83ec381cdb02910e1 
 +root@debian9:~# docker stats 
 +CONTAINER ID        NAME                     CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS 
 +095472e5096a        affectionate_goldstine   0.00%               1.805MiB / 256MiB   0.70%               2.38kB / 0B         0B / 0B             2 
 +^C
 </code> </code>
  
-====1.11 - Modifier le Nom d'Hôte d'un Conteneur====+Pour plus d'informations, consultez cette **[[https://docs.docker.com/config/containers/resource_constraints/|page]]**.
  
-Pour modifier le nom d'hôte d'un conteneur, utilisez l'option **-h** :+====6.4 [WARN] 5.11  - Ensure CPU priority is set appropriately on the container====
  
-<code> +Cet avertissement est du au fait que les conteneurs ont automatiquement accès à tous les CPU de l'hôte Docker. Pour limiter cet accès, plusieurs options sont possibles dont le plus couramment utilisée est **--cpu-shares**.
-root@debian9:~# docker run -it --rm -h ubuntudocker ubuntu +
-root@ubuntudocker:/# hostname +
-ubuntudocker +
-root@ubuntudocker:/# exit +
-exit +
-root@debian9:~#  +
-</code>+
  
-====1.12 Mapper des Ports d'un Conteneur=====+La valeur de cpu-shares est relative à la valeur par défaut de **1024**. Un valeur de 512 permet au conteneur d'accéder à 50% des cycles du CPU mais uniquement quand les cycles sont limités. Quand les cycles de CPU ne sont par restreints, chaque conteneur utilise autant qu'il en a besoin.
  
-Démarrer un conteneur de nginx sur le port localhost 81 :+Pour plus d'informations, consultez cette **[[https://docs.docker.com/config/containers/resource_constraints/|page]]**. 
 + 
 +====6.5 - [WARN] 5.12  - Ensure the container's root filesystem is mounted as read only==== 
 + 
 +Afin de minimiser le risque de compromettre un conteneur par la présence de code malicieux, il est conseillé de démarrer les conteneurs en lecture seule, sauf pour les volumes qui nécessitent un accès en écriture/lecture. 
 + 
 +Créez le fichier **write_a_file** dans le conteneur **mysql** :
  
 <code> <code>
-root@debian9:~docker run -it -p 81:80 nginx +root@debian9:~/docker-bench-securitydocker container exec mysql touch /write_a_file
-Unable to find image 'nginx:latest' locally +
-latest: Pulling from library/nginx +
-27833a3ba0a5: Pull complete  +
-e83729dd399a: Pull complete  +
-ebc6a67df66d: Pull complete  +
-Digest: sha256:c8a861b8a1eeef6d48955a6c6d5dff8e2580f13ff4d0f549e082e7c82a8617a2 +
-Status: Downloaded newer image for nginx:latest +
-^Croot@debian9:~+
 </code> </code>
  
-Notez que c'est bloquant. Le fait d'avoir utiliser ^C a interrompu le processus du conteneur :+La Commande **docker container diff** indique les différences apportées au conteneur par rapport à l'image dont il est issu :
  
 <code> <code>
-^Croot@debian9:~docker ps -a +root@debian9:~/docker-bench-security# docker container diff mysql 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES +A /write_a_file 
-4f157e179134        nginx               "nginx -g 'daemon of…"   32 seconds ago      Exited (0) 21 seconds ago                       stoic_roentgen +C /run 
-04b5ab87539a        ubuntu              "/bin/bash"              5 minutes ago       Exited (0) 5 minutes ago                        i2tch+C /run/mysqld 
 +A /run/mysqld/mysqld.sock 
 +A /run/mysqld/mysqld.sock.lock 
 +A /run/mysqld/mysqlx.sock 
 +A /run/mysqld/mysqlx.sock.lock 
 +A /run/mysqld/mysqld.pid
 </code> </code>
  
-====1.13 - Démarrer un Conteneur en mode Détaché====+<WRAP center round important 60%> 
 +**Important** : Notez que la sortie indique les changements apportés au conteneur. 
 +</WRAP>
  
-Démarrez maintenant le conteneur de nginx en mode détaché grâce à l'utilisation de l'option **-d** :+Arrêtez et supprimez le conteneur :
  
 <code> <code>
-root@debian9:~docker run --p 81:80 nginx +root@debian9:~/docker-bench-security# docker container stop mysql 
-aabb064d4b0ade1f19216b6174631fa32a2053f6aa9d59bd724ea90ce534b004 +mysql 
-root@debian9:~docker ps -+root@debian9:~/docker-bench-security# docker container rm mysql 
-CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS                NAMES +mysql
-aabb064d4b0a        nginx               "nginx -g 'daemon of…"   12 seconds ago       Up 11 seconds                   0.0.0.0:81->80/tcp   eager_lewin +
-4f157e179134        nginx               "nginx -g 'daemon of…"   About a minute ago   Exited (0) About a minute ago                        stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              6 minutes ago        Exited (0) 6 minutes ago                             i2tch+
 </code> </code>
  
-====1.14 - Accèder aux Services d'un Conteneur de l'Extérieur====+Lancez un conteneur mysql en lecture seule :
  
-Installez le navigateur texte **lynx** : +<code> 
 +root@debian9:~/docker-bench-security# docker container run -d --name mysql --read-only -v /var/lib/mysql -v /tmp -v /var/run/mysqld -e MYSQL_ROOT_PASSWORD=password mysql 
 +7788c67c3b692515f63f4659a8f40af397bfbde97485e2e40c500c16b158045b 
 +root@debian9:~/docker-bench-security# docker ps -a 
 +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES 
 +7788c67c3b69        mysql               "docker-entrypoint.s…"   5 seconds ago       Up 5 seconds        3306/tcp, 33060/tcp   mysql 
 +</code> 
 + 
 +Créez le fichier **write_a_file** dans le conteneur **mysql** :
  
 <code> <code>
-root@debian9:~# apt-get install lynx +root@debian9:~/docker-bench-security# docker container exec mysql touch /write_a_file 
-Lecture des listes de paquets... Fait +touchcannot touch '/write_a_file'Read-only file system
-Construction de l'arbre des dépendances        +
-Lecture des informations d'état... Fait +
-The following additional packages will be installed: +
-  lynx-common +
-Les NOUVEAUX paquets suivants seront installés : +
-  lynx lynx-common +
-0 mis à jour, 2 nouvellement installés, 0 à enlever et 94 non mis à jour. +
-Il est nécessaire de prendre 1 730 ko dans les archives. +
-Après cette opération, 5 590 ko d'espace disque supplémentaires seront utilisés. +
-Souhaitez-vous continuer ? [O/n] o +
-Réception de:1 http://ftp.fr.debian.org/debian stretch/main amd64 lynx-common all 2.8.9dev11-1 [1 098 kB] +
-Réception de:2 http://ftp.fr.debian.org/debian stretch/main amd64 lynx amd64 2.8.9dev11-1 [632 kB] +
-1 730 ko réceptionnés en 6s (283 ko/s)                                                                                                                                   +
-Sélection du paquet lynx-common précédemment désélectionné. +
-(Lecture de la base de données... 113082 fichiers et répertoires déjà installés.) +
-Préparation du dépaquetage de .../lynx-common_2.8.9dev11-1_all.deb ... +
-Dépaquetage de lynx-common (2.8.9dev11-1) ... +
-Sélection du paquet lynx précédemment désélectionné. +
-Préparation du dépaquetage de .../lynx_2.8.9dev11-1_amd64.deb ... +
-Dépaquetage de lynx (2.8.9dev11-1) ... +
-Traitement des actions différées (« triggers ») pour mime-support (3.60) ... +
-Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ... +
-Paramétrage de lynx-common (2.8.9dev11-1) ... +
-Paramétrage de lynx (2.8.9dev11-1) ... +
-update-alternatives: utilisation de « /usr/bin/lynx » pour fournir « /usr/bin/www-browser » (www-browser) en mode automatique+
 </code> </code>
  
-Vérifiez que nginx répond aux requetes :+<WRAP center round important 60%> 
 +**Important** : Notez l'erreur **touch: cannot touch '/write_a_file': Read-only file system**. 
 +</WRAP> 
 + 
 +Exécutez la commande **docker container diff** 
  
 <code> <code>
-root@debian9:~# lynx --dump http://localhost:81 +root@debian9:~/docker-bench-security# docker container diff mysql 
-                               Welcome to nginx!+root@debian9:~/docker-bench-security#  
 +</code>
  
-   If you see this page, the nginx web server is successfully installed +<WRAP center round important 60%> 
-   and workingFurther configuration is required.+**Important** : Notez que la commande ne retourne aucune sortieEn effet le conteneur étant en lecture seule, aucun changement ne peut intervenir. 
 +</WRAP>
  
-   For online documentation and support please refer to [1]nginx.org. +====6.6 - [WARN5.14  - Ensure 'on-failure' container restart policy is set to '5'====
-   Commercial support is available at [2]nginx.com.+
  
-   Thank you for using nginx.+Cet avertissement concerne la politique de re-démarrage du conteneurLa politique **on-failure[:max-retries]** implique que le conteneur est re-démarré en cas d'arrêt du à une erreur qui se manifeste en tant que code de retour autre que zéro. La valeur de **max-retries** est le nombre de fois que Docker va essayer de re-démarrer le conteneur. Cette politique peut être mise en place au démarrage du conteneur, par exemple :
  
-Références+  # docker container run -d --name mysql --read-only --restart on-failure:5 -v /var/lib/mysql -v /tmp -v /var/run/mysqld -e MYSQL_ROOT_PASSWORD=password mysql
  
-   1. http://nginx.org/ +Pour plus d'informations, consultez cette **[[https://docs.docker.com/config/containers/start-containers-automatically/|page]]**.
-   2http://nginx.com/ +
-</code>+
  
-====1.15 Arrêter et Démarrer un Conteneur====+====6.[WARN] 5.25  - Ensure the container is restricted from acquiring additional privileges====
  
-Arrêtez le conteneur nginx :+Pour complémenter la configuration précédemment mise en place, il convient de lancer le conteneur en utilisant l'option **--security-opt** :
  
-<code> +  # docker container run -d --name mysql --read-only --restart on-failure:5 --security-opt="no-new-privileges:true-v /var/lib/mysql -v /tmp -/var/run/mysqld -e MYSQL_ROOT_PASSWORD=password mysql
-root@debian9:~# docker ps -+
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                NAMES +
-aabb064d4b0a        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 2 minutes               0.0.0.0:81->80/tcp   eager_lewin +
-4f157e179134        nginx               "nginx -g 'daemon of…"   4 minutes ago       Exited (0) 3 minutes ago                        stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              8 minutes ago       Exited (0) 8 minutes ago                        i2tch +
-root@debian9:~# docker stop aabb +
-aabb +
-root@debian9:~# docker ps -+
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES +
-aabb064d4b0a        nginx               "nginx -g 'daemon of…"   2 minutes ago       Exited (0) 2 seconds ago                       eager_lewin +
-4f157e179134        nginx               "nginx -g 'daemon of…"   4 minutes ago       Exited (0) 4 minutes ago                       stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              8 minutes ago       Exited (0) 8 minutes ago                       i2tch +
-</code>+
  
-Démarrez de nouveau le conteneur de nginx :+Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/reference/run/|page]]**.
  
-<code> +====6.8 [WARN] 5.26  Ensure container health is checked at runtime====
-root@debian9:~# docker start aabb +
-aabb +
-root@debian9:~# docker ps -+
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                NAMES +
-aabb064d4b0a        nginx               "nginx -g 'daemon of…"   3 minutes ago       Up 3 seconds               0.0.0.0:81->80/tcp   eager_lewin +
-4f157e179134        nginx               "nginx -g 'daemon of…"   4 minutes ago       Exited (0) 4 minutes ago                        stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              9 minutes ago       Exited (0) 8 minutes ago                        i2tch +
-</code>+
  
-====1.16 - Utiliser des Signaux avec un Conteneur====+Voir l'avertissement 4.6.
  
-Utilisez un signal pour tuer le processus du conteneur de nginx :+====6.9 - [WARN] 5.28  - Ensure PIDs cgroup limit is used==== 
 + 
 +Sans l'utilisation de l'option **--pids-limit** un conteneur pourrait être victime d'une attaque de type **[[https://fr.wikipedia.org/wiki/Fork_bomb|Fork Bomb]]**, un type spécifique de dénie de service. Ce type d'attaque peut faire crasher l'hôte Docker et le seul remède est de re-démarrer l'hôte. Voici un exemple d'un Fork Bomb :
  
 <code> <code>
-root@debian9:~docker kill -s 9 aabb +root@debian9:~/docker-bench-security# docker run -u 1000 ubuntu bash -":() { : | : & }; :; while [[ true ]]; do sleep 1; done"
-aabb +
-root@debian9:~# docker ps -+
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES +
-aabb064d4b0a        nginx               "nginx -g 'daemon of…  2 hours ago         Exited (1372 seconds ago                       eager_lewin +
-4f157e179134        nginx               "nginx -g 'daemon of…"   2 hours ago         Exited (0) 2 hours ago                           stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                           i2tch+
 </code> </code>
  
-Redémarrez un conteneur en cours :+L'hôte Docker **manager** crash. Après avoir re-démarrer la machine virtuelle, créez de nouveau le conteneur en utilisant l'option **--pids-limit** :
  
 <code> <code>
-root@debian9:~# docker start aabb 
-aabb 
 root@debian9:~# docker ps -a root@debian9:~# docker ps -a
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                NAMES +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                 NAMES 
-aabb064d4b0a        nginx               "nginx -'daemon of…"   2 hours ago         Up 1 second              0.0.0.0:81->80/tcp   eager_lewin +05b11e44e595        ubuntu              "bash -':() { : | …"   6 minutes ago       Exited (2553 minutes ago                         upbeat_turing 
-4f157e179134        nginx               "nginx -g 'daemon of…"   2 hours ago         Exited (02 hours ago                        stoic_roentgen +... 
-04b5ab87539a        ubuntu              "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                        i2tch +root@debian9:~# docker rm 05 
-root@debian9:~# docker restart aabb +05 
-aabb +root@debian9:~# docker run -u 1000 --pids-limit 100 ubuntu bash -c ":() { : | : & }; :; while [[ true ]]; do sleep 1; done" 
-root@debian9:~# docker ps -+environment: fork: retry: Resource temporarily unavailable 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                NAMES +environment: fork: retry: Resource temporarily unavailable 
-aabb064d4b0a        nginx               "nginx -g 'daemon of…"   2 hours ago         Up 2 seconds             0.0.0.0:81->80/tcp   eager_lewin +environment: fork: retry: Resource temporarily unavailable 
-4f157e179134        nginx               "nginx -g 'daemon of…"   2 hours ago         Exited (0) 2 hours ago                        stoic_roentgen +environment: fork: retry: Resource temporarily unavailable 
-04b5ab87539a        ubuntu              "/bin/bash"              2 hours ago         Exited (02 hours ago                        i2tch+environment: fork: retry: Resource temporarily unavailable 
 +environment: fork: retry: Resource temporarily unavailable 
 +^C
 </code> </code>
  
-====1.17 - Forcer la Suppression d'un Conteneur en cours d'Exécution====+Pour plus d'informations, consultez cette **[[https://docs.docker.com/engine/reference/commandline/run/#options|page]]**.
  
-Supprimez un conteneur en cours d'exécution :+Supprimez maintenant tous les conteneurs déjà créées :
  
 <code> <code>
-root@debian9:~# docker rm aabb 
-Error response from daemon: You cannot remove a running container aabb064d4b0ade1f19216b6174631fa32a2053f6aa9d59bd724ea90ce534b004. Stop the container before attempting removal or force remove 
 root@debian9:~# docker ps -a root@debian9:~# docker ps -a
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                NAMES +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                  NAMES 
-aabb064d4b0a        nginx               "nginx -g 'daemon of…"   2 hours ago         Up About a minute        0.0.0.0:81->80/tcp   eager_lewin +095472e5096a        nginx               "nginx -g 'daemon of…"   13 minutes ago      Up 13 minutes                 0.0.0.0:8081->80/tcp   affectionate_goldstine 
-4f157e179134        nginx               "nginx -'daemon of…"   2 hours ago         Exited (02 hours ago                        stoic_roentgen +5b31fe1e13bc        ubuntu              "bash -':() { : | …"   28 minutes ago      Exited (25428 minutes ago                          pensive_fermat 
-04b5ab87539a        ubuntu              "/bin/bash             2 hours ago         Exited (02 hours ago                        i2tch +7788c67c3b69        mysql               "docker-entrypoint.s…  About an hour ago   Exited (25533 minutes ago   3306/tcp, 33060/tcp    mysql 
-root@debian9:~# docker rm -f aabb +root@debian9:~# docker stop 095 
-aabb+095 
 +root@debian9:~# docker rm `docker ps -aq` 
 +5b31fe1e13bc 
 +7788c67c3b69 
 +095472e5096a
 root@debian9:~# docker ps -a root@debian9:~# docker ps -a
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES +CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES 
-4f157e179134        nginx               "nginx -g 'daemon of…"   2 hours ago         Exited (0) 2 hours ago                       stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                       i2tch+
 </code> </code>
  
-===1.18 Utilisation Simple d'un Volume=== +Re-créez le conteneur mysql en intégrant les points vus ci-dessus :
- +
-Créez le fichier index.html et placez-le dans le répertoire /root/www :+
  
 <code> <code>
-root@debian9:~# mkdir /root/www +root@debian9:~# cd docker-bench-security
-root@debian9:~# vi index.html +root@debian9:~/docker-bench-securitydocker container run -d --name mysql --read-only --restart on-failure:5 --security-opt="no-new-privileges:true" --pids-limit 100 --memory="256m" --cpu-shares 512 -v /var/lib/mysql -v /tmp -v /var/run/mysqld -e MYSQL_ROOT_PASSWORD=password mysql 
-root@debian9:~# cat index.html +df54974ebc11fe357f6e8e9b0f8499aee2658af435e32a45058a1e49fcd3dc24 
-<html> +root@debian9:~/docker-bench-securitydocker ps -a 
-<body> +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES 
-<center>Accueil du site nginx</center> +df54974ebc11        mysql               "docker-entrypoint.s…"   5 seconds ago       Up 4 seconds        3306/tcp, 33060/tcp   mysql
-</body> +
-</html> +
-root@debian9:~# mv index.html www/+
 </code> </code>
  
-Indiquez au conteneur que son répertoire **/usr/share/nginx/html/** est remplacé par le répertoire **/root/www/** de la machine hôte :+Exécutez de nouveau le script **docker-bench-security.sh**, vous devez obtenir un résultat similaire à ceci en ce qui concerne la sécurité du Container Runtime :
  
 <code> <code>
-root@debian9:~# docker run --p 81:80 -v /root/www:/usr/share/nginx/html:ro nginx +root@debian9:~/docker-bench-security./docker-bench-security.sh 
-c080793965de8a6a60db212d7e4d96de84b55352c224c054dced75b409e39bf2 +... 
-root@debian9:~# lynx --dump http://localhost:81 +[INFO] 5 - Container Runtime 
-                            Accueil du site nginx+[WARN] 5.1  - Ensure that, if applicable, an AppArmor Profile is enabled  
 +[WARN]      * No AppArmorProfile Foundmysql 
 +[PASS] 5.2  Ensure that, if applicable, SELinux security options are set 
 +[PASS] 5.3  - Ensure Linux Kernel Capabilities are restricted within containers 
 +[PASS] 5.4  - Ensure that privileged containers are not used 
 +[PASS] 5.5  - Ensure sensitive host system directories are not mounted on containers 
 +[PASS] 5.6  - Ensure sshd is not run within containers 
 +[PASS] 5.7  - Ensure privileged ports are not mapped within containers 
 +[NOTE] 5.8  - Ensure that only needed ports are open on the container 
 +[PASS] 5.9  - Ensure the host's network namespace is not shared 
 +[PASS] 5.10  - Ensure that the memory usage for containers is limited 
 +[PASS] 5.11  - Ensure CPU priority is set appropriately on the container 
 +[PASS] 5.12  - Ensure that the container'root filesystem is mounted as read only 
 +[PASS] 5.13  - Ensure that incoming container traffic is bound to a specific host interface 
 +[PASS] 5.14  - Ensure that the 'on-failure' container restart policy is set to '5' 
 +[PASS] 5.15  - Ensure the host's process namespace is not shared 
 +[PASS] 5.16  - Ensure the host's IPC namespace is not shared 
 +[PASS] 5.17  - Ensure that host devices are not directly exposed to containers 
 +[INFO] 5.18  - Ensure that the default ulimit is overwritten at runtime if needed 
 +[INFO]      * Container no default ulimit overridemysql 
 +[PASS] 5.19  - Ensure mount propagation mode is not set to shared 
 +[PASS] 5.20  - Ensure the host's UTS namespace is not shared 
 +[PASS] 5.21  - Ensure the default seccomp profile is not Disabled 
 +[NOTE] 5.22  - Ensure docker exec commands are not used with privileged option 
 +[NOTE] 5.23  - Ensure that docker exec commands are not used with the user=root option 
 +[PASS] 5.24  - Ensure that cgroup usage is confirmed 
 +[PASS] 5.25  - Ensure that the container is restricted from acquiring additional privileges 
 +[WARN] 5.26  - Ensure that container health is checked at runtime 
 +[WARN]      * Health check not setmysql 
 +[INFO] 5.27  Ensure that Docker commands always make use of the latest version of their image 
 +[PASS] 5.28  Ensure that the PIDs cgroup limit is used 
 +[INFO] 5.29  - Ensure that Docker's default bridge 'docker0' is not used 
 +[INFO]      * Container in docker0 networkmysql 
 +[PASS] 5.30  - Ensure that the host's user namespaces are not shared 
 +[PASS] 5.31  - Ensure that the Docker socket is not mounted inside any containers 
 +... 
 +</code>
  
 +=====LAB #7 - Sécurisation des Images avec Docker Content Trust=====
  
-root@debian9:~#  +**Docker Content Trust (DCT)** a été introduit avec Docker Engine 1.8 et Docker CS Engine 1.9.0. DCT permet la vérification de l'authenticité, de l'intégrité et la date de publication d'une image Docker dans un registry. Par défaut, DCT est **désactivé**.
-</code>+
  
-<WRAP center round important> +DCT est utilisé par le **Docker Hub Registry** mais peut aussi être mis en place dans des Registry privés, notamment grâce à la mise en place du **[[https://www.docker.com/products/image-registry|Docker Container Registry]]** qui est inclus avec **Docker Enterprise**.
-**Important** - Notez ici l'utilisation de **ro** - lecture seule. +
-</WRAP>+
  
-====1.19 - Télécharger une image sans créer un conteneur====+DCT est basé sur l'utilisation de l'outil **[[https://docs.docker.com/notary/service_architecture/|Docker Notary]]** pour publier et gérer du contenu ainsi que **[[https://theupdateframework.github.io/|The Update Framework (TUF)]]**.
  
-Téléchargez l'image de centos sans créer un conteneur :+Pour plus d'information concernant DCT, consultez cette **[[https://docs.docker.com/engine/security/trust/content_trust/|page]]**.
  
-<code> +====7.1 - DOCKER_CONTENT_TRUST====
-root@debian9:~# docker pull centos +
-Using default tag: latest +
-latest: Pulling from library/centos +
-8ba884070f61: Pull complete  +
-Digest: sha256:8d487d68857f5bc9595793279b33d082b03713341ddec91054382641d14db861 +
-Status: Downloaded newer image for centos:latest +
-</code>+
  
-Vérifiez le contenu de l'image en créant un conteneur :+Pour utiliser **Docker Content Trust (DCT)**, il convient de vérifier que la valeur de la variable **DOCKER_CONTENT_TRUST** est **1** :
  
 <code> <code>
-root@debian9:~# docker run -it centos bash +root@debian9:~# echo $DOCKER_CONTENT_TRUST 
-[root@86252a3f00f4 /]# cat /etc/redhat-release +1
-CentOS Linux release 7.6.1810 (Core)  +
-[root@86252a3f00f4 /]# rpm -qa | more +
-bind-license-9.9.4-73.el7_6.noarch +
-bash-4.2.46-31.el7.x86_64 +
-glibc-common-2.17-260.el7_6.3.x86_64 +
-nss-softokn-freebl-3.36.0-5.el7_5.x86_64 +
-filesystem-3.2-25.el7.x86_64 +
-glibc-2.17-260.el7_6.3.x86_64 +
-nspr-4.19.0-1.el7_5.x86_64 +
-popt-1.13-16.el7.x86_64 +
-libcom_err-1.42.9-13.el7.x86_64 +
-libcap-2.22-9.el7.x86_64 +
-libstdc++-4.8.5-36.el7.x86_64 +
-info-5.1-5.el7.x86_64 +
-gawk-4.0.2-4.el7_3.1.x86_64 +
-libselinux-2.5-14.1.el7.x86_64 +
-grep-2.20-3.el7.x86_64 +
-keyutils-libs-1.5.8-3.el7.x86_64 +
-libverto-0.2.5-4.el7.x86_64 +
-p11-kit-trust-0.23.5-3.el7.x86_64 +
-openssl-libs-1.0.2k-16.el7.x86_64 +
-krb5-libs-1.15.1-37.el7_6.x86_64 +
-xz-libs-5.2.2-1.el7.x86_64 +
-libdb-5.3.21-24.el7.x86_64 +
-libgpg-error-1.12-3.el7.x86_64 +
-libgcrypt-1.5.3-14.el7.x86_64 +
-lua-5.1.4-15.el7.x86_64 +
-libuuid-2.23.2-59.el7.x86_64 +
-libmount-2.23.2-59.el7.x86_64 +
-shared-mime-info-1.8-4.el7.x86_64 +
-gzip-1.5-10.el7.x86_64 +
-findutils-4.5.11-6.el7.x86_64 +
-diffutils-3.3-4.el7.x86_64 +
-expat-2.1.0-10.el7_3.x86_64 +
-audit-libs-2.8.4-4.el7.x86_64 +
-pam-1.1.8-22.el7.x86_64 +
-nss-softokn-3.36.0-5.el7_5.x86_64 +
-nss-3.36.0-7.1.el7_6.x86_64 +
-libassuan-2.1.0-3.el7.x86_64 +
-nss-tools-3.36.0-7.1.el7_6.x86_64 +
-gobject-introspection-1.56.1-1.el7.x86_64 +
---More--+
 </code> </code>
  
-====1.20 - S'attacher à un conteneur en cours d'exécution==== +Dans le cas contraire, il faut fixer la valeur de la variable à 1 :
- +
-Arretez le conteneur. Démarrez le conteneur puis rattachez-vous au conteneur :+
  
 <code> <code>
-[root@86252a3f00f4 /]# exit +root@debian9:~# export DOCKER_CONTENT_TRUST=1 
-exit +root@debian9:~# echo $DOCKER_CONTENT_TRUST 
-root@debian9:~# docker ps -a +1
-CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                       PORTS                NAMES +
-86252a3f00f4        centos              "bash"                   About a minute ago   Exited (127) 6 seconds ago                        vibrant_mccarthy +
-c080793965de        nginx               "nginx -g 'daemon of…"   4 minutes ago        Up 4 minutes                 0.0.0.0:81->80/tcp   suspicious_sanderson +
-4f157e179134        nginx               "nginx -g 'daemon of…"   3 hours ago          Exited (0) 3 hours ago                            stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              3 hours ago          Exited (0) 3 hours ago                            i2tch +
-root@debian9:~# docker start 8625 +
-8625 +
-root@debian9:~# docker attach 8625 +
-[root@86252a3f00f4 /]# ls +
-anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var +
-[root@86252a3f00f4 /]# +
 </code> </code>
  
-====1.21 Installer un logiciel dans le conteneur===+====7.DCT et la commande docker pull====
  
-Créez le fichier **/etc/yum.repos.d/mongodb-org-4.2.repo** :+Afin d'utiliser un registry privé du Docker Hub, il est nécessaire de se connecter :
  
 <code> <code>
-[root@86252a3f00f4 /]vi /etc/yum.repos.d/mongodb-org-4.2.repo +root@debian9:~docker login 
-[root@86252a3f00f4 /]# cat /etc/yum.repos.d/mongodb-org-4.2.repo +Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one
-[mongodb-org-4.2] +Username: <votre_compte> 
-name=MongoDB Repository +Password: <votre_mot_de_passe> 
-baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ +WARNING! Your password will be stored unencrypted in /root/.docker/config.json
-gpgcheck=1 +Configure a credential helper to remove this warningSee 
-enabled=1 +https://docs.docker.com/engine/reference/commandline/login/#credentials-store 
-gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc + 
-[root@86252a3f00f4 /]# +Login Succeeded
 </code> </code>
  
-Installez mongo :+Pour constater l'impact de l'utilisation de DCT, il convient simplement de faire un **pull** d'une image non-signée :
  
 <code> <code>
-[root@86252a3f00f4 /]yum install -y mongodb-org+root@debian9:~docker image pull i2tch/docker:unsigned 
 +Error: remote trust data does not exist for docker.io/i2tch/docker: notary.docker.io does not have trust data for docker.io/i2tch/docker
 </code> </code>
  
-Démarrez mongod :+<WRAP center round important 60%> 
 +**Important** Notez l'erreur **Error: remote trust data does not exist for docker.io/i2tch/docker ...**. En effet Docker Trust empêche l'utilisation des images non-signées. 
 +</WRAP>
  
-<code> +Par contretoutes les images de type **official** sont signées :
-[root@86252a3f00f4 /]# mongod --config /etc/mongod.conf & +
-[1] 82 +
-[root@86252a3f00f4 /]# about to fork child processwaiting until server is ready for connections. +
-forked process84 +
-child process started successfully, parent exiting+
  
-[1]+  Done                    mongod --config /etc/mongod.conf +<code> 
-[root@86252a3f00f4 /]#  +root@debian9:~# docker image pull centos 
 +Using default tag: latest 
 +Pull (of 1): centos:latest@sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9 
 +sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9: Pulling from library/centos 
 +729ec3a6ada3: Pull complete  
 +Digest: sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9 
 +Status: Downloaded newer image for centos@sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9 
 +Tagging centos@sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9 as centos:latest 
 +docker.io/library/centos:latest
 </code> </code>
  
-Vérifiez que mongod est démarré :+Cette image est maintenant présente sur **manager.i2tch.loc** :
  
 <code> <code>
-[root@86252a3f00f4 /]ps aux +root@debian9:~docker images 
-USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND +REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE 
-root          0.0  0.1  11828  2996 pts/0    Ss   16:57   0:00 bash +ubuntu              latest              775349758637        9 days ago          64.2MB 
-root        84  1. 2.2 294692 46716 ?        Sl   17:16   0:00 mongod --config /etc/mongod.conf +nginx               latest              540a289bab6c        weeks ago         126MB 
-root       103  0.0  0.1  51748  3444 pts/0    R+   17:17   0:00 ps aux+alpine              latest              965ea09ff2eb        weeks ago         5.55MB 
 +mysql               latest              c8ee894bd2bd        3 weeks ago         456MB 
 +centos              latest              0f3e07c0138f        5 weeks ago         220MB
 </code> </code>
  
-Utilisez le client mongo pour se connecter au serveur :+===L'option disable-content-trust=== 
 + 
 +Il est aussi possible d'activer ou de désactiver l'utilisation de DCT avec les options **--disable-content-trust=false/true** lors de l'utilisation des commandes **docker build**, **docker push** et **docker pull**, **docker create** et **docker run** :
  
 <code> <code>
-[root@86252a3f00f4 /]# mongo +root@debian9:~# docker image pull --disable-content-trust=true i2tch/docker:unsigned 
-MongoDB shell version4.2.2 +unsignedPulling from i2tch/docker 
-connecting totest +10d70a43a9f9Pull complete  
-Welcome to the MongoDB shell. +4f4fb700ef54: Pull complete  
-For interactive help, type "help". +8951e3a91277: Pull complete  
-For more comprehensive documentation, see +d1814ff35b8b: Pull complete  
- http://docs.mongodb.org/ +ff2a2bbf6141Pull complete  
-Questions? Try the support group +b7205da5c3c9: Pull complete  
- http://groups.google.com/group/mongodb-user +458ea241cc75Pull complete  
-Server has startup warnings:  +74d1c0702786Pull complete  
-2019-04-09T17:16:26.951+0000 I CONTROL  [initandlisten] ** WARNINGYou are running this process as the root user, which is not recommended. +c66f3692932dPull complete  
-2019-04-09T17:16:26.951+0000 I CONTROL  [initandlisten]  +9224bd1b9757Pull complete  
->  +Digestsha256:885fc831cb853700ded04029b4fa70ed502947042f6f154e432395cb35619d11 
-</code>+StatusDownloaded newer image for i2tch/docker:unsigned 
 +docker.io/i2tch/docker:unsigned
  
-Sortez de mongo et du conteneur :+root@debian9:~# docker image ls 
 +REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE 
 +ubuntu              latest              775349758637        9 days ago          64.2MB 
 +nginx               latest              540a289bab6c        2 weeks ago         126MB 
 +alpine              latest              965ea09ff2eb        2 weeks ago         5.55MB 
 +mysql               latest              c8ee894bd2bd        3 weeks ago         456MB 
 +centos              latest              0f3e07c0138f        5 weeks ago         220MB 
 +i2tch/docker        unsigned            9b915a241e29        3 years ago         212MB
  
-<code> +root@debian9:~docker rmi i2tch/docker:unsigned 
-> exit +Untagged: i2tch/docker:unsigned 
-bye +Untagged: i2tch/docker@sha256:885fc831cb853700ded04029b4fa70ed502947042f6f154e432395cb35619d11 
-[root@86252a3f00f4 /]exit +Deleted: sha256:9b915a241e29dc2767980445e3109412b1905b6f1617aea7098e7ac1e5837ae2 
-exit +Deleted: sha256:27eb08aec7b41dbfa2fd49bc2b3fad9b020fe40b0bc8289af7f53770f0843e7d 
-root@debian9:~# +Deleted: sha256:7ad0aff4b88909fcff6372fdd26c24d688803b06845426b5a90bcd2f2cae93f4 
 +Deleted: sha256:b93bcd594116ac8886f2daa0fc8d75a59da00161731dab24ababea853d031908 
 +Deleted: sha256:54eda0a22e4b2a1b166cf996eb0651a4f53dec7e9dfad3549bbfe6078f2238a4 
 +Deleted: sha256:36575f1e2764d54fdb92b5296cf4e993499836d6dd9a006f32e173865835070e 
 +Deleted: sha256:27074774f844bdeba18e786585604c8b6352e925a7bd560deb66252bc8ccb861 
 +Deleted: sha256:0da68695f8bc66fcea8f09004b5cb078861f5d99748f8b7ed035690e02c41477 
 +Deleted: sha256:5dbda9873cdda8ff912b0ae5c34790ee06d7117fa27b193610fa2f7063bf55ff 
 +Deleted: sha256:149690c37bdc8680ec66b0e2cc138f6d63caad74b091acf86a2a18111b90ea79 
 +Deleted: sha256:2caf8a80130d6e9f4ed22e1ec1c3abd2c3f4330d2df9ec62f3b751300190b9e4 
 +Deleted: sha256:1445a9131f2b28a12ff6396faebd6b4beb2cccd7af8eae28d5ff659d65de03ad 
 +Deleted: sha256:4d9799a0754804f5cd623ab744757d16ec81862ee6e5d6986d9d1b0c5e5d5637 
 +Deleted: sha256:dd833146402e8e6e67c48a6ae79a3c86101123e3d6ab1fc7999685eeea06ccba 
 +Deleted: sha256:08d8e6ed6c3a5ac1bfee00f7b11f0a870d6bdc4af6d34169fa1e032c241a63a6 
 +Deleted: sha256:0f3637356bb908638dda037c9c6aa4a2be8a19dbcf452a00cd733a8a456077ac 
 +Deleted: sha256:aedb1b3b3b6e70ae4a342dfdcea874495b9d095ed6ba8eb4bc08f90ad9e83125 
 +Deleted: sha256:05903cd969529ea56beec880bbeb7e90f1bdc281882f1cf3755760e41b181409 
 +Deleted: sha256:d124781fc06a73b05a8644958397994bae668aba2f06f397fe1387c676b0d86f
 </code> </code>
  
-====1.22 Utilisation de la commande docker commit====+====7.DCT et la commande docker push====
  
-Créez maintenant une nouvelle image à partir de votre conteneur :+Pour envoyer l'image dont l'IMAGE ID est **965ea09ff2eb** dans le registry privé, le tag de l'image doit être modifié :
  
 <code> <code>
-root@debian9:~# docker ps -a +root@debian9:~# docker image tag alpine:latest <votre_compte>/docker:alpine
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                NAMES +
-86252a3f00f4        centos              "bash"                   23 minutes ago      Exited (0) 56 seconds ago                        vibrant_mccarthy +
-c080793965de        nginx               "nginx -g 'daemon of…"   26 minutes ago      Up 26 minutes               0.0.0.0:81->80/tcp   suspicious_sanderson +
-4f157e179134        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 3 hours ago                           stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              3 hours ago         Exited (0) 3 hours ago                           i2tch +
-root@debian9:~# docker commit 8625 i2tch/mongodb +
-sha256:67afc80e1424a6d99179911ee499f6bf264faf2bc3c7ff4ac4a01ff9c23050a9+
 </code> </code>
  
-Supprimez le conteneur utilisé pour créer l'image :+L'image dont l'IMAGE ID est **965ea09ff2eb** a maintenant deux tags **alpine:latest** et **<votre_compte>/docker:alpine** :
  
 <code> <code>
-root@debian9:~# docker rm 8625 +root@debian9:~# docker image ls 
-8625 +REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE 
-root@debian9:~# docker ps -a +ubuntu                 latest              775349758637        9 days ago          64.2MB 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                NAMES +nginx                  latest              540a289bab6c        2 weeks ago         126MB 
-c080793965de        nginx               "nginx -g 'daemon of…"   28 minutes ago      Up 28 minutes            0.0.0.0:81->80/tcp   suspicious_sanderson +<votre_compte>/docker  alpine              965ea09ff2eb        2 weeks ago         5.55MB 
-4f157e179134        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 3 hours ago                        stoic_roentgen +alpine                 latest              965ea09ff2eb        2 weeks ago         5.55MB 
-04b5ab87539a        ubuntu              "/bin/bash"              hours ago         Exited (0) 3 hours ago                        i2tch+mysql                  latest              c8ee894bd2bd        weeks ago         456MB 
 +centos                 latest              0f3e07c0138f        5 weeks ago         220MB
 </code> </code>
  
-Utilisez la nouvelle image pour lancer un conteneur nommé **mongo** :+Lors du push vers le registry privé, il faut créer des passphrases pour **deux** clefs : 
 + 
 +  * la **root** key aussi connue sous le nom **offline** key (ID 192fc7e), qui est uniquement demandée la **première** fois après la mise en place de DCT lors de la création d'un **repositry**, 
 +  * la **repository** key aussi connue sous le nom **tagging** key (ID 168c754), utilisée pour signer l'image en y apposant un **tag**. La signature est spécifique au **repositry**.
  
 <code> <code>
-root@debian9:~# docker run -it --name mongo i2tch/mongodb +root@debian9:~# docker push <votre_compte>/docker:alpine 
-[root@d20fb56a38b0 /]# ls /usr/bin/mongo* +The push refers to repository [docker.io/<votre_compte>/docker
-/usr/bin/mongo   /usr/bin/mongodump    /usr/bin/mongofiles   /usr/bin/mongooplog  /usr/bin/mongorestore  /usr/bin/mongostat +77cae8ab23bf: Mounted from library/alpine  
-/usr/bin/mongod  /usr/bin/mongoexport  /usr/bin/mongoimport  /usr/bin/mongoperf   /usr/bin/mongos        /usr/bin/mongotop +alpine: digest: sha256:e4355b66995c96b4b468159fc5c7e3540fcef961189ca13fee877798649f531a size: 528 
-[root@d20fb56a38b0 /]# ps aux +Signing and pushing trust metadata 
-USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND +You are about to create a new root signing key passphrase. This passphrase 
-root          0.1  0.1  11828  2972 pts/0    Ss   17:22   0:00 bash +will be used to protect the most sensitive key in your signing system. Please 
-root        15  0.0  0.1  51748  3468 pts/0    R+   17:23   0:00 ps aux+choose a long, complex passphrase and be careful to keep the password and the 
 +key file itself secure and backed upIt is highly recommended that you use a 
 +password manager to generate the passphrase and keep it safe. There will be no 
 +way to recover this key. You can find the key in your config directory. 
 +Enter passphrase for new root key with ID 192fc7efenestros 
 +Repeat passphrase for new root key with ID 192fc7efenestros 
 +Enter passphrase for new repository key with ID 168c754: fenestros 
 +Repeat passphrase for new repository key with ID 168c754: fenestros 
 +Finished initializing "docker.io/<votre_compte>/docker" 
 +Successfully signed docker.io/<votre_compte>/docker:alpine
 </code> </code>
  
-Editez le fichier /etc/bashrc :+Les clefs sont stockées dans le répertoire **~/.docker/trust/private** :
  
 <code> <code>
-[root@d20fb56a38b0 /]echo "/usr/bin/mongod --config /etc/mongod.conf &" >> /etc/bashrc +root@debian9:~ls -l ~/.docker/trust 
-[root@d20fb56a38b0 /]# tail /etc/bashrc +total 8 
-                "$i" >/dev/null +drwx------ 2 root root 4096 nov 10 14:49 private 
-            fi +drwx------ 3 root root 4096 nov.   8 13:48 tuf
-        fi +
-    done+
  
-    unset i +root@debian9:~# ls -l ~/.docker/trust/private 
-    unset -f pathmunge +total 8 
-fi +-rw------- 1 root root 447 nov.  10 14:49 168c754ea8f36ce7fbcbe2299b6d91fc0f4d594c9ed9b86916687b618d8438ac.key 
-vim:ts=4:sw=4 +-rw------- 1 root root 416 nov.  10 14:49 192fc7ed9543ad4bceec58886ab1d605b7433c35f7462d7343d0780d8fddf1db.key 
-/usr/bin/mongod --config /etc/mongod.conf &+root@debian9:~cat ~/.docker/trust/private/168c754ea8f36ce7fbcbe2299b6d91fc0f4d594c9ed9b86916687b618d8438ac.key  
 +-----BEGIN ENCRYPTED PRIVATE KEY----- 
 +gundocker.io/i2tch/docker 
 +roletargets 
 + 
 +MIHuMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAhm7HwR0y8FFAICCAAw 
 +HQYJYIZIAWUDBAEqBBC729tU73wKHFQSbmZ1EVZaBIGgmGiFSs4lM5tElSGukl1B 
 +HrELT9aFooFgW7oSXNLM8aFfF/vJ+BSjsgfqWLdvuH+DUXXdUidxcoGMEWnVZNIC 
 +3m40g3MywHilW4rUcjoHVTTUXABGXUQ3f7h+nI15CXcZ11qRLyWbf2uywE9yYH9O 
 +M7GLUcE+pTENJKfZAhRGBEL+LgXNfGI1aAVqaEbBDcDnKKf4Uj1Xu4oLJ7je8+nT 
 +dg=
 +-----END ENCRYPTED PRIVATE KEY----- 
 + 
 +root@debian9:~# cat ~/.docker/trust/private/192fc7ed9543ad4bceec58886ab1d605b7433c35f7462d7343d0780d8fddf1db.key  
 +-----BEGIN ENCRYPTED PRIVATE KEY----- 
 +role: root 
 + 
 +MIHuMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAiAtCzEar3AhgICCAAw 
 +HQYJYIZIAWUDBAEqBBAO7hHWVoqOo6xcETQQDXRdBIGgPUoLzTz07Ajx8K3D8+Vv 
 +2NUiflMYhH/0I9PL6iA2JJCmD0l+8Ueljy+vHRCu7UAIyWXyIHFN5Aab40mk9/Pg 
 +V2BwSlXp7t1Cnqp/ah7g0T40+OnT64JkTS+l3cS0CaCf2E4l6nY8g4cl40hZIFJz 
 +KREO8uEq3v7HcSBBqFm0+TU+92d7hVuDApPaj0lZYP+3f7H6AjUOqu6hUoK8Ck/
 +Ig== 
 +-----END ENCRYPTED PRIVATE KEY-----
 </code> </code>
  
-Consultez la liste des conteneurs et relevez le CONTAINER ID du conteneur **mongo** :+====7.4 - DCT et la commande docker build==== 
 + 
 +L'exemple suivant démontre un Dockerfile qui référence une image parente non signée :
  
 <code> <code>
-[root@d20fb56a38b0 /]exit +root@debian9:~mkdir nottrusted 
-exit +root@debian9:~# cd nottrusted/ 
-root@debian9:~# docker ps -a +root@debian9:~/nottrusted# vi Dockerfile 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                NAMES +root@debian9:~/nottrusted# cat Dockerfile 
-d20fb56a38b0        i2tch/mongodb       "bash"                   2 minutes ago       Exited (0) 4 seconds ago                        mongo +FROM docker/trusttest:latest 
-c080793965de        nginx               "nginx -g 'daemon of…"   32 minutes ago      Up 32 minutes              0.0.0.0:81->80/tcp   suspicious_sanderson +RUN echo
-4f157e179134        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 3 hours ago                          stoic_roentgen +
-04b5ab87539a        ubuntu              "/bin/bash"              3 hours ago         Exited (0) 3 hours ago                          i2tch+
 </code> </code>
  
-Utilisez la commande commit pour "sauvegarder" la modification dans l'image :+Lors du build de l'image **<votre_compte>/docker:nottrusted** qui utilise ce Dockerfile, une erreur est retournée car sa création n'est pas conforme à l'utilisation de DCT :
  
 <code> <code>
-root@debian9:~# docker commit d20f i2tch/mongodb +root@debian9:~/nottrusted# docker build -t <votre_compte>/docker:nottrusted . 
-sha256:620057baa411b78a0030e192fdfbde0bb0c5ceae7bdeb115892d9946e542ee07+Sending build context to Docker daemon  
 + 
 +error during connectPost http://%2Fvar%2Frun%2Fdocker.sock/v1.40/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=i2tch%2Fdocker%3Anottrusted&target=&ulimits=null&version=1: Error: remote trust data does not exist for docker.io/docker/trusttest: notary.docker.io does not have trust data for docker.io/docker/trusttest
 </code> </code>
  
-Démarrez de nouveau le conteneur pour vérifier que mongod fonctionne :+L'utilisation de l'option **--disable-content-trust** permet la construction de l'image **<votre_compte>/docker:nottrusted** :
  
 <code> <code>
-root@debian9:~# docker rm d20f +root@debian9:~/nottrusted# docker build --disable-content-trust -t <votre_compte>/docker:nottrusted . 
-d20f +Sending build context to Docker daemon  2.048kB 
-root@debian9:~# docker ps -a +Step 1/2 FROM docker/trusttest:latest 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                NAMES +latest: Pulling from docker/trusttest 
-c080793965de        nginx               "nginx -g 'daemon of…"   33 minutes ago      Up 33 minutes            0.0.0.0:81->80/tcp   suspicious_sanderson +Image docker.io/docker/trusttest:latest uses outdated schema1 manifest formatPlease upgrade to a schema2 image for better future compatibilityMore information at https://docs.docker.com/registry/spec/deprecated-schema-v1
-4f157e179134        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 3 hours ago                        stoic_roentgen +aac0c133338d: Pull complete  
-04b5ab87539a        ubuntu              "/bin/bash"              3 hours ago         Exited (0) 3 hours ago                        i2tch +a3ed95caeb02: Pull complete  
-root@debian9:~# docker run -it --name mongo i2tch/mongodb +Digestsha256:50c0cdd0577cc7ab7c78e73a0a89650b222f6ce2b87d10130ecff055981b702f 
-[root@bcec3f27ed58 /]# about to fork child process, waiting until server is ready for connections. +Status: Downloaded newer image for docker/trusttest:latest 
-forked process16 + ---> cc7629d1331a 
-child process started successfully, parent exiting+Step 2/RUN echo 
 + ---> Running in 694e79d3cd88
  
-[1]+  Done                    /usr/bin/mongod --config /etc/mongod.conf +Removing intermediate container 694e79d3cd88 
-[root@bcec3f27ed58 /]# ps aux + ---> 686e85ee76b8 
-USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND +Successfully built 686e85ee76b8 
-root          0.0  0.1  11828  2920 pts/0    Ss   17:26   0:00 bash +Successfully tagged <votre_compte>/docker:nottrusted
-root        16  2.0  2.4 298788 49276 ?        Sl   17:26   0:01 /usr/bin/mongod --config /etc/mongod.conf +
-root        39  0.0  0.1  51748  3476 pts/0    R+   17:27   0:00 ps aux +
-[root@bcec3f27ed58 /]# +
 </code> </code>
  
-====1.23 - Se connecter au serveur du conteneur de l'extérieur==== +Lors du push de l'image **<votre_compte>/docker:nottrusted** vers le repositry distantcelle-ci est **signée** :
- +
-Pour pouvoir se connecter à mongodb depuis la machine hôteil convient d'éditer le fichier /etc/mongod.conf :+
  
 <code> <code>
-[root@bcec3f27ed58 /]vi /etc/mongod.conf +root@debian9:~/nottrusteddocker push <votre_compte>/docker:nottrusted 
-[root@bcec3f27ed58 /]# cat /etc/mongod.conf | grep bindIp +The push refers to repository [docker.io/<votre_compte>/docker] 
-   bindIp0.0.0.0+5f70bf18a086: Layer already exists  
 +c22f7bc058a9: Mounted from docker/trusttest  
 +nottrusteddigest: sha256:1183c62a5d31e202b5f5f528e9e7cdc36140aa3212c938e1d471c6b3b59f01bc size: 734 
 +Signing and pushing trust metadata 
 +Enter passphrase for repository key with ID 168c754: fenestros 
 +Successfully signed docker.io/<votre_compte>/docker:nottrusted
 </code> </code>
  
-Sortez du conteneur, re-créez une image, supprimez le conteneur utilisé et relancez de nouveau le conteneur :+<WRAP center round important 60%> 
 +**Important** : Notez l'utilisation de la même root key que lors du push de l'image **<votre_compte>/docker:alpine** car il s'agit du même repositry.  
 +</WRAP> 
 + 
 +===Créer un deuxième Repositry=== 
 + 
 +Par contre en modifiant le tag de l'image **<votre_compte>/docker:nottrusted** à **<votre_compte>/otherimage:latest**, un autre repositry sera créé lors du push de l'image renommée :
  
 <code> <code>
-[root@bcec3f27ed58 /]# exit +root@debian9:~/nottrusted# docker tag <votre_compte>/docker:nottrusted <votre_compte>/otherimage:latest 
-exit +root@debian9:~/nottrusted# docker images 
-root@debian9:~# docker commit mongo i2tch/mongodb +REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE 
-sha256:eca7835d4fe6a3a769046bd735ef4ad7534ac1f9bb37832d6da5db3b938d258f +<votre_compte>/docker        nottrusted          686e85ee76b8        9 minutes ago       5.03MB 
-root@debian9:~# docker rm mongo +<votre_compte>/otherimage    latest              686e85ee76b8        9 minutes ago       5.03MB 
-mongo +ubuntu                       latest              775349758637        9 days ago          64.2MB 
-root@debian9:~# docker run -it --name mongo i2tch/mongodb +nginx                        latest              540a289bab6c        2 weeks ago         126MB 
-[root@d2ddb4f8ca8a /]# about to fork child process, waiting until server is ready for connections+<votre_compte>/docker        alpine              965ea09ff2eb        2 weeks ago         5.55MB 
-forked process: 16 +alpine                       latest              965ea09ff2eb        2 weeks ago         5.55MB 
-[root@d2ddb4f8ca8a /]# child process started successfully, parent exiting+mysql                        latest              c8ee894bd2bd        3 weeks ago         456MB 
 +centos                       latest              0f3e07c0138f        5 weeks ago         220MB 
 +docker/trusttest             latest              cc7629d1331a        4 years ago         5.03MB
  
-[1]+  Done                    /usr/bin/mongod --config /etc/mongod.conf +root@debian9:~/nottrusted# docker push docker.io/<votre_compte>/otherimage:latest 
-[root@d2ddb4f8ca8a /]# +The push refers to repository [docker.io/<votre_compte>/otherimage] 
 +5f70bf18a086: Mounted from <votre_compte>/docker  
 +c22f7bc058a9: Mounted from <votre_compte>/docker  
 +latest: digest: sha256:1183c62a5d31e202b5f5f528e9e7cdc36140aa3212c938e1d471c6b3b59f01bc size: 734 
 +Signing and pushing trust metadata 
 +Enter passphrase for root key with ID 192fc7e: fenestros 
 +Enter passphrase for new repository key with ID 7b13d02: fenestros 
 +Repeat passphrase for new repository key with ID 7b13d02: fenestros 
 +Finished initializing "docker.io/<votre_compte>/otherimage" 
 +Successfully signed docker.io/<votre_compte>/otherimage:latest
 </code> </code>
  
-Dans votre machine hôte, configurez le dépôt de mongodb :+<WRAP center round important 60%> 
 +**Important** : Notez la création d'une deuxième repositry key (ID 7b13d02 au lieu de ID 168c754) lors du push de l'image **<votre_compte>/otherimage:latest** car il s'agit d'un autre repositry.  
 +</WRAP> 
 + 
 +La présence de cette deuxième repositry key (**7b13d02d74264624fb201e7ae13ae694286b9f761aa86adddefd0408c7234a58.key**) peut être constatée dans le répertoire **~/.docker/trust/private** :
  
 <code> <code>
-[root@f5b45072b831 /]# exit +root@debian9:~/nottrustedls -~/.docker/trust/private 
-root@debian9:~# +total 12 
-root@debian9:~# apt-get install dirmngr +-rw------- 1 root root 447 nov 10 14:49 168c754ea8f36ce7fbcbe2299b6d91fc0f4d594c9ed9b86916687b618d8438ac.key 
-root@debian9:~# +-rw------- 1 root root 416 nov.  10 14:49 192fc7ed9543ad4bceec58886ab1d605b7433c35f7462d7343d0780d8fddf1db.key 
-root@debian9:~# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 +-rw------- root root 451 nov.  10 17:37 7b13d02d74264624fb201e7ae13ae694286b9f761aa86adddefd0408c7234a58.key
-Executing: /tmp/apt-key-gpghome.xMuszKS6JM/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 +
-gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key <packaging@mongodb.com>" imported +
-gpg: Total number processed: 1 +
-gpg:               imported:+
-root@debian9:~#  +
-root@debian9:~# echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list +
-deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main +
-root@debian9:~#  +
-root@debian9:~# apt-get update+
 </code> </code>
  
-Cette foisinstallez uniquement le client de mongodb :+En inspectant les clefs des images crééesl'utilisation des différentes clefs est démontrées très clairement :
  
 <code> <code>
-root@debian9:~# apt-get install mongodb-org-shell +root@debian9:~/nottrusteddocker trust inspect <votre_compte>/docker:alpine 
-Lecture des listes de paquets... Fait +[ 
-Construction de l'arbre des dépendances        +    { 
-Lecture des informations d'état... Fait +        "Name": "<votre_compte>/docker:alpine", 
-Les NOUVEAUX paquets suivants seront installés +        "SignedTags"[ 
-  mongodb-org-shell +            { 
-0 mis à jour1 nouvellement installés0 à enlever et 95 non mis à jour. +                "SignedTag": "alpine", 
-Il est nécessaire de prendre 9 809 ko dans les archives. +                "Digest": "e4355b66995c96b4b468159fc5c7e3540fcef961189ca13fee877798649f531a"
-Après cette opération39,8 Mo d'espace disque supplémentaires seront utilisés. +                "Signers": [ 
-Réception de:1 http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0/main amd64 mongodb-org-shell amd64 4.0.8 [9 809 kB+                    "Repo Admin" 
-9 809 ko réceptionnés en 7s (1 245 ko/s)                                                                                                                                 +                ] 
-Sélection du paquet mongodb-org-shell précédemment désélectionné. +            } 
-(Lecture de la base de données... 91513 fichiers et répertoires déjà installés.) +        ], 
-Préparation du dépaquetage de .../mongodb-org-shell_4.0.8_amd64.deb ... +        "Signers": []
-Dépaquetage de mongodb-org-shell (4.0.8) ... +        "AdministrativeKeys"
-Paramétrage de mongodb-org-shell (4.0.8) ... +            { 
-Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...+                "Name": "Root", 
 +                "Keys":
 +                    { 
 +                        "ID": "d4074334a4ff5a9a43ebd1320ad77c2df88c990ec812f90eb045c603c01ab698" 
 +                    } 
 +                ] 
 +            }, 
 +            { 
 +                "Name": "Repository", 
 +                "Keys":
 +                    { 
 +                        "ID": "168c754ea8f36ce7fbcbe2299b6d91fc0f4d594c9ed9b86916687b618d8438ac" 
 +                    } 
 +                ] 
 +            } 
 +        ] 
 +    } 
 +
 +root@debian9:~/nottrusted# docker trust inspect <votre_compte>/docker:nottrusted 
 +
 +    { 
 +        "Name": "<votre_compte>/docker:nottrusted", 
 +        "SignedTags": [ 
 +            { 
 +                "SignedTag": "nottrusted", 
 +                "Digest": "1183c62a5d31e202b5f5f528e9e7cdc36140aa3212c938e1d471c6b3b59f01bc", 
 +                "Signers":
 +                    "Repo Admin" 
 +                
 +            } 
 +        ], 
 +        "Signers": [], 
 +        "AdministrativeKeys": [ 
 +            { 
 +                "Name": "Root", 
 +                "Keys":
 +                    { 
 +                        "ID": "d4074334a4ff5a9a43ebd1320ad77c2df88c990ec812f90eb045c603c01ab698" 
 +                    } 
 +                ] 
 +            }, 
 +            { 
 +                "Name": "Repository", 
 +                "Keys":
 +                    { 
 +                        "ID": "168c754ea8f36ce7fbcbe2299b6d91fc0f4d594c9ed9b86916687b618d8438ac" 
 +                    } 
 +                ] 
 +            } 
 +        ] 
 +    } 
 +]
 </code> </code>
  
-Notez qu'à ce stade le conteneur ne possède pas d'adresse IP car il n'est pas démarré :+<WRAP center round important 60%> 
 +**Important** Notez que les clefs utilisées sont les mêmes pour les deux images.  
 +</WRAP>
  
 <code> <code>
-root@debian9:~# docker inspect mongo | grep IP +root@debian9:~/nottrusted# docker trust inspect <votre_compte>/otherimage:latest 
-            "LinkLocalIPv6Address": "", +
-            "LinkLocalIPv6PrefixLen": 0, +    { 
-            "SecondaryIPAddresses": null, +        "Name": "<votre_compte>/otherimage:latest", 
-            "SecondaryIPv6Addresses": null+        "SignedTags": [ 
-            "GlobalIPv6Address": "", +            
-            "GlobalIPv6PrefixLen": 0, +                "SignedTag": "latest", 
-            "IPAddress""", +                "Digest": "1183c62a5d31e202b5f5f528e9e7cdc36140aa3212c938e1d471c6b3b59f01bc", 
-            "IPPrefixLen": 0, +                "Signers": [ 
-            "IPv6Gateway": "", +                    "Repo Admin" 
-                    "IPAMConfig": null, +                ] 
-                    "IPAddress": "", +            } 
-                    "IPPrefixLen": 0+        ], 
-                    "IPv6Gateway": "", +        "Signers": []
-                    "GlobalIPv6Address": "", +        "AdministrativeKeys": [ 
-                    "GlobalIPv6PrefixLen": 0,+            
 +                "Name": "Root", 
 +                "Keys": [ 
 +                    
 +                        "ID": "26f00698f51be2824c6fe85a14722c279bbd487125fe8fa18c0fc8f76dd6280d
 +                    
 +                ] 
 +            }
 +            { 
 +                "Name": "Repository", 
 +                "Keys": [ 
 +                    
 +                        "ID": "7b13d02d74264624fb201e7ae13ae694286b9f761aa86adddefd0408c7234a58" 
 +                    } 
 +                ] 
 +            } 
 +        ] 
 +    } 
 +]
 </code> </code>
  
-Démarrez donc le conteneur et cherchez l'adresse IP de celui-ci :+<WRAP center round important 60%> 
 +**Important** Notez que les clefs utilisées sont différentes.  
 +</WRAP>
  
-<code> +===Supprimer une Signature===
-root@debian9:~# docker start mongo +
-mongo +
-root@debian9:~# docker inspect mongo | grep IP +
-            "LinkLocalIPv6Address": "", +
-            "LinkLocalIPv6PrefixLen": 0, +
-            "SecondaryIPAddresses": null, +
-            "SecondaryIPv6Addresses": null, +
-            "GlobalIPv6Address": "", +
-            "GlobalIPv6PrefixLen": 0, +
-            "IPAddress": "172.17.0.3", +
-            "IPPrefixLen": 16, +
-            "IPv6Gateway": "", +
-                    "IPAMConfig": null, +
-                    "IPAddress": "172.17.0.3", +
-                    "IPPrefixLen": 16, +
-                    "IPv6Gateway": "", +
-                    "GlobalIPv6Address": "", +
-                    "GlobalIPv6PrefixLen": 0, +
-</code>+
  
-Connectez-vous maintenant à votre mongodb à partir de la machine hôte :+Dernièrement il est possible de supprimer la signature d'une image avec la commande **docker trust revoke** :
  
 <code> <code>
-root@debian9:~# mongo --host 172.17.0.3 +root@debian9:~# docker trust revoke <votre_compte>/docker:alpine 
-MongoDB shell version v4.0.8 +Enter passphrase for repository key with ID 168c754:  
-connecting tomongodb://172.17.0.3:27017/?gssapiServiceName=mongodb +Successfully deleted signature for <votre_compte>/docker:alpine 
-WARNINGNo implicit sessionLogical Sessions are only supported on server versions 3.6 and greater. +root@debian9:~# docker trust inspect <votre_compte>/docker:alpine 
-Implicit sessiondummy session +
-MongoDB server version4.2.2 +    { 
-WARNINGshell and server versions do not match +        "Name""<votre_compte>/docker:alpine", 
-Welcome to the MongoDB shell. +        "SignedTags"[], 
-For interactive help, type "help"+        "Signers"[], 
-For more comprehensive documentationsee +        "AdministrativeKeys"[ 
- http://docs.mongodb.org/ +            { 
-Questions? Try the support group +                "Name": "Root", 
- http://groups.google.com/group/mongodb-user +                "Keys"[ 
-Server has startup warnings:  +                    { 
-2019-04-09T17:31:33.827+0000 I CONTROL  [initandlisten** WARNINGYou are running this process as the root userwhich is not recommended. +                        "ID""d4074334a4ff5a9a43ebd1320ad77c2df88c990ec812f90eb045c603c01ab698" 
-2019-04-09T17:31:33.827+0000 I CONTROL  [initandlisten]  +                    } 
->   +                ] 
 +            }, 
 +            { 
 +                "Name""Repository"
 +                "Keys": [ 
 +                    { 
 +                        "ID": "168c754ea8f36ce7fbcbe2299b6d91fc0f4d594c9ed9b86916687b618d8438ac" 
 +                    } 
 +                
 +            } 
 +        ] 
 +    } 
 +]
 </code> </code>
 +
  
 ----- -----
 <html> <html>
 <div align="center"> <div align="center">
-Copyright © 2021 Hugh Norris+Copyright © 2021 Hugh NORRIS
 </div> </div>
 </html> </html>
- 
Menu