Hvordan lage AWS IAM -policy ved hjelp av Terraform

Hvordan lage AWS IAM -policy ved hjelp av Terraform
I AWS brukes IAM -tjeneste for å kontrollere tilgang til tjenester og ressurser til AWS. Den trenger en veldig dyptgående kunnskap for å konfigurere IAM-retningslinjer for å sikre minimumsprivilegier for AWS-systemer og ressurser.

Terraform Støtter flere skytjenesteleverandører som er bygget for infrastruktur som Code (IAC) -løsning. Det er et open source -verktøy utviklet av Hashicorp. Ved hjelp av IAC kan vi administrere infrastrukturoppsett med konfigurasjonsfiler. For eksempel kan vi distribuere, oppdatere og administrere infrastrukturen vår ved å definere de nødvendige ressursene.

I denne guiden vil vi se hvordan vi kan opprette en AWS -bruker og legge ved en policy til den ved hjelp av Terraform. La oss først starte med installasjonen av Terraform på Ubuntu 20.04.

Installere terraform

Hashicorp tilbyr den offisielle Terraform -pakken for Ubuntu/Debian, Centos/RHEL, Fedora og Amazon Linux. Ved siden av dette opprettholder den også forhåndskompilert binær og kan også settes fra kilden. For denne guiden bruker vi standardpakken levert av Debian Package Repository for å installere Terraform på Ubuntu 20.04.

Trinn 1. Installer GNUPG-, programvareforekomst-vanlige og krøllpakker for å bekrefte Hashicorps GPG-signatur og installere det nødvendige depotet:

$ sudo apt-get update && sudo apt-get install -y gnupg programvare-Properties-vanlig krøll

Steg 2. Legg til Hashicorp GPG -tasten ved å bruke kommandoen:

$ curl -fssl https: // apt.utgivelser.Hashicorp.com/gpg | sudo apt-key add -

Trinn 3. Fortsett med å legge til det nødvendige depotet.

$ sudo apt-add-repository "Deb [arch = amd64] https: // appt.utgivelser.Hashicorp.com $ (lsb_release -cs) hoved "

Trinn 4. Kjør oppdateringskommandoen for å legge til depotet og installere terraform.

$ sudo apt-get update && sudo apt-get installer terraform

Trinn 5. Kontroller om Terraform er installert ved å kjøre kommandoen:

$ Terraform -version

Vår terraform er installert på vår lokale maskin, slik at vi kan fortsette oppgaven vår med å jobbe med AWS. Som nevnt tidligere bruker Terraform flere konfigurasjonsfiler for å levere ressurser. Hver av disse filene må ligge i sin respektive arbeidsmappe/katalog. La oss lage en katalog for dette formålet.

Lag en mappe for å inneholde konfigurasjonsfilene og endre katalog til denne mappen:

$ mkdir linuxhint-terraForm && cd linuxhint-terraformform

1. Opprette IAM -bruker ved hjelp av terraform

Vi har bare en IAM -bruker akkurat nå:

Vi vil nå lage en 'user_create.tf'Fil som vil bli brukt til å opprette vår bruker' Demouser ':

$ nano user_create.tf

Sett nå følgende konfigurasjon inni den:

terraform
krevde_providers
aws =
Source = "Hashicorp/AWS"
versjon = "~> 3.27 "


krevde_versjon = "> = 0.14.9 "

leverandør "aws"
Region = "Us-East-1"
access_key = "your_access_key_for_current_user"
Secret_key = "Your_secret_key_for_current_user"

ressurs "aws_iam_user" "new_user"
name = "Demouser"

ressurs "aws_iam_access_key" "acck"
Bruker = AWS_IAM_USER.ny bruker.Navn

output "Secret_key"
verdi = aws_iam_access_key.Acck.hemmelig
følsom = sant

output "access_key"
verdi = aws_iam_access_key.Acck.id

Opprette en policy og knytte den til IAM -brukeren ved hjelp av Terraform

Vi oppretter en S3 -liste All Buckets Policy og knytter den til vår IAM -bruker. Legg nå ut filen ovenfor med denne koden:

ressurs "aws_iam_user_policy" "iam"
name = "Test"
Bruker = AWS_IAM_USER.ny bruker.Navn
policy = <
"Versjon": "2012-10-17",
"Uttalelse": [

"Effekt": "Tillat",
"Handling": "S3: listallmybuckets",
"Ressurs": "*"

]

Eof

Denne filen inneholder hele konfigurasjonen som skal distribueres ved hjelp av Terraform. Bare bytt ut den dristige teksten med dine egne konfigurasjonsdetaljer. La oss utforske hver av seksjonene som brukes i filen ovenfor:

  • Terraform - Den definerer Terraform -innstillingene. De 'Nødvendige leverandører' Definerer leverandøren som skal brukes med terraformen og 'kilden' er en valgfri parameter for vertsnavn, et navneområde og leverandørtypen. I kode over er kilden definert som 'Hashicorp/aws ' som som alle leverandører er installert fra Terraform Registry. Ovennevnte leverandør peker på 'Register.terraform.io/hashicorp/aws '.

Versjonsattributtet definerer versjonen av leverandøren du vil bruke.

  • Tilbyder - Dette spesifiserer faktisk hvilken skyplattform du kommer til å samhandle med (AWS, Azure, GCP etc.). Dette kontrollerer også regionen du distribuerer ressursene dine og sikkerhetsopplysningene for brukeren din.
  • Ressurs - Den består av komponenter som bygger en infrastruktur som databaser, lagring, nettverk osv. Den første strengen, her “AWS_Instance”, Definerer ressurstypen, og den andre definerer et tilpasset navn du vil bruke. Disse to kombinerer for å danne en unik ID for en ressurs, for e.g. her 'aws_iam_access_key.Acck.hemmelig' er en ressursidentifikator (ID). På samme måte kan vi også inkludere maskinstørrelser, diskbilder eller VPC -ID -er.

For å validere eller bekrefte konfigurasjonen, bruk kommandoen:

$ Terraform Valider

Initialisere terraformkatalogen

For å laste ned og installere leverandøren vi definerte i konfigurasjonen og andre filer, må vi initialisere katalogen som inneholder denne filen:

$ terraform init

Som du ser fra bildet over, er vår init -kommando vellykket, og det er noen nye filer også opprettet her. Det er også en kommando til: 'Terraform Plan'. Selv om det ikke er obligatorisk å bruke det, har det noen fordeler. For eksempel.:

1. Du kan se handlingene Terraform kommer til å utføre.

2. Det kan påpeke syntaktiske feil i konfigurasjonsfilene dine.

Terraform nevner ikke denne kommandoen i sin dokumentasjon fordi når du kjører 'Terraform Apply' -kommandoen, vil den samme planen bli presentert igjen.

Bygge infrastrukturen

For å bygge vår infrastruktur, bruk kommandoen:

$ Terraform Søk

Dette vil først sende ut utførelsesplanen som beskriver oppgavene som Terraform vil utføre for å bringe tilstanden til infrastrukturen din til den som er definert i konfigurasjonsfilen din. Etter dette vil det pause og be deg om å bekrefte planen om å fortsette. Hvis alt er satt som du ønsket, skriver du 'ja' for å fortsette:

Hvis du er klar til å fortsette, skriver du 'ja'. Merk at det tar litt tid å fullføre prosessen. Når denne prosessen er fullført, vises meldingen nedenfor:

For å se sikkerhetsopplysningene dine, åpne Terraformen.tfState '-filen og se etter verdienattributtet under “Secret_key” og “Access_key”:

På AWS IAM Management Console vil IAM -brukeren bli oppført der:

For å sjekke hvilken policy som er knyttet til denne IAM -brukeren, klikker du på IAM -brukerens navn. Fra skjermbildet nedenfor kan vi se at eller 'Demouser' har en "test" -policy knyttet til den med samme tillatelse vi har lagt ved tidligere i Terraform -filen.

Verifisere politikken

For å se om vår vedlagte policy fungerer som forventet, kobler du til IAM -brukeren og kjører kommandoen:

$ aws s3 ls

Hvis alt er satt opp riktig, vil du se listen over bøttene dine her:

Ødelegger ressursene

Når du er ferdig og ikke lenger trenger AWS -ressursene du opprettet, kan du ganske enkelt slette dem ved å bruke kommandoen:

$ terraform ødelegger

Konklusjon

I denne guiden har vi lært om å knytte en IAM -policy til en AWS -bruker som bruker Terraform. Du kan også prøve å knytte forskjellige retningslinjer til en bruker eller rolle på samme måte.