Aller au contenu principal
Sommaire de la formation

Installer vault server avec docker compose et backend de stockage bucket gcp

coolibra315 vues

Installer vault server avec docker compose et backend de stockage gcp bucket:

 

Pré-requis

  1. Bucket gcp avec son fichier d'acces:

    • bucket gcp
    • Service account qui a les droits d'accès au bucket en lecture/ ecriture
    • Recuperer le fichier d'acces json du service account
  2. Service Account et clés JSON :

    • Créez un compte de service (Service Account) avec le rôle Storage Admin.
    • Téléchargez la clé JSON pour le compte de service et placez-la sur votre machine.
  3. Docker et Docker Compose :

    • Installez Docker et Docker Compose sur une vm.
  4. Ports ouverts :

    • Assurez-vous que le port 8200 est accessible pour communiquer avec Vault.

 

Configuration de Vault

Créez une arborescence dédiée au déploiement :

mkdir -p /opt/vault/{config,data,logs}
cd /opt/vault

 

  • Fichier de configuration config/vault.hcl :
  • Copier la key json du service account  gcp dans : valult/config/gcp-credentials.json

Utilisez un backend de stockage sécurisé, comme gcp bucket.

storage "gcs" {
  bucket        = "bc-vault-dev"
  credentials_file = "/vault/config/gcp-credentials.json"
}

listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = "true"
}

default_lease_ttl = "168h"
max_lease_ttl     = "0h"

api_addr = "http://vault:8200"
cluster_addr = "http://vault:8201"

ui              = true
disable_mlock    = true

 

  • Explication :
    • storage : gcp bucket garantit la persistance des données.
    • listener : Assurez un accès HTTP uniquement.
    • ui : Activez l'interface utilisateur.
    • disable_mlock : Désactivez mlock dans les conteneurs (nécessaire avec Docker).

 

  • Fichier Docker Compose

Créez le fichier docker-compose.yml :

######## gcp bucket ################
services:
  vault:
    image: hashicorp/vault:1.18
    container_name: vault
    restart: always
    volumes:
      - ./vault/data:/vault/data
      - ./vault/logs:/vault/logs
      - ./vault/config:/vault/config
    ports:
      - "8200:8200"
    environment:
      GOOGLE_APPLICATION_CREDENTIALS: ./vault/config/gcp-credentials.json
      VAULT_API_ADDR: "http://vault:8200"
      VAULT_ADDRESS: "http://vault:8200"
      VAULT_ADDR: "http://vault:8200"
    networks:
      - vault-network
    cap_add:
      - IPC_LOCK
    command: vault server -config=/vault/config/vault.hcl

networks:
  vault-network:
    driver: bridge
  • Explication :
    • Vault :
      • Définit un backend de stockage gcp bucket.
      • Mappe les volumes pour la persistance et la configuration.
      • Utilise cap_add: IPC_LOCK pour empêcher les données sensibles d'être swapées.
    • Réseau : Isolé dans un réseau bridge dédié.

 

  • Lancer le déploiement

Démarrez les conteneurs :

docker compose up -d
docker compose ps
docker logs vault

 

 

  • Initialiser et configurer Vault: docker exec -it vault vault operator init

Copiez et sauvegardez en lieu sûr les clés de déchiffrement et le root token. Vous aurez besoin à chaque redemarage.

docker exec -it vault sh

# executer ensuite
vault operator init

 

Unseal Key 1: X0bF1PGbDliO+Dc8vCP+t79LlQBrrfnmFyeLOWgrmjgo
Unseal Key 2: PnbDLXb6+0Bm10PNE37u9NrDzvTK/u1zTUZQwTeuP8o/
Unseal Key 3: FvaUs8hM8YSjU1hoNrlS5ZEoD0mz4v8vcQDwUwvJTbPy
Unseal Key 4: 1nlx/yH5Kec8r0KxFyQFVD1p5/26dtG1wZa+HPoldfnH
Unseal Key 5: BmV//TiSiLa7AJ5uRD8hhCoP7uvBBIHojceKa48ddCiH

Initial Root Token: hvs.4qexrbKtaVPeaojh0ICaGld7

 

  • Activer audit logs
vault login <ROOT_TOKEN>
vault audit enable file file_path=/vault/logs/audit.log
ls -lh /vault/logs/audit.log
vault status
sleep 10
ls -lh /vault/logs/audit.log

 

  • Acceder à l'url :  http://vault_srv_ip:82000/  et renseigner 3 des Unseal key

  • Après la validation de la 3ième unseal key, cette page va s'ouvrir pour l'authent avec le root key. Renseigner la root key pour acceder à l'UI de vault.

  • On vois bien que le storage type est gcp

 

Cette authent avec token nous permet de configurer la methode d'authent. Vault supporte username & password, OIDC, LDAP, Github...

On peut par exemple activer le username & password. Depuis le menu : Access > enable new method > Username & password > enable

Une fois activer, on peut revenir sur l'authent methods pour créer un user. username: admin-vault, password: AKsKQGB1WV7588!

Il faut mettre un password fort. Une fois créé, on peut l'utiliser pour se connecter.

 

On peut acceder à gcp portal pour voir:

 

Activation de key vault

  • Depuis le menu > Secrets Engins > Enable new engine

 

  • Clic sur kv > renseigner un nom par exemple vault-with-azure-blob > clic sur Enable engine

 

  • Clic sur new secret pour ajouter un secret

 

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.