Entra qualcuno di nuovo in azienda e ha bisogno di "accesso ad AWS". La cosa veloce è creare un utente, dargli AdministratorAccess e andare avanti con la giornata. È anche ciò che trasforma l'errore di uno stagista, o una password rubata, in un account svuotato o in una fattura da migliaia di euro. Quasi tutti gli spaventi con AWS nelle piccole aziende cominciano con qualcuno che aveva molti più permessi di quelli che gli servivano.
La regola è semplice: ogni persona può fare solo quello che le serve per il suo lavoro, e niente di più. Si chiama privilegio minimo e non richiede competenze di sicurezza. Richiede di pensare un minuto a cosa farà quella persona: guardare? accendere e spegnere macchine? creare e cancellare cose? Con quella risposta, AWS ha già i permessi pronti e basta sceglierli.
Questa guida usa i gruppi invece di dare permessi a ogni utente uno per uno. È la differenza tra decidere una volta per ogni funzione e decidere ogni volta che entra qualcuno.
Prima di iniziare: cosa significa ogni cosa
- IAM
- Il servizio di AWS dove si creano gli utenti, si raggruppano e si assegnano loro i permessi. È gratuito ed è presente in tutti gli account.
- Utente IAM
- Un'identità dentro il tuo account AWS, con nome, password e, se vuoi, chiavi per i programmi. Una per persona, mai condivisa.
- Gruppo IAM
- Una cartella di utenti che condividono permessi. I permessi si danno al gruppo; chi entra nel gruppo li eredita. Una persona può stare in più gruppi.
- Policy
- Un documento che dice quali azioni sono permesse o vietate e su quali cose. AWS ne porta centinaia già scritte (policy "gestite da AWS") e puoi anche scrivere le tue.
- Privilegio minimo
- Dare a ogni persona o programma solo i permessi di cui ha bisogno per il suo compito. Se deve guardare, che guardi; se deve spegnere, che spenga; ma non che cancelli.
- AdministratorAccess
- La policy gestita che permette tutto tranne ciò che è riservato all'account root. È quella che non va distribuita.
- ReadOnlyAccess
- La policy gestita che permette di vedere tutto ma di non cambiare nulla. È il punto di partenza per quasi tutti.
- Doppio fattore (MFA)
- Un secondo passo all'accesso: un codice dal cellulare oltre alla password. Senza, una password trapelata è l'intero account.
- Chiave di accesso
- Utente e password per i programmi, non per le persone. Vanno create solo se un programma ne ha bisogno, e mai condivise via email o chat.
Passo dopo passo
Decidi che funzione ha la persona
Prima di toccare la console, rispondi a una domanda: cosa deve fare questa persona in AWS? Per una piccola azienda, quasi tutto rientra in tre funzioni:
- Vedere: guardare lo stato delle macchine, consultare la fattura, leggere i log. È quello che serve a chi fa assistenza, a chi tiene la contabilità o a un capo che vuole "vedere come va".
- Operare: oltre a vedere, accendere, spegnere e riavviare macchine, fare istantanee, ripristinare. È quello che serve a chi gestisce il giorno per giorno del server.
- Amministrare: creare e cancellare macchine, cambiare le reti, gestire gli utenti. Questo serve solo a una o due persone, e dovrebbero essere quelle che ne sanno di più.
Se sei indeciso tra due, comincia da quella con meno permessi. Salire è un clic; scoprire che qualcuno ha cancellato ciò che non doveva, no.
Crea i tre gruppi in IAM
Apri IAM, menu di sinistra User groups, pulsante Create group. Fanne tre, con nomi che capisca chiunque:
ver,operareadministrar. Creando ogni gruppo, nel blocco Attach permissions policies cerca e spunta la policy che gli spetta:- Gruppo
ver: ReadOnlyAccess. Permette di consultare qualsiasi servizio senza cambiare nulla. Se vuoi solo che vedano la fattura, esiste AWSBillingReadOnlyAccess, più limitata. - Gruppo
operar: ReadOnlyAccess e in più una policy propria con le azioni di avviare, fermare e riavviare (passo successivo). Per Lightsail non c'è una policy gestita intermedia, quindi la scriverai tu; per EC2 non ce n'è una che si limiti ad accendere e spegnere. - Gruppo
administrar: PowerUserAccess, che permette quasi tutto tranne gestire utenti e permessi. Lascia AdministratorAccess a una sola persona, quella che custodisce anche l'account root.
I gruppi si creano una volta sola. Da lì in poi, dare accesso a qualcuno significa metterlo nel gruppo giusto.
- Gruppo
Scrivi la policy del gruppo "operar"
In IAM, Policies, Create policy. Premi la scheda JSON e incolla questo, che permette di accendere, spegnere e riavviare macchine di Lightsail ed EC2, e fare istantanee, ma non creare né cancellare macchine:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lightsail:StartInstance", "lightsail:StopInstance", "lightsail:RebootInstance", "lightsail:CreateInstanceSnapshot", "ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances", "ec2:CreateSnapshot" ], "Resource": "*" } ] }Premi Next, chiamala
operar-maquinase creala. Poi, in User groups, entra inoperar, scheda Permissions, Add permissions, Attach policies, e spuntaoperar-maquinas.Nota che non compare nessuna azione con "Delete" né "Terminate". È la differenza tra poter spegnere una macchina e poterla far sparire. Se vuoi limitarla anche a macchine specifiche, in
Resourcepuoi mettere l'identificativo di ciascuna al posto dell'asterisco; per EC2 è semplice, per Lightsail bisogna usare l'ARN di ogni istanza.Crea l'utente e mettilo in un gruppo
IAM, Users, Create user. Nome: quello della persona (
maria.lopez), mai qualcosa di condiviso comesoporte. Spunta Provide user access to the AWS Management Console, scegli I want to create an IAM user e lascia spuntato che deve cambiare la password al primo accesso.Nella schermata dei permessi scegli Add user to group e spunta solo il gruppo che hai deciso al passo 1. Non collegare policy direttamente all'utente: tra sei mesi nessuno ricorderà perché ha quel permesso sciolto. Crea l'utente e annota l'indirizzo di accesso (contiene il numero del tuo account) per inviarglielo insieme alla password temporanea attraverso canali diversi: l'indirizzo via email, la password di persona o con un messaggio che scade.
Se la persona non userà programmi che parlano con AWS, non creare chiavi di accesso. Si possono aggiungere il giorno in cui serviranno.
Rendi obbligatorio il doppio fattore
Chiedi alla persona che, al primo accesso, vada nel menu con il suo nome, Security credentials, e assegni un dispositivo MFA con l'app del cellulare. Ma non lasciarlo alla buona volontà: in IAM, Policies, crea una policy che neghi tutto tranne la configurazione dell'MFA quando l'utente non è entrato con il doppio fattore, e collegala ai tre gruppi. AWS la propone come esempio nella sua documentazione con il nome "permettere agli utenti di gestire il proprio MFA"; copia il JSON da lì così com'è.
L'effetto: chi entra senza MFA vede solo la schermata per attivarlo. Tutto il resto risulta bloccato finché non lo fa. È l'unico modo perché davvero ce l'abbiano tutti.
Controlla quello che nessuno dovrebbe avere
Prima di dare per chiusa l'attivazione, ripassa in IAM, Users, colonna delle policy collegate:
- AdministratorAccess su più di una o due persone: è di troppo. Nessuno che si limiti a operare le macchine ne ha bisogno.
- IAMFullAccess su qualcuno che non gestisce utenti: con quel permesso può darsi da solo qualsiasi altro.
- Permessi collegati direttamente all'utente invece che tramite gruppi: spostali nel gruppo o cancellali.
- Chiavi di accesso su utenti di persone che non programmano nulla.
Se trovi qualcosa del genere su utenti vecchi, approfittane per correggerlo. È il momento in cui risulta più facile.
Prepara l'uscita fin dal primo giorno
Il giorno in cui qualcuno se ne va, il suo accesso ad AWS deve sparire lo stesso giorno, prima che riconsegni il computer. In IAM, Users, seleziona l'utente: prima disattiva l'accesso alla console e le chiavi di accesso (scheda Security credentials), aspetta una o due settimane per verificare che nulla dipendesse da quella persona, e poi elimina l'utente.
Annotalo nella lista delle cose da fare all'uscita insieme all'email e alle chiavi dell'ufficio. E una volta a trimestre, scarica il Credential report di IAM: ti dice di ogni utente quando è entrato l'ultima volta, se ha l'MFA e se le sue chiavi vengono usate. Un utente che non entra da tre mesi è un utente che probabilmente non dovrebbe più esistere.
Cosa può andare storto
La persona dice che non può fare qualcosa di cui ha bisogno
È normale quando si comincia con il privilegio minimo, ed è un buon segno: significa che i limiti funzionano. Chiedi cosa stava cercando di fare esattamente; nella schermata di errore di AWS compare l'azione negata (per esempio lightsail:CreateInstance). Decidi se fa davvero parte del suo lavoro. Se sì, aggiungi quell'azione alla policy del gruppo; se no, spiega perché no. Non risolvere l'avviso dandogli AdministratorAccess "così non disturba".
Qualcuno con ReadOnlyAccess vede dati che non dovrebbe
ReadOnlyAccess permette di leggere quasi tutto, compresi nomi di macchine, database e il contenuto di alcuni bucket S3. Se nel tuo account ci sono informazioni sensibili, sostituisci ReadOnlyAccess con policy di sola lettura dei servizi specifici (AmazonEC2ReadOnlyAccess, per esempio) o aggiungi una policy che neghi l'accesso a ciò che non devono vedere. Una negazione vince sempre su un permesso.
Un dipendente se n'è andato e nessuno ha tolto il suo utente
Fallo adesso: disattiva console e chiavi. Poi, in CloudTrail, Event history, filtra per quel nome utente e guarda cosa ha fatto nelle sue ultime settimane. Se aveva chiavi di accesso, dai per scontato che possano essere sul suo portatile personale e cancellale; se qualcosa smette di funzionare, era un programma che le usava e ha bisogno di un'identità propria.
C'è un programma che usa l'utente di una persona
Un backup, uno script, un sito che carica file su S3... con le chiavi di Marta. Il giorno in cui Marta se ne va, o le ruota, si rompe tutto. Crea un utente IAM solo per quel programma (app-copias), con una policy delle azioni strettamente necessarie, e dagli le sue chiavi. Meglio ancora se il programma gira su una macchina AWS: usa un ruolo di istanza e non ci saranno chiavi da custodire.
In Simplio
In Simplio il privilegio minimo non richiede di scrivere policy: ogni utente ha una casella per azione (vedere, avviare, fermare, riavviare, fare un'istantanea, ripristinare, aprire porte...) e per macchina, quindi "Marta può spegnere il sito del negozio ma non quello della fatturazione" si configura spuntando caselle. Il doppio fattore è obbligatorio per tutti, e spegnere, cancellare o ripristinare lo richiede di nuovo al momento.
Le chiavi di AWS le registra una sola volta l'amministratore e vengono conservate cifrate; il resto del team non le vede mai, quindi non c'è nulla da portarsi via andandosene. Quando si disattiva un utente, il suo accesso sparisce all'istante e il registro delle attività conserva chi ha fatto cosa, quando e da dove.
La stessa cosa, in AWS e in Simplio
| Nella console di AWS | In Simplio | |
|---|---|---|
| Dare accesso a una persona nuova | Creare utente, gruppo, policy JSON, forzare l'MFA con un'altra policy: 7 passi, 25 minuti | Creare l'utente e spuntare caselle per azione e per macchina: 2 minuti |
| Limitare a macchine specifiche | Scrivere l'ARN di ogni istanza nella policy | Scegliere le macchine da un elenco |
| Obbligare al doppio fattore | Policy di negazione collegata a ogni gruppo | Obbligatorio per tutti fin dal primo accesso |
| Disattivare qualcuno | Disattivare la console, cancellare le chiavi, eliminare l'utente, controllare CloudTrail | Disattivare l'utente; il registro delle attività si conserva |