fix(lab-05): align database lab with runtime behavior
This commit is contained in:
@@ -19,21 +19,21 @@ PostgreSQL official image NON gira come root.
|
||||
|
||||
Esegui:
|
||||
```bash
|
||||
# Verifica utente nel container
|
||||
docker exec lab05-db whoami
|
||||
# Verifica l'utente del processo principale (PID 1)
|
||||
docker exec lab05-db sh -c "ps -o user,pid,args | awk '\$2 == 1 {print \$1, \$2, \$3}'"
|
||||
|
||||
# Atteso: postgres
|
||||
# Atteso: postgres 1 postgres
|
||||
```
|
||||
|
||||
Verifica UID:
|
||||
```bash
|
||||
# Verifica UID != 0
|
||||
docker exec lab05-db id -u
|
||||
# Verifica UID del processo principale != 0
|
||||
docker exec lab05-db sh -c "awk '/^Uid:/ {print \$2}' /proc/1/status"
|
||||
|
||||
# Atteso: 999 (postgres user UID)
|
||||
# Atteso: un valore non-zero (nel lab osservato: 70)
|
||||
```
|
||||
|
||||
Se l'utente è `root` o UID `0`, c'è una violazione di sicurezza.
|
||||
Nota: `docker exec ... whoami` puo mostrare `root` per la shell di debug lanciata con `exec`, ma non rappresenta il processo principale del database. Per INF-01 devi controllare il processo PID 1.
|
||||
|
||||
---
|
||||
|
||||
@@ -62,8 +62,14 @@ Test isolamento:
|
||||
# Prova connessione dall'host (DEVE fallire)
|
||||
psql -h localhost -U lab05_user -d lab05_db 2>&1 || echo "Corretto: non accessibile"
|
||||
|
||||
# Prova connessione da container app (DEVE successo)
|
||||
docker exec lab05-app psql -h db -U lab05_user -d lab05_db -c "SELECT 1;"
|
||||
# Prova reachability dal container app (DEVE riuscire)
|
||||
docker exec lab05-app ping -c 2 db
|
||||
|
||||
# Prova query SQL da un client nella rete privata (DEVE riuscire)
|
||||
docker run --rm --network lab05-vpc-private \
|
||||
-e PGPASSWORD=lab05_password \
|
||||
postgres:16-alpine \
|
||||
psql -h db -U lab05_user -d lab05_db -c "SELECT 1;"
|
||||
```
|
||||
|
||||
---
|
||||
@@ -104,13 +110,13 @@ I dati devono persistere in volume nominativo.
|
||||
Esegui:
|
||||
```bash
|
||||
# Verifica volume esista
|
||||
docker volume ls | grep lab05_db-data
|
||||
docker volume ls | grep lab-05-database_db-data
|
||||
|
||||
# Verifica montaggio
|
||||
docker inspect lab05-db --format '{{range .Mounts}}{{if eq .Destination "/var/lib/postgresql/data"}}{{.Name}}{{end}}{{end}}'
|
||||
```
|
||||
|
||||
Atteso: `lab05_db-data`
|
||||
Atteso: `lab-05-database_db-data`
|
||||
|
||||
---
|
||||
|
||||
@@ -120,11 +126,10 @@ Esegui lo script di verifica sicurezza.
|
||||
|
||||
Esegui:
|
||||
```bash
|
||||
cd tests
|
||||
./04-security-test.sh
|
||||
bash tests/99-final-verification.sh
|
||||
```
|
||||
|
||||
Tutti i test devono PASSARE.
|
||||
Lo script finale copre anche i controlli di sicurezza principali del lab.
|
||||
|
||||
---
|
||||
|
||||
@@ -205,8 +210,7 @@ Esegui la verifica finale completa.
|
||||
|
||||
Esegui:
|
||||
```bash
|
||||
cd tests
|
||||
./99-final-verification.sh
|
||||
bash tests/99-final-verification.sh
|
||||
```
|
||||
|
||||
Tutti i test devono PASSARE, inclusi:
|
||||
@@ -249,11 +253,9 @@ Prima di passare al production (simulato):
|
||||
|
||||
### Container gira come root
|
||||
```bash
|
||||
# Verifica image
|
||||
docker inspect lab05-db --format '{{.Config.User}}'
|
||||
|
||||
# PostgreSQL official image deve usare 'postgres'
|
||||
# Se root, controlla Dockerfile
|
||||
# Verifica il processo principale, non la shell lanciata con docker exec
|
||||
docker exec lab05-db sh -c "ps -o user,pid,args | awk '\$2 == 1 {print \$1, \$2, \$3}'"
|
||||
docker exec lab05-db sh -c "awk '/^Uid:/ {print \$2}' /proc/1/status"
|
||||
```
|
||||
|
||||
### Database accessibile dall'host
|
||||
|
||||
Reference in New Issue
Block a user