Nightmare infrastructure – episodio 4: nessun limite al peggio.
29 Ottobre 2025 - 1 min. read
Damiano Giorgi
DevOps Engineer

Chi, tra gli utilizzatori della console di AWS non si è mai scontrato con l’annoso problema di gestire molteplici utenti su altrettanti account, dovendo creare diversi IAM user e, per ognuno di essi, password complesse, oltre alla quanto mai fondamentale (ma decisamente scomoda, diciamoci la verità) two-factor-authentication?Proprio riguardo a quest’ultima, dando per scontato che non si voglia utilizzare un token hardware dedicato per ogni singolo IAM user, la scelta ricade quasi obbligatoriamente sul Google Authenticator, con codici e QR code che proliferano come funghi e che diventa complicato salvaguardare da eventi nefasti legati allo smartphone (furti, smarrimenti, rotture, backup, cambio device…)AWS in realtà offrirebbe un servizio di cross-account access per la sua management console, che ha però diversi limiti, tra i quali:
Schema di funzionamento dell'autenticazione tramite SAML tra G Suite e la console di AWS[/caption]Vediamo quindi come configurare i nostri account AWS e G Suite per far funzionare il Single-Sign-On con SAML.Innanzi tutto, nella pagina di amministrazione di G Suite, dobbiamo aggiungere degli attributi custom ai nostri utenti, tramite i quali il nostro Identity Provider (Google) comunicherà al Service Provider (AWS) oltre all’identità dell’utente loggato, informazioni aggiuntive che spiegheremo in seguito.
Creiamo una categoria di attributi custom e chiamiamola “AWS SAML” e creiamo gli attributi “IAM Role” e “SessionDuration”. E’ importante che entrambi gli attributi siano privati (ovvero non visualizzabili da tutti gli utenti della vostra organizzazione) e che l’attributo “IAM Role” supporti valori multipli.
Fatto questo andiamo nella sezione “Apps” e aggiungiamo una nuova applicazione SAML, partendo dal template pre-configurato per AWS.
Scarichiamo (opzione 2) gli IDP Metadata (di fatto un file .xml che contiene alcuni parametri di configurazione e il certificato X509 su cui si basa la relazione di trust tra IdP e SP) e teniamoli da parte per un passaggio successivo. ATTENZIONE!!! Il contenuto di questo file non deve essere diffuso per nessun motivo; sulla sua segretezza si basa la sicurezza di tutta la soluzione!
Proseguiamo nella configurazione mappando l’entità SAML “Name ID” su “Primary Email” (ovvero l’utente verrà presentato alla console AWS con l’indirizzo mail come identificativo univoco).
Nel passaggio successivo dobbiamo configurare tre mapping aggiuntivi (attenzione che qui la UI di G Suite non è molto chiara, in quanto non si leggono bene gli URL nella colonna di sinistra):
È molto utile poter personalizzare questo parametro perché di default la sessione dura 1 ora, e, per esperienza di chi lavora parecchio sulla console AWS, è un valore molto basso, che comporta numerosi e scomodi logout forzati durante l’operatività quotidiana. ATTENZIONE!!! Questo “trick” è un’esclusiva di beSharp; non è documentato sulle guide ufficiali ne’ di Google ne’ di AWS! (nda).A questo punto la configurazione di G Suite è terminata e passiamo alla configurazione di AWS.Andiamo nella sezione IAM --> Identity Providers e creiamone uno nuovo, di tipo SAML, che chiamiamo “GoogleApps”; in questo punto dovremo caricare gli IdP metadata che abbiamo scaricato in precedenza (una volta caricato il file in questo punto, suggerisco di cancellarlo dal proprio computer)

Poi creiamo un nuovo IAM role che chiamiamo “GoogleLogin” e come tipo di ruolo selezioniamo “Identity Provider Access” --> “WebSSO” e lo associamo all’Identity Provider “GoogleApps” che abbiamo appena creato.

Nei passi successivi del wizard associamo una policy allo IAM role per dare i permessi (nel nostro esempio abbiamo dato i permessi di admin – DON’T TRY THIS AT HOME!!! :-) ) e la configurazione lato AWS è terminata.

Adesso torniamo nell’amministrazione di G Suite, per assegnare ai singoli utenti i permessi relativi a quali ruoli possono assumere e su quali account AWS.
Questa è la parte meno intuitiva della configurazione: per quanto riguarda i ruoli e gli account accessibili, AWS si aspetta da Google dei valori di questo tipo:arn:aws:iam::1234567891012:role/GoogleLogin,arn:aws:iam::1234567891012:saml-provider/GoogleAppsCome vedete si tratta di due ARN separati da una virgola. Il primo è l’ARN del ruolo che quell’utente può assumere, il secondo è l’ARN dell’identity provider che abbiamo creato all’interno dell’account AWS. (il numero 1234567891012 è un segnaposto che va sostituito con il vero account number del vostro account AWS). Questo valore va inserito nel campo custom “IAM role” che abbiamo creato in precedenza. In questo modo possiamo specificare per ogni utente quale ruolo può assumere e su quale account AWS.
Se vi ricordate bene abbiamo fatto in modo che l’attributo “IAM role” supportasse valori multipli; infatti è possibile, per lo stesso utente, specificare più ruoli all’interno dello stesso account, o anche su account differenti. Basterà aggiungere altre tuple del tipo:arn:aws:iam::112233445566:role/Ruolo1,arn:aws:iam::112233445566:saml-provider/GoogleApps
arn:aws:iam::112233445566:role/Ruolo2,arn:aws:iam::112233445566:saml-provider/GoogleAppse subito dopo il login ci verrà chiesto quale ruolo vogliamo assumere su quale account.Ovviamente, perchè tutto funzioni, nel nostro esempio dovremmo ripetere la procedura di federazione SAML (con lo scambio degli IdP metadata) anche per l’account 112233445566Nel campo custom “SessionDuration” potete specificare, per ogni utente, la durata in secondi della sessione di login. Suggerisco il valore 28800, che corrisponde a 8 ore, ovvero circa a una tipica giornata lavorativa.A questo punto non ci resta che abilitare la SAML application che abbiamo creato, e tutti gli utenti si troveranno una nuova icona nel loro menu di accesso rapido alle Google Apps.
Facciamo login quindi con il nostro account di prova "Mario Rossi" e, cliccando sull’icona corrispondente, verremo magicamente indirizzati verso la console AWS dove, come potete vedere, risultiamo loggati con il nostro account federato, m.rossi@besharp.net.
Soddisfatti? :-)Nel prossimo articolo vedremo come abbiamo utilizzato, in maniera decisamente creativa, lo stesso approccio basato su G Suite e SSO per utilizzare ai servizi AWS che prevedono l’autenticazione tramite la coppia key/secret, come la AWS CLI, CodeCommit e l’accesso alle API da client extra VPC.Negli articoli successivi, invece, approfondiremo l’utilizzo di G Suite come Identity Provider per tutti gli altri servizi che normalmente richiederebbero una federazione con Active Directory o LDAP.Avete dubbi o domande? Commentate l'articolo, vi risponderemo ASAP! E se volete implementare una soluzione come questa ma vi manca il tempo o la voglia... chiamateci!