Aller au contenu

Découverte d'OpenBao 2.0

logo openbao

En juillet 2024, OpenBao 2.0 a vu le jour après un fork d’HashiCorp Vault. Pour rappel, ce fork a été motivé par le changement de licence de Vault vers la Business Source License (BSL), limitant son utilisation commerciale. Pour préserver une version open source, OpenBao a été basé sur la dernière version de Vault sous licence MPL 2.0. Ce fork s’inscrit dans la lignée d’OpenTofu, le fork de Terraform, créé pour les mêmes raisons.

Les défis relevés pour sortir OpenBao

Lors du fork d’OpenBao à partir de HashiCorp Vault, les développeurs ont dû retirer plusieurs fonctionnalités Enterprise qui étaient propres aux versions commerciales de Vault.

Voici les principaux changements apportés :

  1. Retrait des fonctionnalités Enterprise : OpenBao a supprimé toutes les références aux fonctionnalités spécifiques à la version Enterprise de Vault, comme les clés gérées dans Transit et PKI. Ces fonctionnalités étaient exclusives à la version Enterprise.
  2. Suppression des références à la facturation : Des éléments liés à la gestion de la facturation, présents dans l’interface utilisateur et l’API de Vault Enterprise, ont été supprimés. OpenBao n’a pas de modèle de facturation, mais a conservé certains mécanismes comme les comptes clients pour assurer la visibilité dans la gestion des utilisateurs.
  3. Réécriture de l’interface utilisateur : OpenBao a dû réorganiser et simplifier l’UI pour se débarrasser des sections qui géraient à la fois les fonctionnalités open source et Enterprise de Vault.
  4. Adaptation de la documentation : Une grande partie de la documentation faisait référence à des fonctionnalités réservées à l’édition Enterprise de Vault. Les développeurs ont dû nettoyer ces sections afin de rendre la documentation d’OpenBao cohérente et adaptée à une utilisation open source.

Les nouveautés de cette release

Depuis la première release de la version 2.0 d’OpenBao, plusieurs mises à jour sont venus améliorer les performances, la sécurité et l’intégration avec d’autres outils.

  • La version 2.0.0 a introduit la pagination des réponses API, réduisant ainsi la charge des serveurs, et le chiffrement XChaCha20-Poly1305, qui renforce la sécurité des secrets. Elle a également supprimé la fonction obsolète mlock, simplifiant ainsi la configuration.
  • La version 2.0.1 s’est concentrée sur l’intégration avec Kubernetes, en alignant les préfixes pour faciliter l’adoption d’OpenBao. De plus, une mise à jour de Go a modernisé le projet, et des corrections ont été apportées pour améliorer la compatibilité avec Docker et la gestion des clés Ed25519.
  • Enfin, la version 2.0.2 a poursuivi cette évolution en renforçant la gestion des requêtes IPv6 et en ajoutant un lien symbolique pour permettre aux utilisateurs de continuer à utiliser la commande vault dans Docker, facilitant ainsi la transition pour ceux venant de Vault.

Démarrage rapide avec OpenBao

La CLI d’OpenBao s’appelle désormais bao, mais les commandes et le fonctionnement restent proches de Vault.

Installation d’OpenBao

Pour installer OpenBao, téléchargez-le depuis les binaries officiels. Suivez ces étapes en fonction de votre système d’exploitation :

Sous Linux

  1. Téléchargez l’archive :

    Terminal window
    wget https://github.com/openbao/openbao/releases/download/v2.0.2/bao_2.0.2_linux_amd64.deb
  2. Décompressez et déplacez le fichier binaire :

    Terminal window
    sudo dpkg -i bao_2.0.2_linux_amd64.deb
  3. Vérifiez l’installation :

    Terminal window
    bao --version
    OpenBao v2.0.2 (96853bb4de27ab8ffd1b0c2898c691460d43edeb), built 2024-10-05T19:26:46Z

Lancer OpenBao en mode développement

Le mode “dev” d’OpenBao permet de tester rapidement les fonctionnalités sans nécessiter de configuration complexe :

Terminal window
bao server -dev
...
WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
and starts unsealed with a single unseal key. The root token is already
authenticated to the CLI, so you can immediately begin using Vault.
You may need to set the following environment variables:
$ export BAO_ADDR='http://127.0.0.1:8200'
The unseal key and root token are displayed below in case you want to
seal/unseal the Vault or re-authenticate.
Unseal Key: CjmYM5CDZT4rvDwtM6ASKowiAlWk+BvdAwbTmdajLOU=
Root Token: s.C4fVfIyomabvBeIlrXUdI3Ql
Development mode should NOT be used in production installations!

Cela démarre un serveur local avec un token racine. Vous pouvez utiliser ce mode pour expérimenter avec le stockage et la récupération des secrets.

Stockage et récupération de secrets

Stocker un secret

Utilisez cette commande pour stocker un secret sous forme de paire clé/valeur :

Terminal window
bao kv put secret/my-secret password=supersecret
==== Secret Path ====
secret/data/my-secret
======= Metadata =======
Key Value
--- -----
created_time 2024-10-19T18:38:25.604326432Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1

Récupérer un secret

Pour lire un secret que vous avez stocké :

Terminal window
bao kv get secret/my-secret
==== Secret Path ====
secret/data/my-secret
======= Metadata =======
Key Value
--- -----
created_time 2024-10-19T18:38:25.604326432Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
====== Data ======
Key Value
--- -----
password supersecret

Intégration avec des scripts et langages

OpenBao peut être géré facilement via son API.

Exemple en Bash :

Terminal window
export VAULT_TOKEN="s.C4fVfIyomabvBeIlrXUdI3Ql"
curl \
--header "X-Vault-Token: $VAULT_TOKEN" \
http://127.0.0.1:8200/v1/secret/data/my-secret | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 326 100 326 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
{
"request_id": "d11995ad-c2f2-8c66-36d0-e2e67f1f21c8",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": {
"data": {
"password": "supersecret"
},
"metadata": {
"created_time": "2024-10-19T18:38:25.604326432Z",
"custom_metadata": null,
"deletion_time": "",
"destroyed": false,
"version": 1
}
},
"wrap_info": null,
"warnings": null,
"auth": null
}

L’avenir d’OpenBao

Avant d’envisager une utilisation en production, il est indispensable d’effectuer des tests prolongés. Même si la compatibilité avec les fonctionnalités clés de Vault est là, il est encore trop tôt pour juger de la robustesse d’OpenBao dans des environnements de production. Il faudra notamment observer la gestion de la scalabilité, les performances sous charge, ainsi que la réponse d’OpenBao à des scénarios complexes comme la réplication des secrets ou la gestion avancée des tokens.

De plus, certaines questions se posent quant à l’avenir de ce fork après l’acquisition d’HashiCorp par IBM. Si IBM poursuit une stratégie similaire à celle avec Red Hat, il est probable que les produits open source continueront d’être disponible, avec des versions payantes offrant des fonctionnalités supplémentaires sur une version commerciale.

Sources

Plus d’infos