Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HashiCorp Vault

HashiCorp Vault

Heraud Kevin

July 06, 2017
Tweet

More Decks by Heraud Kevin

Other Decks in Technology

Transcript

  1. DB Credentials (MySQL, Hazelcast) Keystore password (P12, JKS) Keystore (private

    key) Acces Keys (Tokenizer, OAuth2) Encryption Keys (AES) …
  2. Les secrets dans une application • Où sont-ils stockés ?

    – Fichiers « properties » – BDD – … • Comment gérer leurs cycles de vie ? – Renouvellement – Bail – Révocation – … • Qui doit les gérer ? • Comment mon application y accède ?
  3. Les enjeux liés à Vault • Unseal/seal • Authentification (token,

    login/passwd, github, …) • Génération des « unseal keys » – Shamir's Secret Sharing – PGP / Keybase.io – ? • Gestion des « Policy » • Génération des « tokens » utilisateurs • Wrap/unwrap • HSM (premium) • … Shamir's Secret Sharing
  4. Comment accéder à Vault ? • CLI • HTTP API

    • envconsul/consul-template • Ansible, Chef, … • docker-volume-libsecret • Client – Java, Spring Cloud, Scala – Go – Python – …
  5. $ vault write secret/app/key iauth.key_iauth=a8Y3IHgVCoj7AmUA Success! Data written to: secret/app/key

    --- $ vault read secret/app/key iauth.key_iauth a8Y3IHgVCoj7AmUA --- $ vault read -wrap-ttl=10m secret/app/key wrapping_token: 19f11fee-c184-b218-6595-f58e87cad175 --- $ vault unwrap 19f11fee-c184-b218-6595-f58e87cad175 iauth.key_iauth a8Y3IHgVCoj7AmUA
  6. Combien de fois change-t-on le mot de passe d’une base

    de données dans la vie d’une application ?
  7. ITA Root CA ITA Intermediate CA vault.ita.rocks PKI = Ensemble

    de composants physiques, de procédures et d’application en vue de gérer le cycle de vie des certificats
  8. OpenSSL> openssl req -new -config etc/root-ca.conf -out ca/root- ca.csr -keyout

    ca/root-ca/private/root-ca.key openssl ca -selfsign -config etc/root-ca.conf -in ca/root- ca.csr -out ca/root-ca.crt -extensions root_ca_ext openssl req -new -config etc/signing-ca.conf -out ca/signing-ca.csr -keyout ca/signing-ca/private/signing- ca.key openssl ca -config etc/root-ca.conf -in ca/signing-ca.csr - out ca/signing-ca.crt -extensions signing_ca_ext openssl req -new -config etc/server.conf -out certs/simple.org.csr -keyout certs/simple.org.key openssl ca -config etc/signing-ca.conf -in certs/simple.org.csr -out certs/simple.org.crt -extensions server_ext
  9. HTTP API • Gestion des AC • Gestion des rôles

    : – DN – TTL – Ext / Key usage (server auth, client auth, code signing, email protection, digital signature, data encipherment, …) – … • Gestion du cycle de vie des certificats • Gestion de la CRL
  10. Gestion des clés (aes, ecdsa, eddsa) Chiffrement / Déchiffrement Génération

    d’aléas Génération de hash (SHA256, SHA512, …) Génération de HMAC Signature / Validation
  11. $ vault write -f transit/keys/foo Success! Data written to: transit/keys/foo

    --- echo -n "LTDJ #70 : Vault" | base64 | vault write transit/encrypt/foo plaintext=- ciphertext vault:v1:N2BO36PLZ3…Beyt/LEj2MLo= --- vault write transit/decrypt/foo ciphertext=vault:v1:N2BO36PLZ3…Beyt/LEj2MLo= plaintext TFRESiAjNzAgOiBWYXVsdA== --- echo "TFRESiAjNzAgOiBWYXVsdA==" | base64 -d LTDJ #70 : Vault
  12. Alternatives • Keywhiz (square) • Conjur • Docker secrets (swarm)

    • Kubernetes secrets • AWS Key Management Service • Cloud Key Management (Google Cloud Plateform) • Azure Key Vault • …