vault backup: 2025-04-29 08:22:48
This commit is contained in:
@@ -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 ?
|
Quel(s) fichier(s) devez-vous éditer afin de satisfaire leur besoin ?
|
||||||
|
|
||||||
- [ ] main.py _0 points_
|
- [ ] main.py - _0 point_
|
||||||
- [x] Dockerfile _1 points_
|
- [x] Dockerfile - _1 point_
|
||||||
- [ ] docker-compose.yaml _0 points_
|
- [ ] docker-compose.yaml - _0 point_
|
||||||
- [ ] .gitignore _0 points_
|
- [ ] .gitignore - _0 point_
|
||||||
|
|
||||||
### Exercice 2
|
### 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.
|
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 ?
|
Quel(s) fichier(s) éditez vous ?
|
||||||
|
|
||||||
- [ ] main.py _0 points_
|
- [ ] main.py - _0 point_
|
||||||
- [ ] Dockerfile _0 points_
|
- [ ] Dockerfile - _0 point_
|
||||||
- [x] docker-compose.yaml _1 points_
|
- [x] docker-compose.yaml - _1 point_
|
||||||
- [ ] .gitignore _0 points_
|
- [ ] .gitignore - _0 point_
|
||||||
- [x] Je n'édite aucun fichier et utilise à la place la ligne de commande suivante: `docker run -p 8001:8000 my-image` _1 points_
|
- [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
|
### 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:
|
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.
|
- 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 ?
|
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 la version de l'image pour `postgres:latest` - _0 point_
|
||||||
- [ ] Vous changez le port mapping pour `9876:9876` _0 points_
|
- [ ] Vous changez le port mapping pour `9876:9876`- _0 point_
|
||||||
- [x] Vous changez le port mapping pour `9876:5432` _1 points_
|
- [x] Vous changez le port mapping pour `9876:5432` - _1 point_
|
||||||
- [ ] Vous supprimez les variables d'environnement _0 points_
|
- [ ] Vous supprimez les variables d'environnement - _0 point_
|
||||||
- [ ] Vous changez le volume mapping du container pour `./src/:/var/lib/postgresql/data` _0 points_
|
- [ ] 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 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 point_
|
||||||
- [x] Vous supprimez le volume mapping du container _1 points_
|
- [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 points_
|
- [ ] Vous supprimer la définition du volume `prod-db-data` en bas du fichier- _-1 point_
|
||||||
|
|
||||||
### Exercice 4
|
### 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 ?
|
Quel(s) autre(s) fichier(s) devez-vous modifier pour éviter de revoir le responsable sécurité prochainement ?
|
||||||
|
|
||||||
- [ ] main.py _0 points_
|
- [ ] main.py - _0 point_
|
||||||
- [ ] Dockerfile _0 points_
|
- [ ] Dockerfile - _0 point_
|
||||||
- [x] docker-compose.yaml _1 points_
|
- [x] docker-compose.yaml - _1 point_
|
||||||
- [x] .gitignore _1 points_
|
- [x] .gitignore - _1 point_
|
||||||
|
|
||||||
# Backend
|
# 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".
|
Vous devez `print` toutes les instances de `User` dont le nom est égal à "clown".
|
||||||
|
|
||||||
|
**Option 1** - _1 point_
|
||||||
|
|
||||||
```python
|
```python
|
||||||
for user in User.select().where(User.name == "clown"):
|
for user in User.select().where(User.name == "clown"):
|
||||||
print(user)
|
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.
|
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
|
```python
|
||||||
hacker = User.get(User.date_created=date(2025, 4, 17))
|
hacker = User.get(User.date_created=date(2025, 4, 17))
|
||||||
```
|
```
|
||||||
|
|
||||||
_équivalent à_
|
**Option 2** - _1 point_
|
||||||
|
|
||||||
```python
|
```python
|
||||||
hacker = User.select().where(User.date_created=date(2025, 4, 17)).get()
|
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.
|
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
|
```python
|
||||||
for user in User.select().where(User.name == "clown"):
|
for user in User.select().where(User.name == "clown"):
|
||||||
user.delete_instance()
|
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")
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user