vault backup: 2025-04-29 08:22:48

This commit is contained in:
2025-04-29 08:22:48 +02:00
parent 980667ff22
commit 7bbfff3b3e

View File

@@ -21,10 +21,10 @@ Les développeur.euse.s de l'API viennent vous voir en disant qu'iels aimeraient
Quel(s) fichier(s) devez-vous éditer afin de satisfaire leur besoin ?
- [ ] main.py _0 points_
- [x] Dockerfile _1 points_
- [ ] docker-compose.yaml _0 points_
- [ ] .gitignore _0 points_
- [ ] main.py - _0 point_
- [x] Dockerfile - _1 point_
- [ ] docker-compose.yaml - _0 point_
- [ ] .gitignore - _0 point_
### Exercice 2
@@ -32,19 +32,19 @@ Quel(s) fichier(s) devez-vous éditer afin de satisfaire leur besoin ?
La nouvelle version de l'API doit pouvoir être testée sur l'infrastructure sans intérferer avec l'API en production. Vous devez donc mettre en place un nouveau container pour l'API de test qui s'accède par un port différent que celui utilisé pour l'API en production.
Le port mapping de l'API de production est `8000:8000`.
Le port mapping de l'API de production est `8000:8000` et le nom de l'image est `api-image`.
Quel(s) fichier(s) éditez vous ?
- [ ] main.py _0 points_
- [ ] Dockerfile _0 points_
- [x] docker-compose.yaml _1 points_
- [ ] .gitignore _0 points_
- [x] Je n'édite aucun fichier et utilise à la place la ligne de commande suivante: `docker run -p 8001:8000 my-image` _1 points_
- [ ] main.py - _0 point_
- [ ] Dockerfile - _0 point_
- [x] docker-compose.yaml - _1 point_
- [ ] .gitignore - _0 point_
- [x] Je n'édite aucun fichier et utilise à la place la ligne de commande suivante: `docker run -p 8001:8000 api-image` - _1 point_
### Exercice 3
#### 2 point max.
#### 2 points max.
Afin d'éviter de polluer la base de donnée de production avec les tests, vous avez décidé de créer un nouveau container pour la base de donnée. Ce container doit être similaire en tout point à la production avec les conditions suivantes:
- Cette nouvelle base de donnée ne doit en aucun cas interférer avec la production.
@@ -75,14 +75,14 @@ Vous décidez de dupliquer la configuration ci-dessus pour créer le nouveau con
Quelles étapes devez-vous effectuer pour que le nouveau container respecte les conditions ci-dessus ?
- [ ] Vous changez la version de l'image pour `postgres:latest` _0 points_
- [ ] Vous changez le port mapping pour `9876:9876` _0 points_
- [x] Vous changez le port mapping pour `9876:5432` _1 points_
- [ ] Vous supprimez les variables d'environnement _0 points_
- [ ] Vous changez le volume mapping du container pour `./src/:/var/lib/postgresql/data` _0 points_
- [ ] Vous changez le volume mapping du container pour `test-db-data:/var/lib/postgresql/data` et ajoutez `test-db-data` dans la définition des volumes en bas du fichier _0 points_
- [x] Vous supprimez le volume mapping du container _1 points_
- [ ] Vous supprimer la définition du volume `prod-db-data` en bas du fichier _-1 points_
- [ ] Vous changez la version de l'image pour `postgres:latest` - _0 point_
- [ ] Vous changez le port mapping pour `9876:9876`- _0 point_
- [x] Vous changez le port mapping pour `9876:5432` - _1 point_
- [ ] Vous supprimez les variables d'environnement - _0 point_
- [ ] Vous changez le volume mapping du container pour `./src/:/var/lib/postgresql/data` - _0 point_
- [ ] Vous changez le volume mapping du container pour `test-db-data:/var/lib/postgresql/data` et ajoutez `test-db-data` dans la définition des volumes en bas du fichier - _0 point_
- [x] Vous supprimez le volume mapping du container - _1 point_
- [ ] Vous supprimer la définition du volume `prod-db-data` en bas du fichier- _-1 point_
### Exercice 4
@@ -112,10 +112,10 @@ API/
Quel(s) autre(s) fichier(s) devez-vous modifier pour éviter de revoir le responsable sécurité prochainement ?
- [ ] main.py _0 points_
- [ ] Dockerfile _0 points_
- [x] docker-compose.yaml _1 points_
- [x] .gitignore _1 points_
- [ ] main.py - _0 point_
- [ ] Dockerfile - _0 point_
- [x] docker-compose.yaml - _1 point_
- [x] .gitignore - _1 point_
# Backend
@@ -139,6 +139,8 @@ On vous demande donc le code Python nécessaire pour effectuer les actions suiva
Vous devez `print` toutes les instances de `User` dont le nom est égal à "clown".
**Option 1** - _1 point_
```python
for user in User.select().where(User.name == "clown"):
print(user)
@@ -150,11 +152,13 @@ for user in User.select().where(User.name == "clown"):
On a de bonne raison de penser que l'utilisateur a créé un compte dans la base de donnée juste avant l'attaque. Il faudrait récupérer le `User` dont la date de création du compte correspond à la date de l'attaque afin de pouvoir le retrouver.
**Option 1** - _1 point_
```python
hacker = User.get(User.date_created=date(2025, 4, 17))
```
_équivalent à_
**Option 2** - _1 point_
```python
hacker = User.select().where(User.date_created=date(2025, 4, 17)).get()
@@ -167,7 +171,22 @@ hacker = User.select().where(User.date_created=date(2025, 4, 17)).get()
Vous devez à présent supprimer toutes les instances de `User` dont le nom est égal à "clown". Bonus si vous le faites en une seule ligne.
**Option 1** - _1 point_
```python
for user in User.select().where(User.name == "clown"):
user.delete_instance()
```
**Option 2** - _2 points_
```python
[user.delete_instance() for user in User.select().where(User.name == "clown")]
```
**Option 3** - _2 points_
```python
User.delete().where(User.name == "clown")
```