Un monde d'octets

Aller au contenu | Aller au menu | Aller à la recherche

lundi, juin 8 2020

Terraform et Vault

Pour utiliser nos secret vault dans terraform, il faut faire comme suit :

provider "vault" {
  address = "http://localhost:8200"
  token = "***REDACTED***"
}

le token pouvant être récupéré avec la commande :

vault token lookup

Création d'une ressource data :

data "vault_generic_secret" "myvault" {
  path = "secret/myvault"
}

Nous pouvons ensuite accéder à nos secrets grâce aux variables terraform suivantes :

username = "${data.vault_generic_secret.myvault.data["username"]}"
password = "${data.vault_generic_secret.myvault.data["password"]}"

Google Gloud, Iam, et Terraform

Pour pouvoir mettre en place un cluster ou meme un simple compute sur gcloud via terraform, il faut une autorisation. Pour cela, il faut utiliser les iam.

authentification gcloud

gcloud auth login
gcloud config set project my-project

Récupération des iam présentes

gcloud iam service-accounts list

Génération d'un fichier account.json

gcloud iam service-accounts keys create account.json --iam-account **ID**

Utilisation de ce compte pour terraform

Pour cela, il suffit de positionner la variable d'environnement, avant exécuter les commandes terraform

export GOOGLE_APPLICATION_CREDENTIALS=account.json

Nous utilisons le provider google suivant :

provider "google" {
  credentials = "${file("account.json")}"
  project     = "testpascal"
  region      = "europe-west2-a"
}

lundi, mai 18 2020

Terraform basics

l'ordre

  • terraform init
  • terraform validate
  • terraform plan
  • terraform apply
  • terraform show

mercredi, janvier 15 2020

Terraform, Windows, et mot de passe

Il est possible avec terraform de récupérer le cryptage rsa du mot de passe admin, et ensuite de le décoder en utilisant la clef rsa privée que nous allons évoquer tout de suite :

dans le fichier terraforme ec2.tf, nous précisons une clef rsa publique pour les opérations :

resource "aws_key_pair" "admin" {
   key_name   = "admin"
   public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmDDEp5mI3dFRF5gm5qdqir9lx85D9kGQogiUmIO6NxUw1OxYHTEU9s0SJjnv8/VSmiRczSoEJSMPZA7U3CDxFHFO8aPni/SRs0/sh0ZMVYyae8OyfVotvtwb3OdrPVmLCYPYVzuz2XM6HLo6ro495x0Fxd6djGOg4HQ/eSx4tUfALjQPXE7gCE82c2oDOgnO7eMNeXh1UfkXViU0FVu2Nhu1HcW4vpgT7JzV8GyQYMBexU2WXh7adtGVd2ffzJQdatzg/7ymKCT0+SDcspXZR17V94e5xkOrccXPGjzqEFGkvDt9jqECaLA0UCc8qcAFsZo2yB/C1b9dG5NdWYBIh valois@teknomage"
 }

A cette clef, bien sur, nous avons la clef privée correspondante.

L'ajout dans la resource "aws_instance" de la ligne suivante :

   get_password_data = "true"

nous permettra d'afficher le chiffrement rsa du passe admin, avec l'ajout de l'output suivant dans le terraform :

output "Administrator_Password" {
    value = "${aws_instance.server2.*.password_data}"
}

Une fois le terraform appliqué, nous obtenons un output de notre mot de passe admin, qui est un hash base64 de notre chiffre rsa, et que nous déchiffrons comme suit :

cat rsa.txt | base64 -d | openssl rsautl -decrypt -inkey ~/.ssh/id_rsa | xargs echo "Password:"

Et voila, nous avons ainsi notre mot de passe admin pour la machine qui fut terraformée.