From e56a37ef74978cf5abc60e40684a286004e184b4 Mon Sep 17 00:00:00 2001
From: Quentin Duchemin <quentinduchemin@tuta.io>
Date: Thu, 30 Jan 2020 19:06:19 +0100
Subject: [PATCH] [DBBackup] Switch to python3 image

---
 pica-db-backup/Dockerfile          |  3 +-
 pica-db-backup/README.md           | 76 ++++++++++++------------------
 pica-db-backup/backup_env_var.py   |  2 +-
 pica-db-backup/clair-whitelist.yml |  4 ++
 pica-db-backup/docker-compose.yml  |  1 -
 5 files changed, 35 insertions(+), 51 deletions(-)

diff --git a/pica-db-backup/Dockerfile b/pica-db-backup/Dockerfile
index da6e894d..5db85d19 100644
--- a/pica-db-backup/Dockerfile
+++ b/pica-db-backup/Dockerfile
@@ -1,4 +1,4 @@
-FROM registry.picasoft.net/pica-debian:stretch
+FROM python:3-slim-buster
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
@@ -6,7 +6,6 @@ RUN apt-get update && \
     mysql-client \
     mongodb-clients \
     mongo-tools \
-    python3 \
     cron && \
     apt-get clean && \
     mkdir -p /scripts/config
diff --git a/pica-db-backup/README.md b/pica-db-backup/README.md
index aa9a34b5..c521d7e1 100644
--- a/pica-db-backup/README.md
+++ b/pica-db-backup/README.md
@@ -6,30 +6,17 @@ Il est capable de gérer les bases de données `postgres`, `mysql` ou `mongo` po
 
 Il est flexible et se configure via des fichiers JSON.
 
-<!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
+<!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
 
-- [Lancement](#lancement)
-- [Configuration](#configuration)
-	- [Structure](#structure)
-	- [Gestion des secrets](#gestion-des-secrets)
-	- [Exemple](#exemple)
+- [Backup des bases de données des services](#backup-des-bases-de-donnes-des-services)
+	- [Configuration](#configuration)
+		- [Structure](#structure)
+		- [Gestion des secrets](#gestion-des-secrets)
+		- [Exemple](#exemple)
+	- [Lancement](#lancement)
 
 <!-- /TOC -->
 
-## Lancement
-
-On se synchronise simplement avec le dépôt et on lance le Docker Compose.
-
-On copie `secrets/db.secrets.example` dans `secrets/db.secrets` :
-* On assigne le nom de la VM à `HOSTNAME` (*e.g.* `pica02`),
-* On renseigne les secrets (voir [plus bas]((#gestion-des-secrets)))
-
-L'outil sélectionne automatiquement le bon fichier de configuration en fonction du nom d'hôte de la machine virtuelle, il n'y a donc rien à modifier :
-
-```
-$ docker-compose up -d
-```
-
 ## Configuration
 
 Les fichiers dans [`.config`](./config) recensent les informations sur les différents services mis en place sur les machines et les informations nécessaires pour lancer les rotations sur ces services.
@@ -42,19 +29,14 @@ On veillera à ce que les noms d'hôte correspondent bien aux noms des conteneur
 ### Structure
 
  - Nom du service : Contient une structure de données contenant les informations relatives au service telles qu'indiquées ci-dessous
- - "Host" : Indique l'hôte de la base de données
- - "Port" : Indique le port pour se connecter au service
- - "Database" : Indique le nom de la base de données
- - "User" : Nom d'utilisateur ou nom d'une variable d'environnement (optionnel)
- - "Password" : Mot de passe ou nom d'une variable d'environnement (optionnel)
- - "Folder" : Indique le nom du dossier de backup utilisé par le script de backup et de rotation
- - "Cron" : Indique la fréquence de temps à laquelle les backups sont effectués par le script de rotation au format cron
- - "Init-Backup" : Indique si un backup doit être effectué au démarrage du service, en plus de la programmation du cron
- - "Backup-Rota" : Contient les paramètres pour la rotation des backups dans une structure de données comme indiqué ci-dessous
-     - "Hour" : nombre de backups horaires à conserver
-     - "Day" : nombre de backups quotidiens à conserver
-     - "Week" : nombre de backups hebdomadaires à conserver
-     - "Month": nombre de backups mensuels à conserver
+ - `Host` : Indique l'hôte de la base de données
+ - `Port` : Indique le port pour se connecter au service
+ - `Database` : Indique le nom de la base de données
+ - `User` : Nom d'utilisateur ou nom d'une variable d'environnement (optionnel)
+ - `Password` : Mot de passe ou nom d'une variable d'environnement (optionnel)
+ - `Folder` : Indique le nom du dossier de backup utilisé par le script de backup et de rotation
+ - `Cron` : Indique la fréquence de temps à laquelle les backups sont effectués par le script de rotation au format cron
+ - `Init-Backup` : Indique si un backup doit être effectué au démarrage du service, en plus de la programmation du cron
 
 ### Gestion des secrets
 
@@ -78,13 +60,6 @@ La substitution est effectué automatiquement par l'outil.
       "Folder": "wekan",
       "Cron" : "0 * * * *",
       "Init-Backup" : "0",
-      "Backup-Rota":
-          {
-              "Hour" : 24,
-              "Day" : 7,
-              "Week" : 4,
-              "Month" : 12
-          }
     },
   "etherpad":
     {
@@ -98,13 +73,20 @@ La substitution est effectué automatiquement par l'outil.
       "Cron" : "0 * * * *",
       "Options" : "--single-transaction",
       "Init-Backup" : "0",
-      "Backup-Rota":
-          {
-              "Hour" : 24,
-              "Day" : 7,
-              "Week" : 4,
-              "Month" : 12
-          }
     }
 }
 ```
+
+## Lancement
+
+On se synchronise simplement avec le dépôt et on lance le Docker Compose.
+
+On copie `secrets/db.secrets.example` dans `secrets/db.secrets` :
+* On assigne le nom de la VM à `HOSTNAME` (*e.g.* `pica02`),
+* On renseigne les secrets (voir [plus bas]((#gestion-des-secrets)))
+
+L'outil sélectionne automatiquement le bon fichier de configuration en fonction du nom d'hôte de la machine virtuelle, il n'y a donc rien à modifier :
+
+```
+$ docker-compose up -d
+```
diff --git a/pica-db-backup/backup_env_var.py b/pica-db-backup/backup_env_var.py
index c4caed86..02e42759 100755
--- a/pica-db-backup/backup_env_var.py
+++ b/pica-db-backup/backup_env_var.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
 import os
 import sys
 import json
diff --git a/pica-db-backup/clair-whitelist.yml b/pica-db-backup/clair-whitelist.yml
index e69de29b..840afa4d 100644
--- a/pica-db-backup/clair-whitelist.yml
+++ b/pica-db-backup/clair-whitelist.yml
@@ -0,0 +1,4 @@
+generalwhitelist:
+  CVE-2019-19603: sqlite3 -> pas de contre mesure dans buster
+  CVE-2019-18224: libidn2 -> pas de contre mesure dans buster
+  CVE-2019-17455: libntlm -> pas de contre mesure dans buster
diff --git a/pica-db-backup/docker-compose.yml b/pica-db-backup/docker-compose.yml
index 6d0b2060..7407f383 100644
--- a/pica-db-backup/docker-compose.yml
+++ b/pica-db-backup/docker-compose.yml
@@ -12,7 +12,6 @@ services:
     volumes:
       - /DATA/BACKUP/:/backup/
       - ./config:/config
-      - /etc/localtime:/etc/localtime:ro
     env_file:
       - ./secrets/db.secrets
     networks:
-- 
GitLab