Wie man eine IAM-Rolle in AWS mit Terraform erstellt

In diesem Artikel sehen wir uns an, wie man eine IAM-Rolle erstellt. Bevor wir fortfahren, gehe ich davon aus, dass du mit den Grundlagen von Terraform und AWS IAM-Rollen vertraut bist. Wenn du mehr über IAM-Rollen erfahren möchtest, klicke hier.In diesem Artikel werden wir eine Rolle erstellen und ihr die Rechte eines Administrators zuweisen.

Vorraussetzungen

  1. Grundlegendes Verständnis von Terraform.
  2. Terraform ist auf deinem System installiert.
  3. AWS-Konto (Erstelle wenn du noch keines hast).
  4. ‚access_key‘ & ’secret_key‘ eines AWS IAM Users. (Klicke hier um zu erfahren, wie du einen IAM-Benutzer mit ‚access_key‘ & ’secret_key‘ auf AWS erstellst).

Was wir tun werden

  1. Terraform-Konfigurationsdateien für die Erstellung einer IAM-Rolle schreiben.
  2. Eine IAM-Rolle mithilfe der Terraform-Konfigurationsdateien erstellen.
  3. Lösche die erstellte IAM-Rolle mit Terraform.

Terraform-Konfigurationsdateien für die IAM-Rolle schreiben

Erstelle ein eigenes Verzeichnis, in dem du Terraform-Konfigurationsdateien erstellen kannst.

Verwende den folgenden Befehl, um ein Verzeichnis zu erstellen und wechsle in dein aktuelles Arbeitsverzeichnis.

mkdir terraform
cd terraform/

Ich verwende „vim“ als Editor, um die Dateien zu schreiben. Du kannst einen Editor deiner Wahl verwenden und die folgenden Konfigurationen kopieren, um variables.tf, terraform.tfvars und main.tf zu erstellen

Erstelle ‚main.tf‘, die dafür verantwortlich ist, eine IAM-Rolle auf AWS zu erstellen. Diese main.tf liest die Werte der Variablen aus variables.tf und terraform.tfvars.

vim main.tf

provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}
data "aws_iam_policy_document" "cross_account_assume_role_policy" {
  statement {
    effect = "Allow"

    principals {
      type        = "AWS"
      identifiers = var.principal_arns
    }

    actions = ["sts:AssumeRole"]
  }
}

resource "aws_iam_role" "cross_account_assume_role" {
  name               = var.name
  assume_role_policy = data.aws_iam_policy_document.cross_account_assume_role_policy.json
}

resource "aws_iam_role_policy_attachment" "cross_account_assume_role" {
  count = length(var.policy_arns)

  role       = aws_iam_role.cross_account_assume_role.name
  policy_arn = element(var.policy_arns, count.index)
}

Bedeutung der Argumente, die in der obigen Konfiguration verwendet werden:

  • assume_role_policy – (Erforderlich) Die Richtlinie, die einer Entität die Erlaubnis erteilt, die Rolle zu übernehmen.
  • policy_arn (Erforderlich) – Der ARN der Richtlinie, die du anwenden willst.

Erstelle die Datei „variables.tf“, die die Erklärung und Definition der Variablen enthält.

Hier,

Die Variable „principal_arns“ enthält die AWS-Kontonummer, die zur Nutzung dieser Rolle berechtigt sein soll. Du kannst hier auch eine Liste von Kontonummern angeben.

Die Variable „policy_arns“enthält die ARN der Richtlinie, die wir mit der zu erstellenden Rolle verknüpfen müssen. Du kannst hier auch eine Liste von ARNs für Richtlinien angeben.

vim variables.tf

variable "access_key" {
     description = "Access key to AWS console"
}
variable "secret_key" {
     description = "Secret key to AWS console"
}
variable "region" {
     description = "Region of AWS VPC"
}
variable "name" {
  default = "myrole"
  type        = "string"
  description = "The name of the role. "
}
variable "principal_arns" {
  default = ["123456789012"]
  type        = list(string)
  description = "ARNs of accounts, groups, or users with the ability to assume this role."
}

variable "policy_arns" {
  default = ["arn:aws:iam::aws:policy/AdministratorAccess"]
  type        = list(string)
  description = "List of ARNs of policies to be associated with the created IAM role"
}

Sobald du die Datei „variables.tf“ erstellt hast, vergiss nicht, die den Variablen zugewiesenen Werte zu ändern. Du musst die hervorgehobenen Werte ändern, da sie spezifisch für meine Umgebung sind. Die übrigen Variablen kannst du so lassen, wie sie sind. Wenn du der Rolle, die du erstellst, keinen Admin-Zugang zuweisen willst, kannst du das ändern, indem du den Policy ARN der von dir gewählten Policy definierst.

Erstelle die Datei „terraform.tfvars“, die die Definition der Variablen access_key und secret_key aus der obigen Datei enthält. Wir haben die Deklaration dieser beiden Variablen in der Datei „terraform.tfvars“ zusammen mit der Region gespeichert.

Für die Erstellung einer IAM-Rolle brauchen wir keine bestimmte Region. Ich habe diese Variable nur hier festgehalten, damit du sie verstehst und in deinen anderen Ressourcenerstellungsdateien verwenden kannst.

Die folgenden Schlüssel müssen durch die Schlüssel deines IAM-Benutzers ersetzt werden. Bevor du diese Schlüssel angibst, musst du sie über die AWS-Konsole erstellen und darfst sie mit niemandem teilen.

vim terraform.tfvars

region = "eu-west-3"
access_key = "AKIAQ6GAIA5XFLXF6HOV"
secret_key = "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"

Jetzt solltest du 3 Dateien haben, nämlich variables.tf, terraform.tfvars und main.tf

Eine IAM-Rolle mit Hilfe der Terraform-Konfigurationsdateien erstellen

Bevor du die folgenden Befehle ausführst, stelle sicher, dass du einen gültigen access_key und secret_key konfiguriert hast.

Der erste Befehl, den du verwenden musst, ist „terraform init“. Dieser Befehl lädt die Plugins für die in der Konfiguration verwendeten Anbieter herunter und installiert sie. In unserem Fall ist es AWS.

terraform init

Der zweite Befehl ist „terraform plan“. Dieser Befehl wird verwendet, um die Änderungen zu sehen, die an der Infrastruktur vorgenommen werden.

terraform plan

Der Befehl ‚terraform apply‘ erstellt die Ressourcen auf der AWS, die in der Datei main.tf angegeben sind. Du wirst aufgefordert, deine Daten einzugeben, um die Ressourcen zu erstellen.

terraform apply

Wenn du den obigen Befehl ausführst, kannst du nach erfolgreicher Ausführung sehen, dass neue Ressourcen hinzugefügt und 0 zerstört wurden.

Du kannst die AWS IAM-Konsole unter Rolle aufrufen, um zu überprüfen, ob die IAM-Rolle erstellt wurde oder nicht.

Löschen der erstellten IAM-Rolle mit Terraform

Wenn du die Ressourcen, die du mit der Konfiguration in der Datei main.tf erstellt hast, nicht mehr benötigst, kannst du den Befehl „terraform destroy“ verwenden, um alle Ressourcen zu löschen.

terraform zerstören

Fazit

In diesem Artikel haben wir die Schritte zur Erstellung einer IAM-Rolle mit Administratorrechten kennengelernt. Wir haben auch gesehen, wie die IAM-Rolle mit nur einem Befehl gelöscht werden kann.

Das könnte dich auch interessieren …