Comment utiliser AWS IAM avec Terraform ?

Terraform est un outil permettant d’automatiser la mise en service des ressources cloud. L’infrastructure doit également être dotée des privilèges appropriés. Dans les grandes entreprises, les administrateurs l’utilisent pour créer ou retirer automatiquement des centaines de ressources sans configuration manuelle. Pourquoi utiliser AWS IAM avec Terraform ? Avec AWS Access and Identity Management (IAM), Terraform peut […]

Comment utiliser AWS IAM avec Terraform

Terraform est un outil permettant d’automatiser la mise en service des ressources cloud. L’infrastructure doit également être dotée des privilèges appropriés. Dans les grandes entreprises, les administrateurs l’utilisent pour créer ou retirer automatiquement des centaines de ressources sans configuration manuelle.

Pourquoi utiliser AWS IAM avec Terraform ?

Avec AWS Access and Identity Management (IAM), Terraform peut également permettre de définir les autorisations d’accès aux ressources. Dans un environnement sécurisé, le réseau zero-trust impose d’utiliser des privilèges pour accéder aux ressources du cloud, ce qui devrait également être le cas dans toute stratégie de sécurité. Au lieu de permettre à tout le monde d’accéder aux ressources, les administrateurs peuvent s’en servir pour accorder des autorisations uniquement aux personnes qui en ont besoin.

AWS IAM sur Terraform : les 3 principales fonctionnalités

IAM permet de créer et de mettre à jour les utilisateurs, les rôles et les groupes d’utilisateurs. Les organisations qui l’utilisent bénéficient de trois fonctionnalités principales : elles peuvent facilement contrôler les politiques d’accès, utiliser des clés à la place des identifiants réseau standard et attribuer des rôles aux utilisateurs. Ces fonctionnalités sont complémentaires et contrôlent l’accès aux ressources cloud généralement mises en service à l’aide de Terraform.

Terraform utilise des fichiers avec l’extension .tf pour automatiser les commandes. Les fichiers de configuration contiennent des commandes pouvant être réutilisées chaque fois qu’une ressource doit être créée. Les fichiers étant préprogrammés avec des paramètres et des configurations, ils accélèrent le provisioning des ressources cloud dans AWS.

Comment utiliser les politiques IAM dans Terraform ?

Les politiques définissent les utilisateurs et les autorisations d’accès aux ressources cloud. Vous utilisez des politiques lorsque vous créez une ressource dans AWS (par exemple, un compartiment S3) et que vous devez attribuer à différents utilisateurs des autorisations spécifiques (par exemple, lister les contenus du compartiment S3).

Comment utiliser les paires de clés IAM dans Terraform ?

Dans AWS, les utilisateurs se voient attribuer des clés plutôt que des noms ou des mots de passe. Une paire de clés correspond à une clé d’accès associée à une clé secrète. Les utilisateurs doivent utiliser les deux pour accéder aux ressources. Dans Terraform, des paires de clés sont attribuées aux utilisateurs lorsque vous leur donnez accès à une ressource.

Comment utiliser les rôles IAM dans Terraform ?

Un rôle IAM est un groupe d’autorisations attribuées à un utilisateur spécifique. L’attribution de rôles dans Terraform permet d’accorder des autorisations à un utilisateur spécifique. Un rôle permet à l’utilisateur d’effectuer plusieurs actions au niveau de la ressource, il est donc préférable de procéder à une vérification préalable.

Comment utiliser AWS IAM avec Terraform : exemple

Dans cet exemple, un nouveau fichier utilisateur nommé create_user.tf est utilisé pour créer un compte utilisateur sur AWS via Terraform. L’utilisateur est créé et une politique lui est attribuée pour un compartiment S3.

Étape 1 : installation de Terraform

Installez Terraform. Dans Debian, entrez :

sudo apt-get install terraform

Étape 2 : création d’un répertoire Terraform

Créez un répertoire pour le nouveau projet Terraform :

mkdir linuxhint-terraform && cd linuxhint-terraform

Étape 3 : création du fichier create_user.tf

Créez le fichier create_user.tf :

nano user_create.tf

Étape 4 : configuration du nouveau compte utilisateur

Après avoir créé et ouvert le fichier, ajoutez le code suivant :

terraform {

required_providers {

    aws = {

    source  = "hashicorp/aws"

    version = "~> 3.27"

    }

  }

}

provider "aws" {

  region    = "us-west-1"

access_key = "user_access_key"

secret_key = "user_secret"

}

resource "aws_iam_user" "new_user" {

  name = "NewUserExample"

}

resource "aws_iam_access_key" "AccK" {

  user = aws_iam_user.new_user.name

}

output "secret_key" {

  value = aws_iam_access_key.AccK.secret

  sensitive = true

}

output "access_key" {

  value = aws_iam_access_key.AccK.id

}

Étape 5 : création d’une politique et ajout du nouvel utilisateur

Après avoir créé l’utilisateur, vous pouvez créer une politique et l’appliquer à l’utilisateur. Dans cet exemple, la politique autorise l’utilisateur à consulter la liste des compartiments.

Ajouter le code suivant pour créer le fichier create_user.tf :

resource "aws_iam_user_policy" "iam" {

  name = "ListBuckets"

  user = aws_iam_user.new_user.name

  policy = <<EOF

{

    "Version": "2022-1-6",

    "Statement": [

    {

    "Effect": "Allow",

    "Action": "s3:ListAllMyBuckets",

    "Resource": "*"

    }

    ]

}

EOF

}

Étape 6 : initialisation de Terraform et application des modifications

Après avoir créé le fichier, vous pouvez appliquer les modifications dans AWS à l’aide de Terraform. D’abord, vous devez initialiser une instance :

terraform init 

Ensuite, appliquez les modifications à votre environnement AWS :

terraform apply

Étape 7 : confirmation des modifications dans AWS IAM

À ce stade, la ressource a été créée, mais vous pouvez confirmer les modifications manuellement en accédant à votre compte AWS et en consultant les utilisateurs dans le tableau de bord IAM.

Conclusion

L’automatisation du provisioning cloud permet de gagner du temps en utilisant des modèles pour les politiques, les comptes et les autorisations IAM. Avec Terraform, les administrateurs peuvent rationaliser le déploiement des ressources dans leurs environnements AWS. Pour aller plus loin, découvrez comment créer une instance AWS avec Terraform.