feat(02-02): create reference documents with technical specifications
- docker-socket-permissions.md: Docker socket technical specs and access control - linux-users-groups.md: Linux user management reference with commands - iam-parallels.md: Quick reference table for IAM parallelism - Pure reference material with tables and specifications
This commit is contained in:
116
labs/lab-01-iam/reference/docker-socket-permissions.md
Normal file
116
labs/lab-01-iam/reference/docker-socket-permissions.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Reference: Permessi del Socket Docker
|
||||
|
||||
Specifiche tecniche del socket Docker Unix domain socket e controllo accessi.
|
||||
|
||||
## Percorso del Socket
|
||||
|
||||
```
|
||||
/var/run/docker.sock
|
||||
```
|
||||
|
||||
## Permessi Standard
|
||||
|
||||
```
|
||||
srw-rw---- 1 root docker 0 Mar 24 20:00 /var/run/docker.sock
|
||||
```
|
||||
|
||||
| Campo | Valore | Significato |
|
||||
|-------|--------|-------------|
|
||||
| Tipo | `s` | Socket Unix domain |
|
||||
| Permessi | `rw-rw----` (660) | Owner e gruppo possono leggere/scrivere |
|
||||
| Owner | `root` | Il demone Docker gira come root |
|
||||
| Gruppo | `docker` | Membri del gruppo docker possono accedere |
|
||||
| Altro | `---` | Nessun altro permesso |
|
||||
|
||||
## Controllo Accessi
|
||||
|
||||
L'accesso al socket è controllato dai permessi file system standard Linux:
|
||||
|
||||
### Chi puo accedere?
|
||||
|
||||
| Utente | Accesso | Motivo |
|
||||
|--------|---------|--------|
|
||||
| root | Si | Proprietario del socket |
|
||||
| Membri del gruppo docker | Si | Permesso gruppo (rw) |
|
||||
| Altri utenti | No | Nessun permesso |
|
||||
|
||||
### Verifica Permessi
|
||||
|
||||
```bash
|
||||
# Mostra permessi dettagliati
|
||||
stat -c "%a %U %G %n" /var/run/docker.sock
|
||||
# Output: 660 root docker /var/run/docker.sock
|
||||
|
||||
# Verifica gruppo del socket
|
||||
stat -c "%G" /var/run/docker.sock
|
||||
# Output: docker
|
||||
|
||||
# Verifica proprietario
|
||||
stat -c "%U" /var/run/docker.sock
|
||||
# Output: root
|
||||
```
|
||||
|
||||
## Modifica Permessi
|
||||
|
||||
```bash
|
||||
# Modifica permessi (non raccomandato: 666 permette accesso a tutti)
|
||||
sudo chmod 660 /var/run/docker.sock
|
||||
|
||||
# Modifica gruppo
|
||||
sudo chown root:docker /var/run/docker.sock
|
||||
|
||||
# Modifica proprietario (non raccomandato)
|
||||
sudo chown $USER /var/run/docker.sock
|
||||
```
|
||||
|
||||
⚠️ **WARNING:** Non usare mai `chmod 666` o `777` sul socket Docker. Questo elimina tutti i controlli di accesso.
|
||||
|
||||
## Docker Daemon e Socket
|
||||
|
||||
### Allocazione Socket
|
||||
|
||||
Il demone Docker crea il socket all'avvio:
|
||||
|
||||
```bash
|
||||
# Avvia demone (crea/ricrea socket)
|
||||
sudo systemctl start docker
|
||||
|
||||
# Riavvia per ripristinare permessi
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
### Rootless Docker
|
||||
|
||||
Con rootless Docker, il socket si trova in:
|
||||
|
||||
```
|
||||
$XDG_RUNTIME_DIR/docker.sock
|
||||
# Tipicamente: /run/user/1000/docker.sock
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Diagnosi | Soluzione |
|
||||
|----------|----------|-----------|
|
||||
| Permission denied | Utente non in gruppo docker | `sudo usermod -aG docker $USER` |
|
||||
| Socket non trovato | Docker non in esecuzione | `sudo systemctl start docker` |
|
||||
| Permessi errati | chmod eseguito sul socket | `sudo systemctl restart docker` |
|
||||
| Gruppo errato | Chown sul socket | `sudo chown root:docker /var/run/docker.sock` |
|
||||
|
||||
## Comandi Rapidi
|
||||
|
||||
```bash
|
||||
# Verifica permessi attuali
|
||||
ls -l /var/run/docker.sock
|
||||
|
||||
# Verifica chi puo accedere
|
||||
namei -l /var/run/docker.sock
|
||||
|
||||
# Trova processi con handle al socket
|
||||
sudo lsof /var/run/docker.sock
|
||||
```
|
||||
|
||||
## Vedi Anche
|
||||
|
||||
- [Reference: Utenti e Gruppi Linux](./linux-users-groups.md)
|
||||
- [Explanation: Parallelismi IAM](../explanation/docker-iam-parallels.md)
|
||||
126
labs/lab-01-iam/reference/iam-parallels.md
Normal file
126
labs/lab-01-iam/reference/iam-parallels.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# Reference: Parallelismi Docker e AWS IAM
|
||||
|
||||
Tabella di riferimento rapido per i parallelismi tra concetti Docker/Linux e AWS IAM.
|
||||
|
||||
## Tabella Parallelismi
|
||||
|
||||
| Concetto Locale | AWS IAM Equivalente | Descrizione |
|
||||
|-----------------|---------------------|-------------|
|
||||
| Utente Linux (`student1`) | IAM User | Identità che può autenticarsi |
|
||||
| Gruppo Linux (`docker`) | IAM Group | Collezione di utenti con stessi permessi |
|
||||
| Permessi file/socket | IAM Policy | Regole che definiscono cosa è permesso |
|
||||
| `/var/run/docker.sock` | Service Endpoint | Risorsa protetta da controlli accesso |
|
||||
| `sudo` elevation | IAM Role Assumption | Temporanea elevazione privilegi |
|
||||
| `usermod -aG docker` | `AttachUserPolicy` | Assegna permessi a utente |
|
||||
| Appartenenza gruppo `docker` | Policy attachment | Permessi attivi per utente |
|
||||
|
||||
## Comandi a Confronto
|
||||
|
||||
### Creazione Utente
|
||||
|
||||
| Operazione Locale | Comando AWS |
|
||||
|-------------------|-------------|
|
||||
| `sudo useradd -m user` | `aws iam create-user --user-name user` |
|
||||
| `sudo passwd user` | `aws iam create-login-profile --user-name user --password Pass123!` |
|
||||
|
||||
### Gestione Permessi
|
||||
|
||||
| Operazione Locale | Comando AWS |
|
||||
|-------------------|-------------|
|
||||
| `sudo usermod -aG docker user` | `aws iam attach-user-policy --user-name user --policy-arn arn:aws:iam::aws:policy/PowerUserAccess` |
|
||||
| `sudo gpasswd -d user docker` | `aws iam detach-user-policy --user-name user --policy-arn arn:aws:iam::aws:policy/PowerUserAccess` |
|
||||
|
||||
### Verifica Permessi
|
||||
|
||||
| Operazione Locale | Comando AWS |
|
||||
|-------------------|-------------|
|
||||
| `groups user` | `aws iam list-attached-user-policies --user-name user` |
|
||||
| `id user` | `aws iam get-user --user-name user` |
|
||||
| `sudo -u user docker ps` | `aws sts get-caller-identity` |
|
||||
|
||||
### Elevazione Privilegi
|
||||
|
||||
| Operazione Locale | Comando AWS |
|
||||
|-------------------|-------------|
|
||||
| `sudo command` | Assumere IAM Role |
|
||||
| `su - root` | `aws sts assume-role` |
|
||||
|
||||
## Differenze Chiave
|
||||
|
||||
| Aspetto | Locale | Cloud AWS |
|
||||
|---------|--------|-----------|
|
||||
| Autenticazione | Password, SSH key | Access key, Secret key, Session token |
|
||||
| Autorizzazione | Gruppi Linux, permessi file | IAM Policies, JSON document |
|
||||
| Scope | Singolo host | Account AWS intero |
|
||||
| Audit | `last`, `/var/log/auth.log` | CloudTrail |
|
||||
| MFA | Non disponibile | Disponibile |
|
||||
|
||||
## Modelli di Policy
|
||||
|
||||
### Modello Allow
|
||||
|
||||
**Locale:**
|
||||
|
||||
```bash
|
||||
# Utente nel gruppo docker puo accedere al socket
|
||||
sudo usermod -aG docker utente
|
||||
```
|
||||
|
||||
**AWS:**
|
||||
|
||||
```json
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": "docker:*",
|
||||
"Resource": "*"
|
||||
}
|
||||
```
|
||||
|
||||
### Modello Deny
|
||||
|
||||
**Locale:**
|
||||
|
||||
```bash
|
||||
# Utente NON nel gruppo docker non puo accedere
|
||||
# (default deny)
|
||||
```
|
||||
|
||||
**AWS:**
|
||||
|
||||
```json
|
||||
{
|
||||
"Effect": "Deny",
|
||||
"Action": "docker:*",
|
||||
"Resource": "*"
|
||||
}
|
||||
```
|
||||
|
||||
## Best Practices Comuni
|
||||
|
||||
| Best Practice | Locale | Cloud |
|
||||
|---------------|--------|-------|
|
||||
| Minimo privilegio | Utenti non-root | IAM Policies restrittive |
|
||||
| Separazione doveri | Gruppi distinti | Gruppi IAM distinti |
|
||||
| Audit logging | auth.log | CloudTrail |
|
||||
| Rotazione credenziali | `chage` | Rotate access keys |
|
||||
|
||||
## Comandi Utili
|
||||
|
||||
```bash
|
||||
# Verifica membri gruppo docker
|
||||
getent group docker
|
||||
|
||||
# Simulazione AWS: lista politiche IAM
|
||||
aws iam list-attached-user-policies --user-name user
|
||||
|
||||
# Verifica permessi socket
|
||||
ls -l /var/run/docker.sock
|
||||
|
||||
# Simulazione AWS: simula accesso AWS
|
||||
aws sts get-caller-identity
|
||||
```
|
||||
|
||||
## Vedi Anche
|
||||
|
||||
- [Explanation: Docker IAM Parallels](../explanation/docker-iam-parallels.md)
|
||||
- [Tutorial: Permessi Docker](../tutorial/02-docker-group-permissions.md)
|
||||
223
labs/lab-01-iam/reference/linux-users-groups.md
Normal file
223
labs/lab-01-iam/reference/linux-users-groups.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# Reference: Utenti e Gruppi Linux
|
||||
|
||||
Specifiche tecniche per la gestione utenti e gruppi in Linux per il lab IAM.
|
||||
|
||||
## Comandi Utente
|
||||
|
||||
### useradd - Crea utente
|
||||
|
||||
```bash
|
||||
sudo useradd -m -s /bin/bash nome_utente
|
||||
```
|
||||
|
||||
| Flag | Significato |
|
||||
|------|-------------|
|
||||
| `-m` | Crea home directory |
|
||||
| `-s /bin/bash` | Imposta shell di login |
|
||||
| `-G group1,group2` | Aggiunge a gruppi supplementari |
|
||||
| `-u 1000` | Specifica UID |
|
||||
|
||||
### usermod - Modifica utente
|
||||
|
||||
```bash
|
||||
# Aggiungi a gruppo (append)
|
||||
sudo usermod -aG docker nome_utente
|
||||
|
||||
# Modifica shell
|
||||
sudo usermod -s /bin/zsh nome_utente
|
||||
|
||||
# Modifica gruppi supplementari (sovrascrive)
|
||||
sudo usermod -G docker,nome_utente nome_utente
|
||||
```
|
||||
|
||||
⚠️ **IMPORTANTE:** Usa `-aG` (append) per aggiungere a un gruppo senza rimuovere gli altri.
|
||||
|
||||
### userdel - Elimina utente
|
||||
|
||||
```bash
|
||||
# Elimina utente (mantieni home)
|
||||
sudo userdel nome_utente
|
||||
|
||||
# Elimina utente e home directory
|
||||
sudo userdel -r nome_utente
|
||||
```
|
||||
|
||||
### passwd - Imposta password
|
||||
|
||||
```bash
|
||||
# Imposta password per utente
|
||||
sudo passwd nome_utente
|
||||
|
||||
# Cambia la tua password
|
||||
passwd
|
||||
```
|
||||
|
||||
## Comandi Gruppo
|
||||
|
||||
### groupadd - Crea gruppo
|
||||
|
||||
```bash
|
||||
sudo groupadd docker
|
||||
```
|
||||
|
||||
### groupmod - Modifica gruppo
|
||||
|
||||
```bash
|
||||
# Rinomina gruppo
|
||||
sudo groupmod -n nuovo_nome vecchio_nome
|
||||
|
||||
# Modifica GID
|
||||
sudo groupmod -g 1001 docker
|
||||
```
|
||||
|
||||
### gpasswd - Gestisci membri gruppo
|
||||
|
||||
```bash
|
||||
# Aggiungi utente al gruppo
|
||||
sudo gpasswd -a utente gruppo
|
||||
|
||||
# Rimuovi utente dal gruppo
|
||||
sudo gpasswd -d utente gruppo
|
||||
|
||||
# Imposta amministratori gruppo
|
||||
sudo gpasswd -A utente1,utente2 gruppo
|
||||
```
|
||||
|
||||
### groupdel - Elimina gruppo
|
||||
|
||||
```bash
|
||||
sudo groupdelete docker
|
||||
```
|
||||
|
||||
## Comandi Informazione
|
||||
|
||||
### id - Mostra info utente
|
||||
|
||||
```bash
|
||||
# Mostra UID, GID e gruppi dell'utente corrente
|
||||
id
|
||||
|
||||
# Mostra info di un utente specifico
|
||||
id nome_utente
|
||||
|
||||
# Solo UID
|
||||
id -u nome_utente
|
||||
|
||||
# Solo gruppi
|
||||
id -G nome_utente
|
||||
```
|
||||
|
||||
Output esempio:
|
||||
|
||||
```
|
||||
uid=1001(lab01_student) gid=1001(lab01_student) groups=1001(lab01_student),999(docker)
|
||||
```
|
||||
|
||||
### groups - Mostra gruppi utente
|
||||
|
||||
```bash
|
||||
# Gruppi dell'utente corrente
|
||||
groups
|
||||
|
||||
# Gruppi di un utente specifico
|
||||
groups nome_utente
|
||||
```
|
||||
|
||||
### getent - Query database di sistema
|
||||
|
||||
```bash
|
||||
# Verifica che un gruppo esista
|
||||
getent group docker
|
||||
|
||||
# Output: docker:x:999:utente1,utente2
|
||||
# nome:x:GID:lista_membri
|
||||
|
||||
# Verifica che un utente esista
|
||||
getent passwd nome_utente
|
||||
|
||||
# Output: nome_utente:x:1001:1001:,,,:/home/nome_utente:/bin/bash
|
||||
# nome:x:UID:GID:commento:home:shell
|
||||
```
|
||||
|
||||
## File di Configurazione
|
||||
|
||||
### /etc/passwd
|
||||
|
||||
```bash
|
||||
# Visualizza tutti gli utenti
|
||||
cat /etc/passwd
|
||||
|
||||
# Aggiungi utente manualmente (non raccomandato)
|
||||
echo "utente:x:1001:1001::/home/utente:/bin/bash" | sudo tee -a /etc/passwd
|
||||
```
|
||||
|
||||
Formato:
|
||||
|
||||
```
|
||||
username:x:UID:GID:commento:home:shell
|
||||
```
|
||||
|
||||
### /etc/group
|
||||
|
||||
```bash
|
||||
# Visualizza tutti i gruppi
|
||||
cat /etc/group
|
||||
|
||||
# Aggiungi gruppo manualmente
|
||||
echo "docker:x:999:utente1,utente2" | sudo tee -a /etc/group
|
||||
```
|
||||
|
||||
Formato:
|
||||
|
||||
```
|
||||
gruppo:x:GID:lista_membri
|
||||
```
|
||||
|
||||
### /etc/shadow
|
||||
|
||||
```bash
|
||||
# Password e scadenza (richiede root)
|
||||
sudo cat /etc/shadow
|
||||
```
|
||||
|
||||
## Valutazione Gruppi al Login
|
||||
|
||||
I gruppi vengono valutati quando l'utente fa login:
|
||||
|
||||
| Momento | Gruppi Valutati |
|
||||
|---------|-----------------|
|
||||
| Avvio sistema | No |
|
||||
| Login interattivo | Si |
|
||||
| `su - utente` | Si (nuovo login) |
|
||||
| `newgrp group` | Si (solo sessione corrente) |
|
||||
| `sudo -u utente cmd` | No (gruppi dell'utente originale) |
|
||||
| Aggiunta gruppo con usermod | No (fino al prossimo login) |
|
||||
|
||||
## UID/GID Standard
|
||||
|
||||
| UID/GID | Utente/Gruppo |
|
||||
|---------|---------------|
|
||||
| 0 | root |
|
||||
| 1-999 | Utenti di sistema |
|
||||
| 1000-60000 | Utenti normali |
|
||||
| 999 | docker (tipico) |
|
||||
|
||||
## Comandi Rapidi
|
||||
|
||||
```bash
|
||||
# Lista tutti gli utenti umani
|
||||
cat /etc/passwd | grep ':[1-9][0-9][0-9][0-9]:'
|
||||
|
||||
# Lista tutti i gruppi
|
||||
cat /etc/group | cut -d: -f1
|
||||
|
||||
# Utenti in un gruppo
|
||||
members gruppo
|
||||
# Oppure:
|
||||
getent group gruppo | cut -d: -f4
|
||||
```
|
||||
|
||||
## Vedi Anche
|
||||
|
||||
- [Reference: Permessi Socket Docker](./docker-socket-permissions.md)
|
||||
- [How-To: Aggiungi Utente al Gruppo Docker](../how-to-guides/add-user-to-docker-group.md)
|
||||
Reference in New Issue
Block a user