{"id":196,"date":"2017-05-04T17:52:44","date_gmt":"2017-05-04T15:52:44","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=196"},"modified":"2023-02-22T17:08:14","modified_gmt":"2023-02-22T16:08:14","slug":"single-sign-on-con-g-suite-per-i-client-di-sviluppo-unidea-creativa","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/single-sign-on-con-g-suite-per-i-client-di-sviluppo-unidea-creativa\/","title":{"rendered":"Idea creativa: Single-sign-on con G-suite per i client di sviluppo!"},"content":{"rendered":"

Nell\u2019ultimo articolo abbiamo parlato di come utilizzare gli account G-suite<\/strong> aziendali per effettuare il Single-Sign-On<\/strong> sulla web console di Amazon Web Services<\/strong>.<\/p>\n

L\u2019accesso 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<\/strong><\/a>\u00a0sui loro personal computer per utilizzare la AWS CLI<\/a>, per chiamare singole API di AWS (ad esempio quelle dei nuovi servizi di AI come Rekognition<\/a> e Lex<\/a>) e per poter utilizzare tutte quelle applicazioni desktop (pensiamo ad esempio ai vari file manager basati su S3 \u2013 come l\u2019ottimo CloudBerry File Explorer<\/a>, o ai client Git per l\u2019utilizzo di CodeCommit<\/a>) che a loro volta utilizzano le API di AWS.<\/p>\n

Access key e secret key non sono associabili direttamente a uno IAM role<\/strong> (il cui utilizzo tramite l\u2019API AssumeRole abbiamo gi\u00e0 visto essere una best practice di sicurezza), ma necessitano di uno IAM user dedicato<\/strong>, il che renderebbe di fatto vano l\u2019assumere un ruolo AWS con delle credenziali centralizzate.<\/p>\n

Questa limitazione necessitava giocoforza una soluzione un po\u2019 creativa ed \u00e8 cos\u00ec che in beSharp ci siamo inventati beAuth<\/strong>.<\/p>\n

\"\"<\/a>
All’avvio il programma mostra la schermata di login di G-suite (alla quale pu\u00f2 essere associata la two-factor-authentication di Google)<\/figcaption><\/figure>\n

beAuth \u00e8 un piccolo software installabile come agent all\u2019interno del sistema operativo, che utilizza le credenziali G-suite e il meccanismo di SSO basato sul protocollo SAML<\/strong> (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\u2019interno 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\u00e0 di disporre di uno IAM user dedicato.<\/p>\n

\"\"
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<\/figcaption><\/figure>\n

Inoltre, siccome uno IAM role pu\u00f2 essere assunto anche cross-account<\/strong>, 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\u2019azienda disponga di pi\u00f9 account AWS<\/strong> (ad esempio test \u2013 staging \u2013 produzione) oppure nel caso in cui si amministrino molteplici account AWS per conto di diversi clienti.<\/p>\n

Per tutti i software che non si basano sulla CLI ma che necessitano l\u2019inserimento diretto di coppie access\/secret key, beAuth permette di generare coppie \u201cusa e getta\u201d<\/strong> della durata massima di 1 ora che possono\u00a0essere inserite manualmente alla bisogna per singole chiamate o sessioni di lavoro.<\/p>\n

\"\"
Le chiavi possono essere rigenerate alla bisogna e copiate-incollate all’interno di qualsiasi applicazione di terze parti<\/figcaption><\/figure>\n

I vantaggi di questa soluzione sono molteplici:<\/p>\n