Come utilizzare AWS IAM con Terraform

Terraform è uno strumento di automazione che consente di eseguire il provisioning delle risorse cloud. Anche l’infrastruttura deve essere sottoposta a provisioning con i privilegi appropriati. Nelle grandi aziende, gli amministratori lo utilizzano per eseguire automaticamente il provisioning o il ritiro di centinaia di risorse senza doverle configurare manualmente. Perché utilizzare AWS IAM con Terraform? […]

Come utilizzare AWS IAM con Terraform

image_pdfimage_print

Terraform è uno strumento di automazione che consente di eseguire il provisioning delle risorse cloud. Anche l’infrastruttura deve essere sottoposta a provisioning con i privilegi appropriati. Nelle grandi aziende, gli amministratori lo utilizzano per eseguire automaticamente il provisioning o il ritiro di centinaia di risorse senza doverle configurare manualmente.

Perché utilizzare AWS IAM con Terraform?

Con AWS Access and Identity Management (IAM), Terraform può anche essere utilizzato per impostare autorizzazioni di accesso o risorse sottoposte a provisioning. In un ambiente sicuro, l’uso dei privilegi per fornire accesso alle risorse sottoposte a cloud provisioning è parte di una rete Zero-Trust e dovrebbe essere incluso in qualsiasi strategia di sicurezza. Invece di fornire a tutti accesso alle risorse, gli amministratori possono usarlo per assegnare le autorizzazioni solo alle persone che ne hanno la necessità.

AWS IAM su Terraform: 3 funzionalità chiave

IAM è pensato per creare e aggiornare utenti, ruoli e gruppi di utenti. Le tre funzionalità chiave di cui si avvantaggiano le organizzazioni sono la facilità di controllo delle policy di accesso, l’uso di chiavi invece che di credenziali di rete standard e l’assegnazione di ruoli utente. Tutte e tre operano insieme per controllare l’accesso alle risorse cloud, che in genere sono sottoposte a provisioning con Terraform.

Terraform utilizza file con l’estensione .tf per automatizzare i comandi. I file di configurazione contengono comandi che possono essere riutilizzati ogni volta che è necessario creare una risorsa. Poiché i file sono pre-programmati con impostazioni e configurazioni, accelerano il provisioning delle risorse cloud in AWS.

Come si usano le policy IAM in Terraform?

Le policy definiscono gli utenti e le autorizzazioni per specifiche risorse cloud. Si utilizzano quando si effettua il provisioning di una risorsa in AWS (ad esempio, un bucket S3) e si devono assegnare autorizzazioni specifiche a vari utenti per attività come, ad esempio, elencare i contenuti dei bucket S3.

Come si usano le coppie di chiavi IAM in Terraform?

In AWS agli utenti vengono assegnate chiavi anziché nomi utente e password. Una coppia di chiavi è composta da una chiave di accesso e da una chiave segreta. Entrambe sono necessarie agli utenti per accedere alle risorse. In Terraform, si assegnano coppie di chiavi agli utenti quando si fornisce loro l’accesso a una risorsa.

Come si usano i ruoli IAM in Terraform?

Un ruolo IAM è un gruppo di autorizzazioni assegnate a un utente specifico. L’assegnazione di ruoli in Terraform fornisce autorizzazioni a un utente specifico. Un ruolo può consentire agli utenti di eseguire più azioni su una risorsa, quindi è necessario esaminarlo prima di assegnarlo.

Come utilizzare AWS IAM con Terraform: un esempio

In questo esempio, un nuovo file utente chiamato create_user.tf è utilizzato per creare un account utente su AWS tramite Terraform. L’utente viene creato e gli viene assegnata una policy per un bucket S3.

Passaggio 1: installazione di Terraform

Per installare Terraform, digita il comando seguente in Debian:

sudo apt-get install terraform

Passaggio 2: creazione di una directory Terraform

Crea una directory per il nuovo progetto Terraform:

mkdir linuxhint-terraform && cd linuxhint-terraform

Passaggio 3: creazione del file create_user.tf

Crea il file create_user.tf:

nano user_create.tf

Passaggio 4: configurazione del nuovo account utente

Dopo aver creato e aperto il file, aggiungi il codice seguente:

terraform {

required_providers {

    aws = {

    source  = "hashicorp/aws"

    version = "~> 3.27"

    }

  }

}

provider "aws" {

  region    = "us-west-1"

access_key = "user_access_key"

secret_key = "user_secret"

}

resource "aws_iam_user" "new_user" {

  name = "NewUserExample"

}

resource "aws_iam_access_key" "AccK" {

  user = aws_iam_user.new_user.name

}

output "secret_key" {

  value = aws_iam_access_key.AccK.secret

  sensitive = true

}

output "access_key" {

  value = aws_iam_access_key.AccK.id

}

Passaggio 5: creazione di una policy e aggiunta del nuovo utente

Dopo aver creato l’utente, puoi creare una policy e aggiungervi l’utente. Questo esempio di policy fornisce all’utente l’autorizzazione a elencare i bucket.

Aggiungi il codice seguente al file create_user.tf:

resource "aws_iam_user_policy" "iam" {

  name = "ListBuckets"

  user = aws_iam_user.new_user.name

  policy = <<EOF

{

    "Version": "2022-1-6",

    "Statement": [

    {

    "Effect": "Allow",

    "Action": "s3:ListAllMyBuckets",

    "Resource": "*"

    }

    ]

}

EOF

}

Passaggio 6: inizializza Terraform e applica le modifiche

Dopo aver creato il file, puoi applicare le modifiche ad AWS utilizzando Terraform. Innanzitutto, inizializza un’istanza:

terraform init 

Quindi, applica le modifiche all’ambiente AWS:

terraform apply

Passaggio 7: conferma le modifiche in AWS IAM

A questo punto, la risorsa è stata creata, ma puoi confermare le modifiche manualmente effettuando l’accesso al tuo account AWS e visualizzando gli utenti nella dashboard IAM.

Conclusione

L’automazione del cloud provisioning consente di risparmiare tempo e di utilizzare modelli per le policy, gli account e le autorizzazioni IAM. Utilizzando Terraform, gli amministratori possono semplificare il deployment delle risorse nei loro ambienti AWS. Maggiori informazioni sono disponibili nell’articolo How to Create an AWS Instance with Terraform (Come creare un’istanza AWS con Terraform).

Written By: