Code, Deploy Value

Analisi e tutorial di configurazione di IAM User e IAM Role in AWS

14 Agosto 2024 - 8 minuti di lettura

Amazon Web Services (AWS) è una piattaforma di servizi cloud che offre una vasta gamma di servizi per aiutare le aziende a gestire le proprie risorse digitali in modo efficiente. Uno dei servizi offerti da AWS è IAM (Identity and Access Management) e in questo articolo analizzeremo le differenze tra IAM User e IAM Role attraverso una piccola guida step-by-step.

Cosa è IAM di AWS

IAM (Identity and Access Management) consente di gestire in modo sicuro l’accesso alle risorse e ai servizi all’interno di un account AWS controllando chi può accedere a quali risorse e cosa possono fare con esse.
Con IAM è possibile creare e gestire utenti, gruppi e ruoli, assegnare autorizzazioni specifiche e monitorare l’attività degli utenti all’interno dell’account AWS. IAM è inoltre fondamentale per garantire la sicurezza, la conformità e il controllo dell’accesso alle risorse digitali all’interno di un ambiente cloud come AWS.

Approfondiamo ora le differenze tra IAM User e IAM Role aiutandoci con un breve tutorial.

IAM User, tra ruolo admin e utente root

Un IAM User è un’entità che rappresenta un individuo o un’applicazione che necessita di interagire con i servizi offerti dalla piattaforma.Questo tipo di utente è composto da un nome univoco e da credenziali di accesso necessarie per autenticarsi e accedere alle risorse.

È importante distinguere tra un IAM User con privilegi di amministratore, noto come ruolo admin, e l’utente root dell’account AWS. Entrambi hanno accesso completo a tutti i servizi e alle risorse all’interno dell’account, ma ci sono differenze significative nel modo in cui questi accessi sono gestiti e utilizzati.

Il ruolo admin è una policy assegnata a uno IAM user specifico, il quale ha permessi amministrativi definiti tramite policy IAM e può essere gestito in modo più sicuro e flessibile per le operazioni quotidiane.

L’utente root è l’identità associata all’indirizzo e-mail e alla password utilizzati durante la creazione dell’account AWS. Questa identità ha privilegi illimitati e deve essere utilizzata con estrema cautela per compiti amministrativi critici.

In breve, la corretta gestione di IAM User e dei relativi ruoli all’interno di AWS è essenziale per garantire la sicurezza, il controllo e la conformità delle attività svolte all’interno dell’ambiente cloud di Amazon.

Permessi iniziali

Di base, un nuovo IAM user non ha nessuna autorizzazione predefinita per eseguire operazioni o accedere a risorse all’interno di AWS. Le autorizzazioni possono essere attribuite sia a singoli utenti sia a gruppi. Tuttavia, è generalmente preferibile assegnarle ai gruppi, poiché ciò facilita la gestione delle autorizzazioni.

È possibile assegnare autorizzazioni amministrative a determinati utenti, consentendo loro di gestire le risorse AWS, creare nuovi IAM user e svolgere altre attività di amministrazione. Tuttavia, nella maggior parte dei casi, è consigliabile limitare le autorizzazioni di un utente solo alle attività e alle risorse strettamente necessarie per il compito specifico che devono svolgere.

Questa pratica di modello del privilegio minimo (least-privilege permissions) aiuta a garantire la sicurezza e a ridurre potenziali rischi, limitando l’accesso solo a ciò che è essenziale per svolgere il lavoro senza concedere autorizzazioni eccessive che potrebbero essere sfruttate malevolmente. In questo modo, si promuove una corretta gestione delle autorizzazioni all’interno dell’ambiente AWS, assicurando un utilizzo sicuro ed efficiente delle risorse cloud.

IAM Role per una sicurezza maggiore

Un IAM Role rappresenta un metodo sicuro per concedere autorizzazioni alle entità all’interno di AWS.

Facendo un paragone con gli IAM User, entrambe sono entità con policy di autorizzazione che definiscono i permessi delle identità all’interno di AWS, ma i ruoli non sono associati in modo univoco a una persona specifica. I ruoli possono, infatti, essere assunti da chiunque ne abbia bisogno.

A differenza degli IAM User, un IAM Role non possiede credenziali standard a lungo termine come password o chiavi di accesso. Quando un ruolo viene assunto, vengono fornite credenziali di sicurezza temporanee per la durata della sessione del ruolo. Tale approccio aumenta la sicurezza riducendo l’esposizione delle credenziali a potenziali rischi.

L’utilizzo dei IAM Role offre flessibilità, sicurezza e controllo nell’assegnazione delle autorizzazioni all’interno di AWS, contribuendo a garantire un ambiente cloud gestito in modo efficiente e conforme alle normative di sicurezza.

IAM Policy per definire i permessi e le azioni consentite

Una policy IAM è un insieme di regole che definiscono i permessi e le azioni consentite per utenti, gruppi, e ruoli all’interno di un ambiente. Queste policy determinano cosa possono e non possono fare tali entità con le risorse AWS. Le policy IAM sono fondamentali per garantire la sicurezza e il controllo degli accessi nel cloud AWS.

Le policy possono essere di diversi tipi:

  • gestite da AWS: Queste sono create e gestite da AWS. Sono pronte all’uso e progettate per coprire le comuni esigenze di gestione dei permessi.
  • gestite dal cliente: Queste sono create e gestite dagli utenti. Offrono maggiore flessibilità e controllo sui permessi specifici da assegnare.
  • in linea: Queste sono direttamente associate a un singolo utente, gruppo o ruolo e non possono essere riutilizzate altrove.

Le policy IAM sono scritte in formato JSON e di seguito possiamo analizzarne un esempio:

{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Effect": "Allow",

      "Action": [

       "s3:GetObject",

       "s3:ListBucket"

      ],

      "Resource": [

        "arn:aws:s3:::example-bucket",

        "arn:aws:s3:::example-bucket/*"

      ]

    }

  ]

}
  • Version: specifica la versione del linguaggio delle policy.
  • Statement: contiene una o più regole che costituiscono la policy.
  • Effect: specifica se la dichiarazione consente o nega l’accesso.
  • Action: elenca le azioni che sono consentite o negate. In questo caso, sono specificate:
    • s3:GetObject (che consente di ottenere oggetti dal bucket S3 specificato)
    • s3:ListBucket (che consente di elencare gli oggetti nel bucket S3 specificato).
  • Resource: specifica le risorse AWS a cui si applicano le azioni. Le risorse sono identificate dai loro Amazon Resource Name (ARN):
    • "arn:aws:s3:::example-bucket": si riferisce al bucket stesso.
    • "arn:aws:s3:::example-bucket/*": si riferisce a tutti gli oggetti all’interno del bucket.

Le policy IAM sono essenziali per gestire la sicurezza e l’accesso alle risorse nel cloud AWS, garantendo che solo gli utenti, i gruppi e i ruoli autorizzati possano eseguire determinate azioni sulle risorse specificate.

Come si creano IAM User e IAM Role con AWS console

AWS prevede tre modalità per creare una nuova utenza e associare i ruoli:

  • AWS Console
  • AWS CLI
  • AWS API

Di seguito useremo l’AWS console per la creazione di IAM User e IAM Role.

Come creare uno IAM User in 11 passaggi

Per creare uno IAM User su AWS, segui i seguenti passaggi:

  1. Accedi alla pagina iniziale di AWS e seleziona il servizio IAM
  2. Nel pannello di navigazione di IAM, scegli Users e poi Add user
  3. Seleziona la casella accanto a Provide user access to the AWS Management Console (optional) e poi scegli I want to create an IAM user.
  4. In Console password, seleziona Autogenerated password
  5. Nella sezione Set permissions, seleziona Add user to group. Poi, sotto User groups, seleziona Create group
  6. Crea il nuovo gruppo.
  7. Seleziona Create user group per tornare alla pagina Set permissions
  8. Crea una policy e seleziona il servizio STS (AWS Security Token Service è un servizio che permette di richiedere token di sicurezza temporanei con permessi limitati per autenticare utenti e applicazioni nei servizi AWS). Nella sezione Write, seleziona Assume Role. La policy così configurata consente a un’entità di utilizzare AWS STS per assumere un ruolo specifico con permessi definiti, utilizzando token di sicurezza temporanei.
  9. In User groups, seleziona il nome del gruppo creato al punto 6.
  10. Rivedi attentamente i dati inseriti nella pagina Review and create; quindi, seleziona Create user
  11. Nella pagina Retrieve password, seleziona Download .csv file per salvare le credenziali dell’utente (URL di connessione, username e password) sul tuo computer. È importante conservare tale file poiché non sarà più possibile recuperare le credenziali.

Seguendo questi passaggi, sarai in grado di creare uno IAM user e gestire le relative autorizzazioni e credenziali in modo sicuro ed efficiente all’interno dell’ambiente AWS.

Come creare uno IAM Role in 6 passaggi

Per creare un IAM Role con accesso completo a un bucket S3 utilizzando la policy AmazonS3FullAccess, segui i seguenti passaggi:

  1. Nella console di gestione AWS, nel riquadro di navigazione, seleziona Roles e poi Create role
  2. Seleziona AWS account come tipo di ruolo
  3. Per creare un ruolo per il tuo account AWS, seleziona This account (è possibile creare un IAM Role per un account AWS diverso dal proprio)
  4. IAM ti offre un elenco delle policy gestite da AWS e personalizzate nell’account. Seleziona la policy AmazonS3FullAccess per concedere accesso completo al bucket S3, oppure seleziona Create policy per creare una nuova policy personalizzata. È anche possibile aggiungere o modificare le policy in un secondo momento
  5. Assegna un nome univoco al ruolo. I nomi dei ruoli devono essere univoci all’interno del tuo account AWS e non possono essere modificati una volta creati, poiché diverse entità potrebbero fare riferimento al ruolo
  6. Rivedi attentamente le impostazioni del ruolo e quindi seleziona Create role per completare il processo di creazione del ruolo.

Seguendo questi passaggi, avrai creato con successo un IAM Role con autorizzazioni complete per accedere ad un bucket S3 utilizzando la policy specificata, garantendo un adeguato livello di controllo e sicurezza nell’ambiente AWS.

Tutorial: come creare un IAM User step-by-step

Ecco un esempio di come uno IAM User senza permessi iniziali può creare un bucket S3 dopo aver assunto con successo uno IAM Role con la policy AmazonS3FullAccess:

1. Scenario iniziale

Uno IAM User appena creato senza alcuna autorizzazione tenta di creare un bucket S3, ma riceve un errore di autorizzazione in quanto non dispone dei permessi necessari per eseguire questa operazione.

IAM User IAM Role

2. Procedura

L’IAM User assume il ruolo precedentemente creato scegliendo Switch role.

Switch mode di IAM User

 

3. Creazione del bucket S3

Dopo aver assunto con successo il ruolo con la policy AmazonS3FullAccess, l’IAM User ora dispone delle autorizzazioni necessarie per creare un bucket S3.

L’ IAM User riprova a creare il bucket S3 utilizzando le credenziali temporanee fornite dal ruolo. Questa volta, il processo di creazione del bucket S3 avviene con successo, poiché il ruolo con la policy AmazonS3FullAccess conferisce le autorizzazioni complete all’IAM user per gestire i bucket S3.

IAM User IAM Role

In questo modo, attraverso l’uso di ruoli e la corretta assegnazione di policy, è possibile garantire che gli utenti possano eseguire operazioni specifiche solo quando necessario e nel rispetto delle politiche di sicurezza e accesso definiti all’interno dell’ambiente AWS.

Conclusioni

In conclusione, la distinzione tra IAM User e IAM Role è fondamentale per garantire una corretta gestione delle autorizzazioni all’interno di un sistema di identità e accesso. Come abbiamo visto, è consigliabile adottare una strategia di sicurezza che preveda l’assegnazione dei permessi minimi necessari per svolgere specifiche attività, piuttosto che concedere accesso completo a un utente.
Questo approccio non solo contribuisce a ridurre potenziali rischi legati a violazioni della sicurezza, ma favorisce anche una gestione più efficiente delle risorse e dei privilegi all’interno dell’ambiente cloud. Ricordiamo quindi l’importanza di una corretta pianificazione e implementazione delle politiche di controllo degli accessi per garantire un livello ottimale di sicurezza e conformità alle best practices nel campo della gestione delle identità digitali.