Files
laboratori-cloud/labs/lab-01-iam/tutorial/03-verify-iam-setup.md
Luca Sacchi Ricciardi 7bd61111f3 feat(02-02): create tutorial part 3 - verification and non-root containers
- Step-by-step verification of IAM configuration
- Multiple methods to verify non-root execution
- Explains principle of least privilege
- Integrates with automated test scripts
2026-03-24 22:24:52 +01:00

4.8 KiB

Tutorial: Verifica Configurazione IAM e Container Non-Root

In questo tutorial verificherai l'intera configurazione IAM e imparerai a far girare container come utente non-root, seguendo il principio del minimo privilegio.

Obiettivo

Verificare che la configurazione IAM funzioni e far girare container come utente non-root (INF-01).

Prerequisiti


Passo 1: Esegui lo script di verifica

Il lab include uno script automatizzato per verificare tutto.

Esegui:

bash labs/lab-01-iam/tests/99-final-verification.sh

Questo comando controllerà:

  1. Configurazione utenti e gruppi
  2. Accesso Docker
  3. Esecuzione container non-root
  4. Documentazione completa
  5. Parallelismi IAM

Se tutti i check sono verdi, sei pronto per procedere!


Passo 2: Verifica manuale - Accesso Docker

Verifichiamo manualmente che l'utente possa accedere a Docker.

Esegui:

# Verifica che docker ps funzioni
sudo -u lab01_student -i docker ps

# Verifica informazioni sul sistema Docker
sudo -u lab01_student -i docker info

Entrambi i comandi dovrebbero funzionare senza errori.


Passo 3: Crea un container NON-ROOT

Ora creiamo un container che gira come utente non-root, seguendo il principio del minimo privilegio.

Esegui:

cd labs/lab-01-iam

# Crea un Dockerfile di test
cat > Dockerfile.test << 'EOF'
FROM alpine:3.19

# Crea un utente non-root
RUN addgroup -g 1000 appgroup && \
    adduser -D -u 1000 -G appgroup appuser

# Passa all'utente non-root
USER appuser

# Verifica che il container gira come appuser
CMD ["sh", "-c", "whoami && sleep 3600"]
EOF

Spiegazione:

  • Creiamo un utente appuser con UID 1000
  • Passiamo a questo utente con USER
  • Il container ora girerà come appuser, non come root

Passo 4: Build e run del container

Ora costruiamo e facciamo partire il container.

Esegui:

# Costruisci l'immagine
sudo -u lab01_student -i docker build -f Dockerfile.test -t test-non-root .

# Fai partire il container
sudo -u lab01_student -i docker run --name lab01-test-container -d test-non-root

Atteso:

  • Build completa senza errori
  • Container ID viene mostrato

Passo 5: Verifica che il container NON gira come root

Verifichiamo l'utente del container in tre modi.

Esegui:

# Metodo 1: docker exec whoami
docker exec lab01-test-container whoami

Atteso:

appuser

Esegui:

# Metodo 2: docker inspect
docker inspect lab01-test-container --format='{{.Config.User}}'

Atteso:

appuser

Esegui:

# Metodo 3: docker top (mostra il processo sull'host)
docker top lab01-test-container

Atteso:

  • La colonna USER mostra 1000 (non 0)

Passo 6: Verifica INF-01 - Nessun container root

Il requisito INF-01 richiede che NESSUN container giri come root.

Esegui:

bash labs/lab-01-iam/tests/03-non-root-test.sh

Questo script verificherà tutti i container e garantirà che nessuno giri come root.


Passo 7: Pulisci il container di test

Dopo aver verificato, puliamo il container di test.

Esegui:

# Ferma e rimuovi il container
docker stop lab01-test-container
docker rm lab01-test-container

# Rimuovi l'immagine
docker rmi test-non-root

Principio del Minimo Privilegio

Perché NON usare root nei container?

Rischio Root Mitigazione Non-Root
Container compromesso = host compromesso Utente limitato = danno contenuto
Container può leggere/scrivere qualsiasi file sull'host Container può solo accedere ai suoi file
Escalation privilegi possibile Privilegi già limitati

Questo è lo stesso principio di IAM in cloud: dai solo i permessi minimi necessari.


Verifica

Hai completato questo tutorial quando:

  • Lo script di verifica passa senza errori
  • Il container di test gira come utente non-root
  • Tutti e tre i metodi di verifica mostrano lo stesso utente non-root
  • Capisci perché INF-01 è importante per la sicurezza

Troubleshooting

Problema: docker exec mostra "root"

Soluzione: Verifica che il Dockerfile abbia la direttiva USER

# Verifica che USER sia nel Dockerfile
grep USER Dockerfile.test
# Dovrebbe mostrare: USER appuser

Problema: docker top mostra UID 0

Soluzione: Il container potrebbe essere stato configurato con docker-compose. Verifica:

# Verifica la direttiva user in docker-compose
grep -A 5 "user:" labs/lab-01-iam/docker-compose.yml

Problema: Il test INF-01 fallisce

Soluzione: Assicurati che TUTTI i container abbiano la direttiva USER o user:

# Controlla tutti i container
docker ps --format "{{.Names}}" | xargs -I {} sh -c 'echo "Container: {}" && docker inspect --format="{{.Config.User}}" {}'