Sviluppo remoto su AWS: da Cloud9 a VS Code
20 Novembre 2024 - 2 min. read
Alessio Gandini
Cloud-native Development Line Manager
Nell’ultimo articolo abbiamo parlato di come utilizzare gli account G-suite aziendali per effettuare il Single-Sign-On sulla web console di Amazon Web Services.L’accesso alla web console copre solamente una parte delle esigenze di chi lavora quotidianamente con AWS. In particolare gli sviluppatori e i DevOps necessitano quasi sempre di una coppia access key/secret key sui loro personal computer per utilizzare la AWS CLI, per chiamare singole API di AWS (ad esempio quelle dei nuovi servizi di AI come Rekognition e Lex) e per poter utilizzare tutte quelle applicazioni desktop (pensiamo ad esempio ai vari file manager basati su S3 – come l’ottimo CloudBerry File Explorer, o ai client Git per l’utilizzo di CodeCommit) che a loro volta utilizzano le API di AWS.Access key e secret key non sono associabili direttamente a uno IAM role (il cui utilizzo tramite l’API AssumeRole abbiamo già visto essere una best practice di sicurezza), ma necessitano di uno IAM user dedicato, il che renderebbe di fatto vano l’assumere un ruolo AWS con delle credenziali centralizzate.Questa limitazione necessitava giocoforza una soluzione un po’ creativa ed è così che in beSharp ci siamo inventati beAuth.[caption id="attachment_201" align="aligncenter" width="584"] All'avvio il programma mostra la schermata di login di G-suite (alla quale può essere associata la two-factor-authentication di Google)[/caption]beAuth è un piccolo software installabile come agent all’interno del sistema operativo, che utilizza le credenziali G-suite e il meccanismo di SSO basato sul protocollo SAML (che abbiamo visto nel precedente articolo) per generare coppie access key/secret key temporanee e legate allo IAM role assunto, che vengono ruotate a intervalli prestabiliti (tipicamente 1 ora) all’interno della configurazione della AWS CLI. In questo modo, oltre alla CLI stessa, tutti i servizi che vi si appoggiano possono accedere alle risorse AWS ereditando temporaneamente i permessi del ruolo assunto, senza la necessità di disporre di uno IAM user dedicato.[caption id="attachment_202" align="aligncenter" width="584"] Il pannello di controllo di beAuth mostra le informazioni relative alla sessione (che dura di default 12 ore) e alla durata della coppia access/secret key (che scade dopo un'ora), identifica l'utente connesso, lo IAM role assunto e le chiavi attive in un determinato momento. La chiave attiva viene configurata in automatico come default nella AWS CLI[/caption]Inoltre, siccome uno IAM role può essere assunto anche cross-account, con le stesse credenziali G-suite (opportunamente configurate) si possono ottenere coppie access/secret key per account differenti, soluzione estremamente utile nel caso in cui l’azienda disponga di più account AWS (ad esempio test – staging – produzione) oppure nel caso in cui si amministrino molteplici account AWS per conto di diversi clienti.Per tutti i software che non si basano sulla CLI ma che necessitano l’inserimento diretto di coppie access/secret key, beAuth permette di generare coppie “usa e getta” della durata massima di 1 ora che possono essere inserite manualmente alla bisogna per singole chiamate o sessioni di lavoro.[caption id="attachment_203" align="aligncenter" width="500"] Le chiavi possono essere rigenerate alla bisogna e copiate-incollate all'interno di qualsiasi applicazione di terze parti[/caption]I vantaggi di questa soluzione sono molteplici: