Quando uno strumento esterno ha bisogno di entrare nel tuo account AWS ci sono due strade. Quella nota: creare un utente IAM e dargli una chiave di accesso, che è una password che non scade e che può finire in un file di configurazione, in un repository o in un'email. Quella buona: creare un ruolo che lo strumento assume dal proprio account AWS. Non c'è nessuna chiave da conservare né da far trapelare; AWS consegna credenziali temporanee che scadono da sole, e tu puoi tagliare l'accesso in un secondo cancellando il ruolo.
Per questo lo strumento deve supportarlo (ti chiederà "accesso tramite ruolo", "cross-account role" o "ARN del ruolo") e darti due dati: il numero del suo account AWS e un identificatore esterno (external ID). Con quelli, in dieci minuti è fatto.
Prima di iniziare: cosa significa ogni cosa
- IAM
- Il servizio di AWS che gestisce chi può fare cosa nel tuo account.
- Account AWS
- Ogni cliente di Amazon ha un account con un numero di dodici cifre. Lo strumento esterno ha il suo; tu hai il tuo.
- Chiave di accesso
- Lo "utente e password" per i programmi. Non scade, e per questo è ciò che questa guida evita.
- Ruolo
- Un insieme di permessi che non appartiene a nessuno in modo fisso: chi è autorizzato lo "assume" e riceve credenziali temporanee che scadono da sole.
- Assumere un ruolo
- Chiedere ad AWS quelle credenziali temporanee per agire con i permessi del ruolo per un po' di tempo.
- Entità attendibile
- Chi ha il permesso di assumere il ruolo. Qui, l'account AWS dello strumento esterno.
- External ID (identificatore esterno)
- Una password aggiuntiva che accompagna la richiesta di assumere il ruolo, perché solo quello strumento, agendo per te, possa usarlo.
- Policy
- L'elenco dei permessi, in formato JSON. La guida ti dà un esempio.
- ARN
- Il nome completo e unico del ruolo (arn:aws:iam::...). È quello che dai allo strumento.
- CloudTrail
- Il registro di tutto ciò che accade nel tuo account AWS: chi ha fatto cosa e quando. Serve a vedere cosa fa lo strumento.
Passo dopo passo
Raccogli i dati del fornitore
Annota l'ID account dello strumento (dodici cifre) e l'external ID che ti assegna, una stringa unica per te. L'external ID evita il cosiddetto "problema del vice confuso" (confused deputy): che un altro cliente dello stesso strumento possa fargli usare il tuo ruolo. Non condividerlo e non riutilizzarlo.
Crea la policy con i permessi minimi
Nella console di IAM, Policy, Crea policy, scheda JSON. Incolla solo le azioni di cui lo strumento ha bisogno; un fornitore serio ti dà la lista esatta. Per esempio, per vedere e gestire macchine Lightsail:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lightsail:GetInstances", "lightsail:GetInstance", "lightsail:GetInstanceState", "lightsail:StartInstance", "lightsail:StopInstance", "lightsail:RebootInstance", "lightsail:GetInstanceSnapshots", "lightsail:CreateInstanceSnapshot" ], "Resource": "*" }] }Dagli un nome riconoscibile, come
PanelExterno-Maquinas. Se ti chiedonoAdministratorAccess, chiedi perché.Crea il ruolo con l'altro account come entità attendibile
IAM, Ruoli, Crea ruolo. Tipo di entità attendibile: Account AWS, opzione Un altro account AWS, e scrivi l'ID account del fornitore. Spunta Richiedi ID esterno e incolla l'external ID. Non spuntare "Richiedi MFA": lo strumento è un programma, non una persona. Avanti.
Collega la policy e dai un nome al ruolo
Cerca la policy creata al passo 2, spuntala e continua. Nome del ruolo: qualcosa che dica a cosa serve e di chi è, per esempio
PanelExterno-Simplio. Controlla il riepilogo: la policy di attendibilità deve mostrare l'account del fornitore e la condizionests:ExternalId. Crea il ruolo.Consegna l'ARN del ruolo
Apri il ruolo appena creato e copia il suo ARN, nella forma
arn:aws:iam::123456789012:role/PanelExterno-Simplio. È l'unica cosa di cui lo strumento ha bisogno; incollalo dove te lo chiede. Non è un segreto in sé (senza l'external ID e senza trovarsi nell'account attendibile non serve a nulla), ma non c'è nemmeno bisogno di pubblicarlo.Verifica l'accesso e il registro
Lo strumento dovrebbe connettersi subito. Per vedere cosa fa, in CloudTrail, cronologia degli eventi, filtra per il nome del ruolo: ogni azione che esegue compare con il ruolo come identità. Se un giorno vuoi tagliare l'accesso, cancella il ruolo o cambia l'external ID; l'effetto è immediato appena scadono le credenziali temporanee in corso, che durano al massimo un'ora a meno che tu non l'abbia ampliato.
Cosa può andare storto
Lo strumento dice "not authorized to perform sts:AssumeRole"
O l'ID dell'account attendibile non è quello giusto, o l'external ID non coincide, o lo strumento sta cercando di assumere il ruolo con un principal diverso da quello che hai autorizzato. Controlla la scheda Relazioni di trust del ruolo e confrontala lettera per lettera con quello che ti ha dato il fornitore.
Si connette ma gli manca il permesso per qualcosa
Il messaggio di AWS dice esattamente quale azione manca. Aggiungila alla policy del passo 2; la modifica si applica alle chiamate successive senza toccare il ruolo.
E se lo strumento non supporta i ruoli?
Allora un utente IAM con permessi minimi e una chiave di accesso è il piano B (hai la guida in questa sezione). Ruota la chiave ogni tanto e tieni d'occhio il suo "ultimo utilizzo" in IAM.
Ho creato il ruolo nell'account sbagliato
Con più account succede. Il ruolo deve stare nell'account le cui risorse vuoi che lo strumento veda. Cancellalo e crealo in quello giusto; l'ARN cambierà, aggiornalo nello strumento.
In Simplio
Simplio ammette la connessione tramite ruolo: nell'aiuto ti mostra l'ID account di Simplio e un external ID generato per te, e ti genera la policy di attendibilità e quella dei permessi spuntando con delle caselle cosa vuoi permettere. Incolli l'ARN del ruolo e basta: non c'è nessuna chiave da conservare, e le credenziali che Simplio chiede ad AWS scadono in un'ora.
La stessa cosa, in AWS e in Simplio
| Nella console di AWS | In Simplio | |
|---|---|---|
| Creare il ruolo | Policy, ruolo, entità attendibile, external ID, ARN: 6 passi, 15 minuti sapendo quello che fai | L'aiuto ti dà l'account, l'external ID e le due policy già scritte: incollare e copiare l'ARN, 3 minuti |
| Permessi giusti | Conoscere il nome di ogni azione | Caselle: solo vedere, senza firewall, senza terminale, una regione |
| Revocare | Cancellare il ruolo in IAM | Cancellare la connessione in Simplio o il ruolo in IAM; nessuna chiave da rincorrere |