0Pricing
DevOps Bootcamp · Lezione

Gestione dei bucket S3 e di IAM

Impari a predisporre e configurare bucket di storage S3 e a gestire con Terraform le risorse AWS Identity and Access Management (IAM).

Gestione dei bucket S3 e di IAM è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

S3 e Terraform: storage nel cloud

Amazon S3 (Simple Storage Service) offre uno storage di oggetti altamente scalabile, durevole e disponibile. È ideale per i backup, i siti web statici e l'archiviazione dei dati.

La gestione dei bucket S3 con Terraform offre diversi vantaggi:

  • Automazione: creare e configurare i bucket tramite codice.
  • Controllo del codice sorgente: tenere traccia delle modifiche alle configurazioni dei bucket.
  • Coerenza: assicurarsi che tutti gli ambienti abbiano configurazioni S3 identiche.

Il primo bucket S3

Definiamo un semplice bucket S3. A questo scopo si usa la risorsa aws_s3_bucket.

I nomi dei bucket devono essere univoci a livello globale tra tutti gli account AWS. Scelga un nome univoco!

Provi a eseguire questo esempio:

resource "aws_s3_bucket" "my_unique_bucket" {
  bucket = "my-coddykit-unique-bucket-12345" # Replace with a globally unique name
}

output "bucket_id" {
  value = aws_s3_bucket.my_unique_bucket.id
}

Nomi dei bucket e regione

Quando crea un bucket S3, ricordi questi punti fondamentali:

  • Univocità globale: i nomi dei bucket devono essere univoci a livello globale tra tutti gli account AWS.
  • Regione: sebbene i nomi siano globali, il bucket risiede in una regione AWS specifica, definita dalla configurazione del provider AWS.
  • Regole di denominazione: i nomi devono essere in minuscolo, avere una lunghezza compresa tra 3 e 63 caratteri e possono contenere trattini.

Scegliere una buona convenzione di denominazione è essenziale per garantire organizzazione e chiarezza.

Sicurezza e funzionalità di S3

S3 offre funzionalità come il versioning, per conservare più versioni di un oggetto, e i blocchi dell'accesso pubblico, per la sicurezza. Per la maggior parte dei bucket è fondamentale bloccare l'accesso pubblico per impostazione predefinita.

Questo esempio configura il versioning e garantisce il blocco dell'accesso pubblico.

Provi a eseguire questo esempio:

resource "aws_s3_bucket" "my_versioned_bucket" {
  bucket = "coddykit-versioned-bucket-98765" # Replace with a unique name
}

resource "aws_s3_bucket_versioning" "my_versioned_bucket_versioning" {
  bucket = aws_s3_bucket.my_versioned_bucket.id
  versioning_configuration {
    status = "Enabled"
  }
}

resource "aws_s3_bucket_public_access_block" "my_versioned_bucket_public_access_block" {
  bucket = aws_s3_bucket.my_versioned_bucket.id

  block_public_acls       = true
  block_public_and_cross_account_access = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

output "bucket_name_versioned" {
  value = aws_s3_bucket.my_versioned_bucket.bucket
}

AWS IAM: identità e accesso

AWS IAM (Identity and Access Management) è un servizio web che consente di controllare in modo sicuro l'accesso alle risorse AWS. È un elemento fondamentale della sicurezza.

Con IAM può:

  • gestire gli utenti e il relativo accesso programmatico o alla console;
  • concedere autorizzazioni granulari a risorse AWS specifiche;
  • controllare chi può fare cosa nel proprio account AWS.

Terraform consente di definire e gestire le risorse IAM proprio come i bucket S3.

Provisioning di un utente IAM

Creiamo un nuovo utente IAM usando Terraform. Un utente IAM rappresenta una persona o un servizio che interagisce con AWS.

Questo utente non avrà ancora alcuna autorizzazione; le aggiungeremo nel passaggio successivo.

Provi a eseguire questo esempio:

resource "aws_iam_user" "coddykit_user" {
  name = "coddykit-app-user"
  path = "/system/"
  tags = {
    Department = "DevOps"
  }
}

output "iam_user_name" {
  value = aws_iam_user.coddykit_user.name
}

output "iam_user_arn" {
  value = aws_iam_user.coddykit_user.arn
}

Comprendere le policy IAM

Le policy IAM sono documenti che definiscono le autorizzazioni. Specificano quali azioni sono consentite o negate su quali risorse e a quali condizioni.

Le policy sono scritte in JSON e possono essere associate a utenti, gruppi o ruoli.

  • Policy basate sull'identità: associate a un'identità IAM (utente, gruppo o ruolo).
  • Policy basate sulla risorsa: associate a una risorsa, come un bucket S3 o una coda SQS.

Concessione delle autorizzazioni S3

Ora creiamo una policy che concede al nostro utente IAM l'accesso in sola lettura a uno specifico bucket S3 e associamola all'utente.

La risorsa aws_iam_policy definisce la policy, mentre aws_iam_user_policy_attachment la associa all'utente.

Provi a eseguire questo esempio:

resource "aws_s3_bucket" "policy_target_bucket" {
  bucket = "coddykit-policy-bucket-112233" # Unique name
}

resource "aws_iam_user" "s3_reader_user" {
  name = "coddykit-s3-reader"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      aws_s3_bucket.policy_target_bucket.arn,
      "${aws_s3_bucket.policy_target_bucket.arn}/*"
    ]
  }
}

resource "aws_iam_policy" "s3_read_only" {
  name        = "CoddyKitS3ReadOnlyPolicy"
  description = "Grants read-only access to a specific S3 bucket"
  policy      = data.aws_iam_policy_document.s3_read_only_policy.json
}

resource "aws_iam_user_policy_attachment" "attach_s3_read_only" {
  user       = aws_iam_user.s3_reader_user.name
  policy_arn = aws_iam_policy.s3_read_only.arn
}

output "s3_reader_user_name" {
  value = aws_iam_user.s3_reader_user.name
}

output "s3_read_only_policy_arn" {
  value = aws_iam_policy.s3_read_only.arn
}

Organizzazione con i gruppi IAM

Per una gestione migliore, soprattutto in presenza di molti utenti, può usare i gruppi IAM. Un gruppo è un insieme di utenti IAM.

Anziché associare le policy ai singoli utenti, può associarle a un gruppo: tutti gli utenti del gruppo erediteranno tali autorizzazioni.

Questo semplifica la gestione delle autorizzazioni e facilita il rispetto del principio del privilegio minimo.

Verifica rapida: S3 e IAM

Quali delle seguenti affermazioni sulla gestione di bucket AWS S3 e utenti o policy IAM con Terraform sono VERE?

Riepilogo: S3 e IAM

Ottimo lavoro! In questa lezione ha imparato a gestire bucket AWS S3 e risorse IAM usando Terraform.

  • Abbiamo creato bucket S3, configurato il versioning e bloccato l'accesso pubblico.
  • Abbiamo creato utenti IAM e associato policy personalizzate per concedere autorizzazioni specifiche.
  • Ora comprende l'importanza di S3 per lo storage e di IAM per il controllo sicuro degli accessi in AWS, definendo tutto come codice!

Nel prossimo modulo approfondiremo le tecniche avanzate di gestione dello state.

Domande Frequenti

La lezione «Gestione dei bucket S3 e di IAM» è gratuita?

Sì — il testo completo di «Gestione dei bucket S3 e di IAM» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Gestione dei bucket S3 e di IAM»?

Impari a predisporre e configurare bucket di storage S3 e a gestire con Terraform le risorse AWS Identity and Access Management (IAM). Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Gestione dei bucket S3 e di IAM»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione del provider AWS
  2. Provisioning delle istanze EC2
  3. Gestione dei bucket S3 e di IAM
  4. Configurare VPC e networking
← Torna a DevOps Bootcamp