Comment créer une stratégie AWS IAM en utilisant Terraform

Comment créer une stratégie AWS IAM en utilisant Terraform
Dans AWS, le service IAM est utilisé pour contrôler l'accès aux services et aux ressources d'AWS. Il a besoin d'une connaissance très approfondie pour configurer les politiques IAM pour assurer des privilèges minimums aux systèmes et ressources AWS.

Construit aux fins de l'infrastructure en tant que solution de code (IAC), Terraform prend en charge plusieurs fournisseurs de services cloud. C'est un outil open source développé par Hashicorp. En utilisant IAC, nous pouvons gérer la configuration des infrastructures avec des fichiers de configuration. Par exemple, nous pouvons déployer, mettre à jour et gérer notre infrastructure en définissant les ressources requises.

Dans ce guide, nous verrons comment nous pouvons créer un utilisateur AWS et y attacher une stratégie en utilisant Terraform. Laissez-nous d'abord par l'installation de Terraform sur Ubuntu 20.04.

Installation de Terraform

Hashicorp fournit le package Terraform officiel pour Ubuntu / Debian, Centos / Rhel, Fedora et Amazon Linux. À côté de cela, il maintient également le binaire pré-compilé et peut également être compilé à partir de la source. Pour ce guide, nous utilisons le package par défaut fourni par le référentiel de la package Debian pour installer Terraform sur Ubuntu 20.04.

Étape 1. Installez GNUPG, Software-Properties-Common et Curl Packages pour vérifier la signature GPG de Hashicorp et installer le référentiel requis:

$ sudo apt-get update && sudo apt-get install -y gnupg logiciel-properties-commun curl

Étape 2. Ajoutez la clé GPG Hashicorp à l'aide de la commande:

$ curl -fssl https: // apt.sorties.hashicorp.com / gpg | sudo apt-key ajouter -

Étape 3. Continuez en ajoutant le référentiel requis.

$ sudo apt-add-repository "deb [arch = amd64] https: // apt.sorties.hashicorp.com $ (lsb_release -cs) Main "

Étape 4. Exécutez la commande de mise à jour pour ajouter le référentiel et installer Terraform.

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

Étape 5. Vérifiez si Terraform est installé en exécutant la commande:

$ Terraform - Version

Notre terraform est installé sur notre machine locale, nous pouvons donc continuer notre tâche à travailler avec AWS. Comme mentionné précédemment, Terraform utilise plusieurs fichiers de configuration pour l'approvisionnement des ressources. Chacun de ces fichiers doit résider dans son dossier / répertoire de travail respectif. Créons un répertoire à cet effet.

Créez un dossier pour contenir vos fichiers de configuration et modifier le répertoire dans ce dossier:

$ Mkdir Linuxhint-Terraform && CD Linuxhint-Terraform

1. Création d'un utilisateur IAM à l'aide de Terraform

Nous n'avons qu'un seul utilisateur IAM en ce moment:

Nous allons maintenant faire un 'User_Create.TF'Fichier qui sera utilisé pour créer notre utilisateur «Demouser»:

$ nano user_create.TF

Maintenant, mettez la configuration suivante à l'intérieur:

Terraform
requis_providers
aws =
source = "hashicorp / aws"
version = "~> 3.27 "


required_version = "> = 0.14.9 "

fournisseur "aws"
région = "US-East-1"
access_key = "your_access_key_for_current_user"
secret_key = "votre_secret_key_for_current_user"

ressource "aws_iam_user" "new_user"
name = "Demouser"

Ressource "aws_iam_access_key" "ack"
user = aws_iam_user.nouvel utilisateur.nom

sortie "Secret_Key"
valeur = aws_iam_access_key.Acck.secret
sensible = vrai

sortie "Access_key"
valeur = aws_iam_access_key.Acck.identifiant

Créer une stratégie et l'attacher à l'utilisateur IAM à l'aide de Terraform

Nous allons créer une stratégie S3 List All Bodets et l'attacher à notre utilisateur IAM. Ajoutez maintenant le fichier ci-dessus avec ce code:

ressource "aws_iam_user_policy" "iam"
name = "test"
user = aws_iam_user.nouvel utilisateur.nom
politique = <
"Version": "2012-10-17",
"Déclaration": [

"Effet": "Autoriser",
"Action": "S3: ListallMyBuckets",
"Ressource": "*"

]]

Eof

Ce fichier contient toute la configuration à déployer à l'aide de Terraform. Remplacez simplement le texte en gras par vos propres détails de configuration. Explorons chacune des sections utilisées dans le fichier ci-dessus:

  • Terraform - il définit les paramètres de terraform. Le «Provideurs obligatoires» Définit le fournisseur à utiliser avec la terraform et la «source» est un paramètre facultatif pour le nom d'hôte, un espace de noms et le type de fournisseur. Dans le code ci-dessus, la source est définie comme 'hashicorp / aws ' qui, comme tous les fournisseurs, est installé à partir du registre Terraform. Le fournisseur ci-dessus pointe vers 'enregistrement.terraform.io / hashicorp / aws '.

L'attribut de version définit la version du fournisseur que vous souhaitez utiliser.

  • Fournisseur - Cela spécifie en fait la plate-forme cloud avec laquelle vous allez interagir (AWS, Azure, GCP, etc.). Cela contrôle également la région que vous déployez vos ressources et les informations d'identification de sécurité pour votre utilisateur.
  • Ressource - Il comprend des composants qui construisent une infrastructure comme les bases de données, le stockage, le réseau, etc. La première chaîne, ici "Aws_instance", définit le type de ressource et le second définit un nom personnalisé que vous souhaitez utiliser. Ces deux se combinent pour former un identifiant unique pour une ressource, pour e.g. ici 'aws_iam_access_key.Acck.secret' est un identifiant de ressources (ID). De la même manière, nous pouvons également inclure des tailles de machine, des noms d'images disques ou des ID VPC.

Pour valider ou vérifier votre configuration, utilisez la commande:

$ Terraform Valider

Initialisation du répertoire Terraform

Pour télécharger et installer le fournisseur que nous avons défini dans notre configuration et autres fichiers, nous devons initialiser le répertoire contenant ce fichier:

$ Terraform init

Comme vous pouvez le voir sur l'image ci-dessus, notre commande init est réussie et il y a également de nouveaux fichiers créés ici. Il y a aussi une autre commande: `` Plan Terraform '. Bien qu'il ne soit pas obligatoire de l'utiliser, il a certains avantages. Par exemple.:

1. Vous pouvez voir les actions que Terraform va effectuer.

2. Il peut souligner les erreurs syntaxiques dans vos fichiers de configuration.

Terraform ne mentionne pas cette commande dans sa documentation car lorsque vous exécutez la commande `` Terraform Apply '', le même plan sera à nouveau présenté.

Construire l'infrastructure

Pour construire notre infrastructure, utilisez la commande:

$ terraform s'applique

Cela sortira d'abord le plan d'exécution décrivant les tâches que Terraform effectuera pour amener l'état de votre infrastructure à celui défini dans votre fichier de configuration. Après cela, il s'arrête et vous demandera de confirmer le plan de continuer. Si tout est défini comme vous le souhaitez, tapez «oui» pour continuer:

Si vous êtes prêt à continuer, tapez «oui». Notez que la réalisation du processus prend un certain temps. Une fois ce processus terminé, le message ci-dessous apparaît:

Pour afficher vos informations d'identification de sécurité, ouvrez le 'Terraform.Fichier tfState 'et recherchez l'attribut de valeur sous le "Secret_key" et "Access_key":

Sur votre console de gestion AWS IAM, l'utilisateur IAM y sera répertorié:

Afin de vérifier quelle stratégie est attachée à cet utilisateur IAM, cliquez sur le nom de l'utilisateur IAM. À partir de la capture d'écran ci-dessous, nous pouvons voir cela ou «Demouser» a une stratégie de «test» qui lui est attachée avec la même autorisation que nous avons jointe plus tôt dans le fichier Terraform.

Vérifier la politique

Pour voir si notre stratégie jointe fonctionne comme prévu, connectez-vous à l'utilisateur IAM et exécutez la commande:

$ aws s3 ls

Si tout a été configuré correctement, vous verrez la liste de vos seaux ici:

Détruire les ressources

Lorsque vous avez terminé et que vous n'avez plus besoin des ressources AWS que vous avez créées, vous pouvez simplement les supprimer en utilisant la commande:

$ terraform détruire

Conclusion

Dans ce guide, nous avons appris à attacher une politique IAM à un utilisateur AWS utilisant Terraform. Vous pouvez également essayer d'attacher différentes politiques à un utilisateur ou un rôle de la même manière.