diff --git a/labs/lab-01-iam/tutorial/02-docker-group-permissions.md b/labs/lab-01-iam/tutorial/02-docker-group-permissions.md new file mode 100644 index 0000000..3154308 --- /dev/null +++ b/labs/lab-01-iam/tutorial/02-docker-group-permissions.md @@ -0,0 +1,180 @@ +# Tutorial: Permessi Docker tramite Gruppi Linux + +In questo tutorial imparerai come dare permessi Docker a un utente tramite l'appartenenza al gruppo `docker`. Questo simula l'assegnazione di policy IAM a un utente cloud. + +## Obiettivo + +Aggiungere l'utente `lab01_student` al gruppo `docker`, permettendo l'accesso al socket Docker. + +## Prerequisiti + +- Completato [Tutorial 1: Creare Utenti Linux](./01-create-linux-users.md) +- L'utente `lab01_student` esiste e NON è nel gruppo docker + +--- + +## Passo 1: Verifica lo stato corrente + +Prima di modificare i permessi, verifichiamo lo stato attuale. + +Esegui: + +```bash +# Verifica i gruppi dell'utente +groups lab01_student + +# Verifica i permessi del socket Docker +ls -l /var/run/docker.sock +``` + +Atteso: +- `groups` mostra solo `lab01_student` (NON docker) +- Il socket Docker ha permessi `srw-rw----` ed è di proprietà `root:docker` + +Spiegazione: Il socket Docker (`/var/run/docker.sock`) è accessibile solo a `root` e ai membri del gruppo `docker`. + +--- + +## Passo 2: Aggiungi l'utente al gruppo docker + +Ora aggiungiamo l'utente al gruppo per dargli accesso Docker. + +Esegui: + +```bash +# Aggiungi lab01_student al gruppo docker +sudo usermod -aG docker lab01_student + +# Verifica l'appartenenza al gruppo +groups lab01_student +``` + +Atteso: + +``` +lab01_student : lab01_student docker +``` + +Nota: Il gruppo `docker` ora appare nell'elenco! + +Spiegazione: +- `-aG` significa "append" (aggiunge senza rimuovere altri gruppi) e "group" (modifica i gruppi) +- Questo è equivalente ad assegnare una policy IAM a un utente cloud + +--- + +## Passo 3: Importante - Login necessario + +I gruppi vengono valutati al momento del login. La sessione corrente dell'utente non vedrà ancora il nuovo gruppo. + +Per verificare il gruppo membership (senza dover fare login): + +```bash +# Questo mostra i gruppi anche se non sono ancora attivi nella sessione +groups lab01_student +``` + +Per rendere attivi i nuovi gruppi, l'utente deve fare una di queste operazioni: +1. Fare logout e login +2. Eseguire `newgrp docker` +3. Eseguire `su - lab01_student` + +--- + +## Passo 4: Verifica l'accesso Docker + +Ora verifichiamo che l'utente può accedere a Docker. + +Esegui: + +```bash +# Metodo 1: Usa newgrp per attivare il gruppo nella sessione corrente +sudo -u lab01_student -i docker ps +``` + +Atteso: + +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +``` + +Il comando funziona! L'utente ora ha accesso Docker. + +--- + +## Passo 5: Verifica con un container di test + +Facciamo partire un container semplice per confermare che tutto funziona. + +Esegui: + +```bash +# Esegui un container Alpine come lab01_student +sudo -u lab01_student -i docker run --rm alpine:3.19 whoami +``` + +Atteso: + +``` +root +``` + +Nota: Il container mostra "root" perché questo è l'utente di default DENTRO il container (non è l'utente che ha lanciato il comando). Nel [Tutorial 3](./03-verify-iam-setup.md) imparerai a far girare i container come utente non-root. + +--- + +## Parallelismo con AWS IAM + +| Operazione Locale | AWS IAM Equivalente | +|-------------------|---------------------| +| `usermod -aG docker user` | `AttachUserPolicy` o `AddUserToGroup` | +| Utente nel gruppo `docker` | Utente IAM con policy permessiva | +| Accesso al socket Docker | Accesso alle API AWS | + +--- + +## Verifica + +Hai completato questo tutorial quando: +- [ ] L'utente `lab01_student` è nel gruppo docker +- [ ] L'utente può eseguire `docker ps` +- [ ] L'utente può fare partire container +- [ ] Capisci il parallelismo con IAM User + Policy + +## Prossimo Passo + +Nel [prossimo tutorial](./03-verify-iam-setup.md) imparerai a verificare l'intera configurazione e a far girare container non-root. + +--- + +## Troubleshooting + +**Problema: L'utente non può ancora eseguire docker ps** + +Soluzione 1: Verifica di aver usato `sudo -u lab01_student -i` + +```bash +# Il flag -i è importante per caricare l'ambiente corretto +sudo -u lab01_student -i docker ps +``` + +Soluzione 2: Verifica che l'utente sia nel gruppo + +```bash +groups lab01_student +# Se non vedi "docker", ripeti il Passo 2 +``` + +**Problema: Il socket Docker ha permessi errati** + +Soluzione: + +```bash +# Correggi i permessi del socket +sudo chmod 660 /var/run/docker.sock +sudo chown root:docker /var/run/docker.sock +``` + +**Problema: `usermod: user 'lab01_student' does not exist`** + +Soluzione: Prima crea l'utente seguendo il [Tutorial 1](./01-create-linux-users.md).