Comment créer un rôle IAM dans AWS en utilisant Terraform

Dans cet article, nous allons voir comment créer un rôle IAM. Avant de poursuivre, je suppose que tu connais les bases de Terraform et des rôles IAM d’AWS. Si tu veux en savoir plus sur les Rôles IAM, clique ici.Dans cet article, nous allons créer un rôle et lui attribuer des autorisations d’administrateur.

Pré-requis

  1. Compréhension de base de Terraform.
  2. Terraform installé sur ton système.
  3. Compte AWS (Créer si tu n’en as pas).
  4. La ‘clé d’accès’ et la ‘clé secrète’ d’un utilisateur AWS IAM. (Cliquez ici pour apprendre à créer un utilisateur IAM avec ‘access_key’ et ‘secret_key’ sur AWS).

Ce que nous allons faire

  1. Rédige les fichiers de configuration Terraform pour créer un rôle IAM.
  2. Créer un rôle IAM à l’aide des fichiers de configuration Terraform.
  3. Supprimer le rôle IAM créé à l’aide de Terraform.

Écrire les fichiers de configuration Terraform pour le rôle IAM

Crée un répertoire dédié dans lequel tu peux créer des fichiers de configuration Terraform.

Utilise la commande suivante pour créer un répertoire et y changer ton répertoire de travail actuel.

mkdir terraform
cd terraform/

J’utilise « vim » comme éditeur pour écrire dans les fichiers, tu peux utiliser l’éditeur de ton choix et copier-coller les configurations suivantes pour créer variables.tf, terraform.tfvars et main.tf

Crée ‘main.tf’ qui est responsable de la création d’un rôle IAM sur l’AWS. Ce main.tf lira les valeurs des variables de variables.tf et 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)
}

Signification des arguments utilisés dans la configuration ci-dessus :

  • assume_role_policy – (Obligatoire) La politique qui accorde à une entité la permission d’assumer le rôle.
  • policy_arn (Requis) – L’ARN de la politique que tu veux appliquer

Crée ‘variables.tf’ qui contient la déclaration et la définition des variables.

Ici,

La variable « principal_arns » contient le numéro de compte AWS qui doit être autorisé à assumer ce rôle. Tu peux même transmettre une liste de numéros de compte ici.

Lavariable« policy_arns »contient l’ARN de la politique que nous devons attacher au rôle que nous allons créer. Tu peux même passer une liste d’ARN de politique ici.

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

Une fois que tu as créé ‘variables.tf’, n’oublie pas de modifier les valeurs attribuées aux variables. Tu dois modifier les valeurs mises en évidence car elles sont spécifiques à mon environnement. Tu peux garder les autres variables telles quelles. Si tu ne veux pas attribuer l’accès admin au rôle que tu es en train de créer, tu peux le modifier en définissant l’ARN de la politique de ton choix.

Crée ‘terraform.tfvars’ qui contient la définition des variables access_key et secret_key définies dans le fichier ci-dessus. Nous avons conservé la déclaration de ces 2 variables dans le fichier ‘terraform.tfvars’ avec la région.

Pour créer un rôle IAM, nous n’avons pas spécifiquement besoin d’une région particulière, j’ai simplement conservé cette variable ici pour que tu puisses comprendre cette variable région et l’utiliser dans tes autres fichiers de création de ressources.

Les clés suivantes doivent être modifiées avec les clés de ton utilisateur IAM. Avant de spécifier ces clés, tu dois les créer à partir de la console AWS et ne pas partager ces clés avec qui que ce soit.

vim terraform.tfvars

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

Tu devrais maintenant avoir 3 fichiers, à savoir variables.tf, terraform.tfvars et main.tf.

Créer un rôle IAM à l’aide des fichiers de configuration de Terraform

Avant d’exécuter les commandes suivantes, assure-toi que tu as configuré la clé d’accès et la clé secrète valides.

La première commande à utiliser est ‘terraform init’. Cette commande télécharge et installe les plugins pour les fournisseurs utilisés dans la configuration. Dans notre cas, il s’agit d’AWS.

terraform init

La deuxième commande à utiliser est ‘terraform plan’. Cette commande est utilisée pour voir les changements qui auront lieu sur l’infrastructure.

terraform plan

La commande ‘terraform apply’ va créer les ressources sur l’AWS mentionnées dans le fichier main.tf. Tu seras invité à fournir tes données pour créer les ressources.

terraform apply

Lorsque tu exécutes la commande ci-dessus, après avoir réussi, tu peux voir que de nouvelles ressources ont été ajoutées et que 0 a été détruite.

Tu peux aller dans la console AWS IAM sous Role pour vérifier si le rôle IAM est créé ou non.

Supprime le rôle IAM créé à l’aide de Terraform

Si tu n’as plus besoin des ressources que tu as créées à l’aide de la configuration mentionnée dans le fichier main.tf, tu peux utiliser la commande « terraform destroy » pour supprimer toutes ces ressources.

terraform destroy

Conclusion

Dans cet article, nous avons vu les étapes pour créer un rôle IAM avec des privilèges d’administrateur. Nous avons également vu comment le rôle IAM peut être supprimé en une seule commande.

Vous aimerez aussi...