diff --git a/labs/lab-01-iam/Dockerfile b/labs/lab-01-iam/Dockerfile new file mode 100644 index 0000000..b9fa87d --- /dev/null +++ b/labs/lab-01-iam/Dockerfile @@ -0,0 +1,61 @@ +# Lab 01 - IAM & Sicurezza +# Dockerfile per container non-root (INF-01 requirement) +# +# Questo Dockerfile dimostra come creare un container che gira +# come utente non-root, seguendo il principio del minimo privilegio. + +FROM alpine:3.19 + +# Label per metadata +LABEL maintainer="Lab 01 - IAM & Sicurezza" +LABEL description="Container non-root per dimostrare permessi IAM" +LABEL version="1.0" + +# Crea utente non-root con UID/GID specifici per consistenza +# UID 1000 e GID 1000 sono comuni per utenti non-root +RUN addgroup -g 1000 labuser && \ + adduser -D -u 1000 -G labuser labuser + +# Imposta la working directory (creata con adduser -D) +WORKDIR /home/labuser + +# Crea un file semplice per verificare i permessi di scrittura +RUN echo "Questo file e stato creato durante la build" > /home/labuser/test.txt && \ + chown labuser:labuser /home/labuser/test.txt + +# PASSA A UTENTE NON-ROOT PRIMA DI QUALSIASI OPERAZIONE +# Questo e il punto chiave per INF-01: nessun processo gira come root +USER labuser + +# Verifica che il container gira come utente non-root +CMD ["sh", "-c", "\ +echo '========================================' && \ +echo 'Lab 01 - IAM & Sicurezza' && \ +echo 'Container non-root verification (INF-01)' && \ +echo '========================================' && \ +echo '' && \ +echo 'Utente corrente:' && \ +whoami && \ +echo '' && \ +echo 'UID:' && \ +id -u && \ +echo '' && \ +echo 'GID:' && \ +id -g && \ +echo '' && \ +echo 'Gruppi:' && \ +groups && \ +echo '' && \ +echo 'Home directory:' && \ +pwd && \ +echo '' && \ +echo 'Contenuto di test.txt (permessi scrittura):' && \ +cat test.txt && \ +echo '' && \ +echo '========================================' && \ +echo 'Se vedi \"labuser\" sopra, INF-01 e soddisfatto!' && \ +echo '========================================' && \ +echo '' && \ +echo 'Container in esecuzione. Premi Ctrl-C per uscire.' && \ +sleep 3600 \ +"]