
Bitwarden centralise vos mots de passe avec un chiffrement de bout en bout (AES-256). C’est l’un des gestionnaires de mots de passe open-source les plus populaires, avec deux produits complémentaires : le Password Manager pour stocker vos identifiants, et le Secrets Manager pour automatiser la gestion des secrets dans vos pipelines CI/CD.
Le problème des mots de passe en équipe
Section intitulée « Le problème des mots de passe en équipe »Imaginez une équipe DevOps qui gère des dizaines de services : bases de données, API tierces, comptes cloud, certificats. Chaque service a ses propres credentials. Comment les partager sans risque ?
Les pratiques courantes sont toutes problématiques :
- Fichiers texte partagés — Aucun chiffrement, aucun historique, aucune trace d’accès
- Tableurs Excel — Circulent par email, finissent dans des dossiers publics
- Messages Slack/Teams — Stockés en clair dans les logs, impossibles à révoquer
- Variables d’environnement en dur — Finissent dans les commits Git, exposées dans les logs CI
Bitwarden résout ce problème avec deux approches complémentaires :
-
Password Manager — Pour les humains. Vous stockez, partagez et gérez vos identifiants via une interface web, des extensions navigateur et des applications mobiles.
-
Secrets Manager — Pour les machines. Vos applications et pipelines CI/CD récupèrent automatiquement les secrets dont ils ont besoin, sans intervention humaine.
Deux produits, deux cas d’usage
Section intitulée « Deux produits, deux cas d’usage »Password Manager
Section intitulée « Password Manager »C’est le cœur de Bitwarden. Il permet de :
- Stocker des mots de passe, notes sécurisées, cartes bancaires, identités
- Générer des mots de passe forts automatiquement
- Partager des identifiants avec votre équipe via des organisations
- Synchroniser sur tous vos appareils (web, desktop, mobile, navigateur)
- Exporter/Importer depuis LastPass, 1Password, KeePass et autres
Le Password Manager utilise un chiffrement AES-256 avec PBKDF2-SHA256 (600 000 itérations par défaut). Vos données sont chiffrées avant d’être envoyées au serveur. Même Bitwarden ne peut pas les lire.
Secrets Manager
Section intitulée « Secrets Manager »Lancé en 2023, le Secrets Manager est conçu pour les développeurs et les équipes DevOps. Il permet de :
- Centraliser les secrets applicatifs (clés API, tokens, connexions DB)
- Organiser les secrets par projets
- Contrôler les accès via des comptes machines (machine accounts)
- Injecter les secrets dans vos applications via la CLI
bws - Auditer qui a accédé à quoi et quand (logs)
Choisir son édition
Section intitulée « Choisir son édition »Bitwarden propose plusieurs plans, du gratuit à l’entreprise. Le choix dépend de vos besoins en fonctionnalités et du nombre d’utilisateurs.
Pour les individus
Section intitulée « Pour les individus »| Plan | Prix | Fonctionnalités clés |
|---|---|---|
| Free | Gratuit | Mots de passe illimités, 2 appareils, partage avec 1 personne |
| Premium | 10$/an | TOTP intégré, 1 Go stockage fichiers, rapports de sécurité |
| Families | 40$/an | 6 utilisateurs, partage illimité, toutes les fonctionnalités Premium |
Pour les équipes
Section intitulée « Pour les équipes »| Plan | Prix | Fonctionnalités clés |
|---|---|---|
| Teams | 4$/user/mois | Partage équipe, groupes, journaux d’audit, 2FA avancé |
| Enterprise | 6$/user/mois | SSO (SAML/OIDC), SCIM, politiques personnalisées, Key Connector |
Secrets Manager
Section intitulée « Secrets Manager »| Plan | Secrets | Machine accounts | Prix |
|---|---|---|---|
| Teams | 6 000 | 20 inclus | 6$/mois (pack de 500 secrets) |
| Enterprise | 12 000 | 50 inclus | 12$/mois (pack de 500 secrets) |
Partie 1 : Installation avec Docker Compose
Section intitulée « Partie 1 : Installation avec Docker Compose »Docker Compose est la méthode la plus simple pour déployer Bitwarden en self-hosted.
Prérequis
Section intitulée « Prérequis »- Docker Engine 20.10+ avec Docker Compose
- 4 Go de RAM minimum (8 Go recommandé)
- Ports 80 et 443 disponibles
- Un nom de domaine pointant vers votre serveur
- Un serveur SMTP pour les notifications
Obtenir les identifiants d’installation
Section intitulée « Obtenir les identifiants d’installation »Avant d’installer, vous devez obtenir un ID d’installation et une clé d’installation gratuits sur le site Bitwarden.
-
Rendez-vous sur la page d’hébergement
Ouvrez https://bitwarden.com/host dans votre navigateur.
-
Remplissez le formulaire
- Entrez votre adresse email
- Sélectionnez votre région (Europe ou États-Unis)
- Cochez la case d’acceptation des conditions
-
Récupérez vos identifiants
Vous recevrez par email :
- Installation ID : un UUID (ex:
a1b2c3d4-e5f6-7890-abcd-ef1234567890) - Installation Key : une clé secrète
Conservez ces identifiants, vous en aurez besoin lors de l’installation.
- Installation ID : un UUID (ex:
Installation
Section intitulée « Installation »-
Créer un utilisateur dédié
Pour des raisons de sécurité, créez un utilisateur système dédié à Bitwarden :
Fenêtre de terminal sudo adduser bitwardensudo usermod -aG docker bitwarden -
Créer le répertoire d’installation
Fenêtre de terminal sudo mkdir -p /opt/bitwardensudo chown -R bitwarden:bitwarden /opt/bitwardensudo chmod 700 /opt/bitwarden -
Télécharger le script d’installation
Connectez-vous en tant que l’utilisateur bitwarden et téléchargez le script :
Fenêtre de terminal su - bitwardencd /opt/bitwardencurl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux"chmod +x bitwarden.sh -
Lancer l’installation
Fenêtre de terminal ./bitwarden.sh installLe script vous demandera :
- Votre nom de domaine (ex:
bitwarden.example.com) - Votre Installation ID et Installation Key
- Si vous souhaitez utiliser Let’s Encrypt pour le certificat SSL (recommandé)
- Votre région (EU ou US)
- Votre nom de domaine (ex:
-
Configurer l’environnement
Éditez le fichier de configuration pour ajuster les paramètres :
Fenêtre de terminal nano ./bwdata/env/global.override.envConfigurez au minimum le serveur SMTP pour les emails :
Fenêtre de terminal globalSettings__mail__smtp__host=smtp.example.comglobalSettings__mail__smtp__port=587globalSettings__mail__smtp__ssl=trueglobalSettings__mail__smtp__username=notifications@example.comglobalSettings__mail__smtp__password=VotreMotDePasseSMTP -
Configurer les administrateurs
Toujours dans
global.override.env, ajoutez les emails des administrateurs :Fenêtre de terminal adminSettings__admins=admin@example.com,ops@example.comCes utilisateurs auront accès au portail d’administration système.
-
Démarrer Bitwarden
Fenêtre de terminal ./bitwarden.sh startLe premier démarrage prend 2-3 minutes pour initialiser les conteneurs.
-
Créer le premier compte
- Ouvrez
https://bitwarden.example.comdans votre navigateur - Cliquez sur Créer un compte
- Entrez votre email et créez un mot de passe maître fort
- Ouvrez
Vérification :
# Vérifier que tous les conteneurs sont en cours d'exécutiondocker ps --filter "name=bitwarden"
# Vérifier les logs./bitwarden.sh logsVous devriez voir une dizaine de conteneurs en cours d’exécution : bitwarden-nginx, bitwarden-api, bitwarden-web, etc.
Partie 2 : CLI Password Manager
Section intitulée « Partie 2 : CLI Password Manager »L’interface web est pratique pour le quotidien, mais elle ne suffit pas pour l’automatisation. La CLI bw permet de gérer vos mots de passe en ligne de commande : création en lot, récupération dans des scripts, export automatisé.
Installation de la CLI
Section intitulée « Installation de la CLI »# Télécharger le binairecurl -L "https://bitwarden.com/download/?app=cli&platform=linux" -o bw.zipunzip bw.zipchmod +x bwsudo mv bw /usr/local/bin/
# Vérificationbw --version# 2026.1.0npm install -g @bitwarden/clibw --versionbrew install bitwarden-clisudo snap install bwConfiguration du serveur
Section intitulée « Configuration du serveur »Par défaut, la CLI se connecte aux serveurs cloud de Bitwarden. Pour utiliser votre serveur self-hosted :
# Configurer l'URL du serveurbw config server https://bitwarden.example.com
# Vérifier la configurationbw status --pretty# {# "serverUrl": "https://bitwarden.example.com",# "lastSync": null,# "status": "unauthenticated"# }Authentification
Section intitulée « Authentification »La CLI utilise un système de sessions. Vous vous authentifiez une fois, puis utilisez un token de session pour les commandes suivantes.
-
Se connecter
Fenêtre de terminal bw loginEntrez votre email, mot de passe maître et code 2FA si activé.
Résultat :
You are logged in!To unlock your vault, set your session key to the `BW_SESSION` environment variable. ex:$ export BW_SESSION="5PBYGU+5yt3RHcCjoeJKx/wByU34vokGRZjXpSH7Ylo8w==" -
Définir la variable de session
Fenêtre de terminal export BW_SESSION="5PBYGU+5yt3RHcCjoeJKx/wByU34vokGRZjXpSH7Ylo8w=="Cette variable permet d’exécuter les commandes sans ressaisir le mot de passe maître.
-
Synchroniser le coffre
Fenêtre de terminal bw sync# Syncing complete.
Commandes essentielles
Section intitulée « Commandes essentielles »La CLI suit une structure simple : bw <commande> <objet> [options]. Les commandes principales sont list, get, create, edit, delete. Les objets sont items, folders, collections, etc.
Lister les éléments
Section intitulée « Lister les éléments »# Lister tous les éléments du coffrebw list items
# Filtrer par recherchebw list items --search "github"
# Filtrer par dossierbw list items --folderid 60556c31-e649-4b5d-8daf-fc1c391a1bf2
# Afficher en JSON formatébw list items --prettyRécupérer un mot de passe
Section intitulée « Récupérer un mot de passe »# Récupérer par nom (recherche)bw get password github.com
# Récupérer par ID exactbw get item 99ee88d2-6046-4ea7-92c2-acac464b1412
# Récupérer uniquement le mot de passe (pour scripts)bw get password github.com# G#kL9$mP2xNq!
# Récupérer le usernamebw get username github.com# johndoeCréer un élément
Section intitulée « Créer un élément »La création utilise un template JSON encodé en base64 :
# Obtenir le template d'un élémentbw get template item
# Créer un élément en ligne de commandebw get template item | \ jq '.name="Mon Service" | .login.username="admin" | .login.password="MonMotDePasse123"' | \ bw encode | bw create item
# Créer un dossierecho '{"name":"Production"}' | bw encode | bw create folderGénérer un mot de passe
Section intitulée « Générer un mot de passe »# Mot de passe par défaut (14 caractères, majuscules, minuscules, chiffres)bw generate# DWCosTPW#hLWZ6
# Mot de passe complexe de 24 caractères avec caractères spéciauxbw generate -ulns --length 24# DWCosTPW#hLWZ6i%2D!OlA3z
# Passphrase de 5 motsbw generate -p --words 5 --separator - -c# Valiant-Rubble-Bonus-Enlarged-ImplicitLes options de génération :
-u, --uppercase: inclure majuscules-l, --lowercase: inclure minuscules-n, --number: inclure chiffres-s, --special: inclure caractères spéciaux-p, --passphrase: générer une passphrase--words <n>: nombre de mots (passphrase)--separator <char>: séparateur entre les mots
Bitwarden Send
Section intitulée « Bitwarden Send »Send permet de partager des fichiers ou du texte de manière sécurisée avec expiration automatique :
# Envoyer du texte (expire dans 7 jours par défaut)bw send -n "API Key" "sk_live_xxxxxxxxxxxxx"
# Envoyer un fichier (expire dans 14 jours)bw send -n "Certificat SSL" -f ./cert.pem -d 14
# Envoyer avec mot de passebw send -n "Credentials" --password "MotDePassePartage" "admin:secret123"
# Lister les envoisbw send listLe destinataire reçoit un lien unique pour accéder au contenu, sans avoir besoin de compte Bitwarden.
Exporter le coffre
Section intitulée « Exporter le coffre »# Export CSVbw export --format csv --output ./backup.csv
# Export JSON chiffré (recommandé pour les sauvegardes)bw export --format encrypted_json --password "MotDePasseExport" --output ./backup.jsonPartie 3 : Secrets Manager pour DevOps
Section intitulée « Partie 3 : Secrets Manager pour DevOps »Le Password Manager est conçu pour les humains. Mais comment vos applications récupèrent-elles leurs secrets ? C’est le rôle du Secrets Manager et de sa CLI bws.
Concepts clés
Section intitulée « Concepts clés »Le Secrets Manager utilise une architecture différente du Password Manager :
| Concept | Description |
|---|---|
| Secret | Une paire clé-valeur sensible (ex: DATABASE_URL=postgres://...) |
| Project | Un groupe logique de secrets (ex: “Production”, “Staging”) |
| Machine Account | Un compte non-humain qui accède aux secrets (ex: votre pipeline CI) |
| Access Token | La clé d’authentification d’un machine account |
Le flux est le suivant :
- Vous créez des projets et y ajoutez des secrets via l’interface web
- Vous créez un machine account avec accès à certains projets
- Vous générez un access token pour ce machine account
- Votre application utilise ce token pour récupérer les secrets via la CLI
bws
Installation de la CLI bws
Section intitulée « Installation de la CLI bws »# Télécharger la dernière versionVERSION="2.0.0"curl -LO "https://github.com/bitwarden/sdk-sm/releases/download/bws-v${VERSION}/bws-x86_64-unknown-linux-gnu-${VERSION}.zip"unzip bws-x86_64-unknown-linux-gnu-${VERSION}.zipchmod +x bwssudo mv bws /usr/local/bin/
# Vérificationbws --version# bws 2.0.0docker run --rm -it bitwarden/bws --helpConfiguration
Section intitulée « Configuration »-
Activer Secrets Manager
Dans l’interface web Bitwarden, allez dans Admin Console → Billing → Subscription et activez Secrets Manager pour votre organisation.
-
Créer un projet
Dans le menu de gauche, cliquez sur Projects → New Project :
- Nom :
production - Description : Secrets de l’environnement de production
- Nom :
-
Ajouter des secrets
Dans le projet, cliquez sur Secrets → Create Secret :
Key: DATABASE_URLValue: postgres://app:secret@db.internal:5432/myappNote: Connexion base PostgreSQL production -
Créer un machine account
Allez dans Machine Accounts → New Machine Account :
- Nom :
ci-production - Accès : projet
productionavec permission Can read
- Nom :
-
Générer un access token
Dans le machine account, onglet Access Tokens :
- Cliquez sur Create Access Token
- Nom :
gitlab-runner-01 - Expiration : selon vos besoins (ou “Never” pour les tests)
Copiez le token immédiatement, il ne sera plus affiché.
Commandes essentielles
Section intitulée « Commandes essentielles »Authentification
Section intitulée « Authentification »# Via variable d'environnement (recommandé)export BWS_ACCESS_TOKEN="0.48c78342-1635-48a6-accd-afbe01336365.C0tMmQqHnAp..."
# Via option en ligne de commandebws secret list --access-token "0.48c78342..."Lister les secrets
Section intitulée « Lister les secrets »# Lister tous les secrets accessiblesbws secret list
# Lister les secrets d'un projet spécifiquebws secret list e325ea69-a3ab-4dff-836f-b02e013fe530
# Format de sortiebws secret list --output tablebws secret list --output yamlbws secret list --output env # Format KEY=VALUERécupérer un secret
Section intitulée « Récupérer un secret »# Récupérer un secret par son IDbws secret get be8e0ad8-d545-4017-a55a-b02f014d4158
# Sortie JSON par défaut :# {# "id": "be8e0ad8-d545-4017-a55a-b02f014d4158",# "key": "DATABASE_URL",# "value": "postgres://app:secret@db.internal:5432/myapp",# "note": "Connexion base PostgreSQL production",# ...# }
# Extraire uniquement la valeur (pour scripts)bws secret get be8e0ad8-... --output tsv | cut -f4Créer un secret
Section intitulée « Créer un secret »# Créer un nouveau secretbws secret create API_KEY "sk_live_xxxxxxxxxxxxx" e325ea69-a3ab-4dff-836f-b02e013fe530 \ --note "Clé API Stripe production"
# Paramètres :# - KEY : nom du secret# - VALUE : valeur du secret# - PROJECT_ID : UUID du projetInjecter des secrets dans une commande
Section intitulée « Injecter des secrets dans une commande »La commande bws run est la plus puissante. Elle récupère tous les secrets accessibles et les injecte comme variables d’environnement dans la commande spécifiée :
# Exécuter une commande avec les secrets injectésbws run -- 'npm run start'
# Les secrets deviennent des variables d'environnement :# DATABASE_URL, API_KEY, etc. sont accessibles dans l'application
# Limiter aux secrets d'un projetbws run --project-id e325ea69-a3ab-4dff-836f-b02e013fe530 -- 'python app.py'
# Utiliser un shell spécifiquebws run --shell bash -- '/path/to/script.sh'Intégration CI/CD
Section intitulée « Intégration CI/CD »GitLab CI
Section intitulée « GitLab CI »variables: BWS_ACCESS_TOKEN: $BWS_TOKEN # Défini dans les variables CI/CD GitLab
deploy: image: bitwarden/bws:latest script: - bws run -- ./deploy.shGitHub Actions
Section intitulée « GitHub Actions »name: Deploy
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Install bws run: | curl -LO https://github.com/bitwarden/sdk-sm/releases/download/bws-v2.0.0/bws-x86_64-unknown-linux-gnu-2.0.0.zip unzip bws-*.zip && chmod +x bws && sudo mv bws /usr/local/bin/
- name: Deploy with secrets env: BWS_ACCESS_TOKEN: ${{ secrets.BWS_ACCESS_TOKEN }} run: bws run -- ./deploy.shPartie 4 : Comparaison avec les alternatives
Section intitulée « Partie 4 : Comparaison avec les alternatives »| Critère | Bitwarden | Passbolt | HashiCorp Vault |
|---|---|---|---|
| Type | Password Manager + Secrets Manager | Password Manager | Secrets Management |
| Chiffrement | AES-256 | GPG (bout en bout) | AES-256-GCM |
| Open source | Oui | Oui | Oui (core) |
| CLI Password | bw | go-passbolt-cli | — |
| CLI Secrets | bws | — | vault |
| Interface web | Oui, complète | Oui, complète | Oui |
| Extensions navigateur | Oui, tous | Chrome, Firefox | — |
| Mobile | iOS, Android | Non | — |
| Self-hosted | Docker | Docker | Docker |
| SSO | Enterprise | Pro | Oui |
| Prix entrée | Gratuit | Gratuit | Gratuit |
Quand choisir Bitwarden :
- Vous voulez un gestionnaire complet (passwords + secrets)
- Vous avez besoin d’applications mobiles et extensions navigateur
- Vous souhaitez un déploiement simple (Docker Compose tout-en-un)
Quand choisir Passbolt :
- Vous privilégiez le chiffrement GPG (bout en bout sans clé côté serveur)
- Vous n’avez pas besoin d’applications mobiles
- Vous préférez une installation plus légère
Quand choisir Vault :
- Vous avez besoin de secrets dynamiques (credentials éphémères)
- Vous gérez de l’infrastructure as code complexe
- Vous avez des besoins avancés (PKI, transit encryption)
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
unauthenticated après login | Session expirée | Refaire bw unlock et exporter BW_SESSION |
Error: self-signed certificate | Certificat SSL self-signed | Configurer Let’s Encrypt ou NODE_EXTRA_CA_CERTS |
| SMTP errors au démarrage | Configuration SMTP manquante | Vérifier global.override.env |
Session key is invalid | Token de session incorrect | Refaire bw login puis bw unlock |
bws: command not found | CLI pas dans le PATH | sudo mv bws /usr/local/bin/ |
Access denied sur bws | Token expiré ou permissions | Vérifier le machine account |
Vérifier les conteneurs Docker
Section intitulée « Vérifier les conteneurs Docker »# Statut des conteneurscd /opt/bitwarden && ./bitwarden.sh status
# Logs récents./bitwarden.sh logs
# Redémarrer./bitwarden.sh restartVérifier la CLI
Section intitulée « Vérifier la CLI »# Statut de connexionbw status --pretty
# Forcer la synchronisationbw sync --force
# Reconfigurer le serveurbw config server https://bitwarden.example.comÀ retenir
Section intitulée « À retenir »- Deux produits complémentaires — Password Manager pour les humains, Secrets Manager pour les machines
- Chiffrement AES-256 — Vos données sont chiffrées côté client avant l’envoi
- CLI Password Manager (
bw) — Génération (generate), récupération (get), création (create), partage (send) - CLI Secrets Manager (
bws) — Injection de secrets (run), CRUD (secret list/get/create) - Self-hosted possible — Docker Compose avec script d’installation officiel
- Open source — Code audité, communauté active, audits de sécurité réguliers (Cure53)
- Gratuit pour commencer — Plans gratuits suffisants pour les petites équipes