Skip to content

Commit

Permalink
Merge pull request #87 from demarches-simplifiees/fix_typo_in_readme
Browse files Browse the repository at this point in the history
fix typo in readme
  • Loading branch information
LeSim authored Mar 10, 2023
2 parents 8cf8696 + f456512 commit 4116898
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,30 @@
## Contexte

DS Proxy est un proxy HTTP de chiffrement en streaming. Il est utilisé sur [démarches-simplifées](https://github.com/demarches-simplifiees/demarches-simplifiees.fr) avec un backend Openstack Swift mais devrait être compatible avec le protocol S3.
Il permet de se prémunir d'accès non authorisé aux espaces de stockages mutualisés de type object storage en y stockant uniquement de la donnée chiffrée.
Il permet de se prémunir d'accès non autorisé aux espaces de stockages mutualisés de type object storage en y stockant uniquement de la donnée chiffrée.

Fonctionnalités :
- chiffre et déchiffre de manière transparente pour le client des fichiers en http en les les stockants sur l'object storage
- chiffre et déchiffre de manière transparente pour le client des fichiers en http en les stockants sur l'object storage
- chiffre et stocke en local de gros fichier (`/local/`) depuis un envoi http
- chiffrer et dechiffrer des fichiers sur le système de fichier
- chiffrer et déchiffrer des fichiers sur le système de fichier
- est performant
- supporte de multiple clés de chiffrement pour se conformer à une politique de péremption de clés
- possède une url de health check `/ping` qui renvoie une 404 si le fichier `maintenance` est présent à coté du binaire.
- supporte de multiples clés de chiffrement pour se conformer à une politique de péremption de clés
- possède une url de health check `/ping` qui renvoie une 404 si le fichier `maintenance` est présent à côté du binaire

## Pour commencer

prérequis:
- [rust](rust-lang.org) dans la version préciser par le fichier `Cargo.toml`
- et dans la cadre de la démo [node](https://nodejs.org)
- [rust](rust-lang.org) dans la version précisée par le fichier `Cargo.toml`
- et dans le cadre de la démo [node](https://nodejs.org)

puis lancer le script `launch_demo.sh` qui compilera le proxy, le démarrera, et qui lancera un faux backend object storage en node.

## Installation

- compiler le proxy pour la production: `cargo build --release`, le binaire se trouve à présent ici : `target/release/ds_proxy`
- placer le binaire sur votre server et utiliser votre système habituel pour le superviser
exemple d'un fichier service minimal de supervision par systemd.

Exemple d'un fichier service minimal de supervision par systemd:

```
[Unit]
Expand All @@ -39,9 +40,9 @@ Environment=RUST_LOG="actix_web=info"
...
```

### Garder le password en mémoire
### Garder le mot de passe en mémoire

Pour éviter que le password ne reste sur le disque et en suivant https://www.netmeister.org/blog/passing-passwords.html, nous utilisons `mkfifo` pour créer un named pipe qui nous permet de transmettre le mot passe en restant en mémoire.
Pour éviter que le mot de passe ne reste sur le disque et en suivant https://www.netmeister.org/blog/passing-passwords.html, nous utilisons `mkfifo` pour créer un named pipe qui nous permet de le transmettre en restant en mémoire.
En voici le principe :
```
mkfifo -m 0600 password_file
Expand All @@ -55,7 +56,7 @@ rm -f password_file
### Algo
DS Proxy utilise actuellement l'algorithme de chiffrement [xchacha20poly1305](https://doc.libsodium.org/secret-key_cryptography/aead/chacha20-poly1305/xchacha20-poly1305_construction) proposé par la librairie [sodium](https://doc.libsodium.org/) dont l'interface est portée en rust par [sodiumoxide](https://github.com/sodiumoxide/sodiumoxide).

Les clés de chiffrement sont stockés sur un fichier `keyring.toml`. Ce fichier est lui même chiffré à l'aide d'un mot de passe maître et d'un sel.
Les clés de chiffrement sont stockées sur un fichier `keyring.toml`. Ce fichier est lui-même chiffré à l'aide d'un mot de passe maître et d'un sel.

## Comment contribuer ?

Expand Down

0 comments on commit 4116898

Please sign in to comment.