Terraform som Infrastructure as Code · leksjon

Håndtering av S3-bøtter og IAM

Lær å klargjøre og konfigurere S3-lagringsbøtter og administrere ressurser for AWS Identity and Access Management (IAM) med Terraform.

Leksjon 3 av 411 trinn

Håndtering av S3-bøtter og IAM er en gratis leksjon i Terraform som Infrastructure as Code på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Terraform som Infrastructure as Code, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.

S3 og Terraform: Skylagring

Amazon S3 (Simple Storage Service) tilbyr svært skalerbar, robust og tilgjengelig objektlagring. Tjenesten egner seg perfekt til sikkerhetskopier, statiske nettsteder og dataarkivering.

Det gir flere fordeler å administrere S3-bøtter med Terraform:

  • Automatisering: Opprett og konfigurer bøtter programmatisk.
  • Versjonskontroll: Spor endringer i bøttekonfigurasjonene.
  • Konsistens: Sørg for at alle miljøer har identiske S3-oppsett.

Deres første S3-bøtte

La oss definere en enkel S3-bøtte. Ressursen aws_s3_bucket brukes til dette.

Bøttenavn må være globalt unike på tvers av alle AWS-kontoer. Velg et unikt navn!

Prøv å kjøre dette eksempelet:

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
}

Navngivning av bøtter og region

Husk disse viktige punktene når De oppretter en S3-bøtte:

  • Global unikhet: Bøttenavn må være globalt unike på tvers av alle AWS-kontoer.
  • Region: Selv om navnene er globale, ligger selve bøtten i en bestemt AWS-region (definert i konfigurasjonen av AWS-provider).
  • Navneregler: Navn må skrives med små bokstaver, være mellom 3 og 63 tegn lange og kan inneholde bindestreker.

Det er viktig å velge en god navnekonvensjon for å sikre oversikt og tydelighet.

S3-sikkerhet og funksjoner

S3 tilbyr funksjoner som versjonering, slik at De kan beholde flere versjoner av et objekt, samt blokkering av offentlig tilgang av hensyn til sikkerheten. For de fleste bøtter er det avgjørende å blokkere offentlig tilgang som standard.

Dette eksempelet setter opp versjonering og sørger for at offentlig tilgang er blokkert.

Prøv å kjøre dette eksempelet:

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: Identitet og tilgang

AWS IAM (Identity and Access Management) er en nettjeneste som hjelper Dem med å kontrollere tilgangen til AWS-ressurser på en sikker måte. Den er grunnleggende for sikkerheten.

Med IAM kan De:

  • Administrere brukere og deres programmatisk tilgang og konsolltilgang.
  • Gi detaljerte tillatelser til bestemte AWS-ressurser.
  • Kontrollere hvem som kan gjøre hva i AWS-kontoen Deres.

Terraform lar Dem definere og administrere IAM-ressurser på samme måte som S3-bøtter.

Klargjøring av en IAM-bruker

La oss opprette en ny IAM-bruker ved hjelp av Terraform. En IAM-bruker representerer en person eller tjeneste som samhandler med AWS.

Denne brukeren har foreløpig ingen tillatelser; vi legger dem til i neste trinn.

Prøv å kjøre dette eksempelet:

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
}

Forstå IAM-policyer

IAM-policyer er dokumenter som definerer tillatelser. De angir hvilke handlinger som er tillatt eller nektet for hvilke ressurser, og under hvilke betingelser.

Policyer skrives i JSON og kan knyttes til brukere, grupper eller roller.

  • Identitetsbaserte policyer: Knyttes til en IAM-identitet (bruker, gruppe eller rolle).
  • Ressursbaserte policyer: Knyttes til en ressurs (for eksempel en S3-bøtte eller en SQS-kø).

Gi S3-tillatelser

La oss nå opprette en policy som gir IAM-brukeren vår lesetilgang til en bestemt S3-bøtte, og deretter knytte den til brukeren.

Ressursen aws_iam_policy definerer policyen, og aws_iam_user_policy_attachment knytter den til brukeren.

Prøv å kjøre dette eksempelet:

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
}

Organisering med IAM-grupper

For bedre administrasjon, særlig når De har mange brukere, kan De bruke IAM-grupper. En gruppe er en samling av IAM-brukere.

I stedet for å knytte policyer til individuelle brukere kan De knytte policyer til en gruppe, slik at alle brukerne i gruppen arver disse tillatelsene.

Dette forenkler administrasjonen av tillatelser og gjør det enklere å følge prinsippet om minste privilegium.

Hurtigtest: S3 og IAM

Hvilke av følgende påstander om administrasjon av AWS S3-bøtter og IAM-brukere/-policyer med Terraform er SANNE?

Oppsummering: S3 og IAM

Godt jobbet! I denne leksjonen lærte De hvordan De kan administrere AWS S3-bøtter og IAM-ressurser ved hjelp av Terraform.

  • Vi klargjorde S3-bøtter, konfigurerte versjonering og blokkerte offentlig tilgang.
  • Vi opprettet IAM-brukere og knyttet tilpassede policyer for å gi bestemte tillatelser.
  • De forstår nå hvor viktig S3 er for lagring, og IAM for sikker tilgangskontroll i AWS – alt definert som kode!

Deretter skal vi se nærmere på avanserte teknikker for tilstandsadministrasjon.

Gratis å komme i gang

Lær deg Terraform som Infrastructure as Code med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Håndtering av S3-bøtter og IAM» gratis?

Ja – hele teksten i «Håndtering av S3-bøtter og IAM» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Terraform som Infrastructure as Code-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.

Hva lærer jeg i «Håndtering av S3-bøtter og IAM»?

Lær å klargjøre og konfigurere S3-lagringsbøtter og administrere ressurser for AWS Identity and Access Management (IAM) med Terraform. Du øver på Terraform som Infrastructure as Code med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Terraform som Infrastructure as Code?

Ingen tidligere erfaring er nødvendig. Terraform som Infrastructure as Code på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Håndtering av S3-bøtter og IAM»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Terraform som Infrastructure as Code-leksjonen?

Ja. Alle Terraform som Infrastructure as Code-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Konfigurering av AWS Provider
  2. Klargjøring av EC2-instanser
  3. Håndtering av S3-bøtter og IAM
  4. Konfigurering av VPC og nettverk
← Tilbake til Terraform som Infrastructure as Code