GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie eine IAM-Rolle in AWS mit Terraform

In diesem Artikel erfahren Sie, wie Sie eine IAM-Rolle erstellen. Bevor ich fortfahre, gehe ich davon aus, dass Sie mit den Grundlagen von Terraform und AWS IAM-Rollen vertraut sind. Wenn Sie mehr über IAM-Rollen erfahren möchten, klicken Sie hier. In diesem Artikel erstellen wir eine Rolle und weisen ihr Administratorberechtigungen zu.

Voraussetzungen

  1. Grundlegendes Verständnis von Terraform.
  2. Terraform auf Ihrem System installiert.
  3. AWS-Konto (erstellen, falls Sie noch keins haben).
  4. 'access_key' &'secret_key' eines AWS IAM-Benutzers. (Klicken Sie hier, um zu erfahren, wie Sie einen IAM-Benutzer mit „access_key“ und „secret_key“ auf AWS erstellen, )

Was wir tun werden

  1. Schreiben Sie Terraform-Konfigurationsdateien zum Erstellen einer IAM-Rolle.
  2. Erstellen Sie eine IAM-Rolle mithilfe der Terraform-Konfigurationsdateien.
  3. Löschen Sie die erstellte IAM-Rolle mit Terraform.

Terraform-Konfigurationsdateien für die IAM-Rolle schreiben

Erstellen Sie ein dediziertes Verzeichnis, in dem Sie Terraform-Konfigurationsdateien erstellen können.

Verwenden Sie den folgenden Befehl, um ein Verzeichnis zu erstellen und Ihr aktuelles Arbeitsverzeichnis dorthin zu ändern.

mkdir-terraform
cd terraform/

 Ich verwende „vim“ als Editor, um in Dateien zu schreiben. Sie können einen Editor Ihrer Wahl verwenden und die folgenden Konfigurationen kopieren und einfügen, um variables.tf, terraform.tfvars zu erstellen und  main.tf

 

Erstellen Sie „main.tf“, das für die Erstellung einer IAM-Rolle auf AWS verantwortlich ist. Diese main.tf liest Werte von 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 in der obigen Konfiguration verwendeten Argumente:

  • assume_role_policy – (Erforderlich) Die Richtlinie, die einer Entität die Berechtigung erteilt, die Rolle anzunehmen.
  • policy_arn (Erforderlich) – Der ARN der Richtlinie, die Sie anwenden möchten

Erstellen Sie 'variables.tf', das die Deklaration und Definition der Variablen enthält.

Hier, 

Die Variable

"principal_arns" enthält die AWS-Kontonummer, die diese Rolle übernehmen darf. Sie können hier sogar eine Liste mit Kontonummern übergeben.

Die Variable

"policy_arns" enthält den ARN der Richtlinie, die wir an die zu erstellende Rolle anhängen müssen. Sie können hier sogar eine Liste von Richtlinien-ARNs übergeben.

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"
}

Vergessen Sie nach dem Erstellen von 'variables.tf' nicht, die den Variablen zugewiesenen Werte zu ändern. Sie müssen die hervorgehobenen Werte ändern, da diese spezifisch für meine Umgebung sind. Die restlichen Variablen können Sie unverändert lassen. Wenn Sie der Rolle, die Sie erstellen, keinen Administratorzugriff zuweisen möchten, können Sie ihn ändern, indem Sie den Richtlinien-ARN der Richtlinie Ihrer Wahl definieren.

Erstellen Sie „terraform.tfvars“, die die Definition der access_key- und secret_key-Variablen enthält, die in der obigen Datei definiert sind. Wir haben die Deklaration dieser 2 Variablen zusammen mit der Region in der Datei 'terraform.tfvars' beibehalten.

Zum Erstellen einer IAM-Rolle benötigen wir nicht speziell eine bestimmte Region,  ich habe diese Variable nur hier beibehalten, damit Sie diese Regionsvariable verstehen und verwenden können in Ihren anderen Ressourcenerstellungsdateien.

Die folgenden Schlüssel müssen mit den Schlüsseln Ihres IAM-Benutzers geändert werden. Bevor Sie diese Schlüssel angeben, müssen Sie sie über die AWS-Konsole erstellen und diese Schlüssel mit niemandem teilen.

vim terraform.tfvars

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

Jetzt sollten Sie 3 Dateien haben, nämlich variables.tf, terraform.tfvars und  main.tf

Erstellen Sie eine IAM-Rolle mithilfe der Terraform-Konfigurationsdateien

Bevor Sie die folgenden Befehle ausführen, vergewissern Sie sich, dass Sie den gültigen access_key und secret_key konfiguriert haben.

Der erste zu verwendende Befehl ist „terraform init“. Dieser Befehl lädt Plugins für Anbieter, die in der Konfiguration verwendet werden, herunter und installiert sie. In unserem Fall ist es AWS.

  terraform init

Der zweite zu verwendende Befehl ist 'terraform plan'. Dieser Befehl wird verwendet, um die Änderungen anzuzeigen, die an der Infrastruktur stattfinden werden.

 Terraformplan

Der Befehl „terraform apply“ erstellt die in der main.tf-Datei erwähnten Ressourcen auf der AWS. Sie werden aufgefordert, Ihre Eingaben zum Erstellen der Ressourcen zu machen.

Terraform anwenden

Wenn Sie den obigen Befehl ausführen, können Sie nach erfolgreichem Abschluss sehen, dass neue Ressourcen hinzugefügt und 0 zerstört wurden.

Sie können zur AWS IAM-Konsole unter "Rolle" gehen, um zu überprüfen, ob die IAM-Rolle erstellt wurde oder nicht.

Löschen Sie die erstellte IAM-Rolle mit Terraform

Wenn Sie Ressourcen, die Sie mit der in der main.tf-Datei erwähnten Konfiguration erstellt haben, nicht mehr benötigen, können Sie den Befehl "Terraform Destroy" verwenden, um alle diese Ressourcen zu löschen.

Terraform zerstören

Schlussfolgerung

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


Linux
  1. So starten Sie eine AWS EC2-Instanz mit Terraform

  2. Erstellen Sie mit Terraform eine Virtual Private Cloud (VPC) auf AWS

  3. Erstellen Sie mit Terraform eine EC2-Instance auf AWS

  4. So erstellen Sie eine RDS-Instance auf AWS mit Terraform

  5. So erstellen Sie einen Linux-Benutzer mit Ansible

So erstellen Sie eine Amazon AWS EC2-Instanz mit Python Boto3

So erstellen Sie eine RDS-Instanz mit Python Boto3 auf AWS

So erstellen Sie einen S3-Bucket mit Python Boto3 auf AWS

So erstellen Sie eine DynamoDB-Tabelle in AWS

So verwalten Sie Terraform State in einem AWS S3-Bucket

So erstellen Sie eine Partition mit dem Befehl „parted“