Couverture de l'article LockPass : automatiser la sauvegarde des mots de passe
Retour aux articles

L'agence

WanadevStudio

LockPass : automatiser la sauvegarde des mots de passe

Chez Wanadev, on a récemment changé de gestionnaire de mot de passe. On est passés de la solution états-unienne Zoho Vault à LockPass, édité par l'entreprise française LockSelf.

Aussi fiable que puisse être le prestataire choisi, il est essentiel pour nous d'avoir une sauvegarde de nos mots de passe en dehors de chez lui pour ne pas nous retrouver dans la panade le jour où il y a un souci.

Zoho avait ses défauts, mais il possédait une fonctionnalité fort pratique : il envoyait chaque semaine un export (chiffré) des mots de passe par email à tous les utilisateurs. Cet export contenait à la fois les mots de passe partagés auxquels la personne avait accès et ses mots de passe personnels.

Cette fonctionnalité n'étant pas présente dans LockPass, on a donc dû se pencher nous-mêmes sur la sauvegarde des mots de passe. On a donc développé pour cela un outil en ligne de commande nommé LockPass Export qui automatise l'export en utilisant les APIs de la solution (on n'avait pas envie d'aller faire un export manuel tous les jours ou toutes les semaines 😅️).

Aujourd'hui on va donc vous présenter notre outil et la manière de le mettre en œuvre pour sauvegarder quotidiennement tous les mots de passe partagés d'une organisation.

Présentation de l'outil LockPass Export

LockPass Export est donc un outil en ligne de commande permettant d'exporter les mots de passe partagés ainsi que les éventuels fichiers joints d'une organisation LockPass. Nous avons fait le choix de le rendre open source, sous licence GPL-3.0, afin qu'il puisse bénéficier à tous, vous le trouverez donc sur notre GitHub :

Cet outil est développé sous la forme d'un unique script Python et n'utilise aucune dépendance tierce, ce qui devrait faciliter son utilisation. Pour en savoir plus sur la culture de l'open source chez Wanadev, découvrez notre article dédié.

Prérequis

Pour utiliser cet outil, vous aurez besoin :

NOTE : Dans la suite de cet article nous allons détailler l'installation et l'utilisation de l'outil sous Linux. Il est possible de le faire fonctionner sous Windows ou macOS mais vous devrez adapter les commandes et chemins à la plateforme.

Installation

Comme on vient de l'indiquer, l'outil a été écrit sous la forme d'un script Python sans aucune dépendance (en dehors de Python lui-même). Nous l'avons toutefois également publié sur PyPI, ce qui vous donne donc deux possibilités pour l'utiliser, en fonction de ce qui est le plus pratique pour vous.

Utiliser le script seul

La première possibilité est donc d'utiliser directement le script puisqu'il se suffit à lui-même. Voici quelques commandes à exécuter avec des droits administrateur (compte root ou avec sudo) que vous pouvez utiliser pour l' "installer" dans le dossier /opt :

# Téléchargement de la dernière version du script
wget -O /opt/lockpass_export.py https://raw.githubusercontent.com/wanadev/lockpass-export/refs/heads/master/lockpass_export.py

# Rendre le script exécutable
chmod +x /opt/lockpass_export.py

Vous pouvez à présent appeler le script avec la commande suivante :

/opt/lockpass_export.py --help

Installer LockPass Export depuis PyPI

La seconde solution est d'installer l'outil depuis PyPI, ce qui a pour avantage de faciliter sa mise à jour.

Pour ce faire il faut s'assurer d'avoir une version complète de Python 3 avec le module venv présent. Sous Debian, Ubuntu et leurs dérivés vous pouvez utiliser la commande suivante (avec des droits administrateur) pour installer tout le nécessaire :

apt install python3 python3-dev python3-venv

Ensuite on va créer un virtualenv pour accueillir le logiciel :

python3 -m venv /opt/lockpass-export.venv

Puis on installe LockPass Export à l'intérieur :

/opt/lockpass-export.venv/bin/pip install lockpass-export

Et voilà, vous pouvez à présent lancer l'application avec la commande suivante :

/opt/lockpass-export.venv/bin/lockpass-export --help

Mettre à jour LockPass Export

Si vous avez installé le script avec la première méthode, remplacez-le simplement par une version plus récente. N'oubliez pas de lui remettre les droits d'exécution (chmod +x).

Si vous avez installé le script depuis PyPI, utilisez la commande suivante pour le mettre à jour :

/opt/lockpass-export.venv/bin/pip install --upgrade lockpass-export

Utilisation de l'outil

Voici un exemple d'utilisation de LockPass Export :

/opt/lockpass-export.venv/bin/lockpass-export \
    --url https://mycompany.lockself-cloud.com \
    --auth-token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
    --ls-token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
    /root/lockpass-export

Où :

  • --url permet d'indiquer l'URL de base de votre instance LockPass (ici hébergée dans le cloud de LockSelf),

  • --auth-token et --ls-token permettent de fournir les tokens de l'utilisateur API qui effectuera les exports,

  • /root/lockpass-export est le dossier de destination.

NOTE : Suivant votre méthode d'installation il vous faudra adapter le chemin vers l'outil. Référez-vous à la section précédente pour retrouver comment lancer le logiciel.

ATTENTION : LockPass Export va écrire les données en clair dans le dossier de destination. Privilégiez donc un endroit qui n'est pas accessible en lecture par tous les utilisateurs du système. On va voir dans la section suivante comment mettre en œuvre la sauvegarde de manière sécurisée.

Dans notre cas nous avons une seule organisation sur notre LockPass. Si vous en avez plusieurs, il faudra exporter les mots de passe de chaque organisation séparément, en ajoutant le paramètre --organisation-id <ID> (exemple : --organisation-id 1). Vous retrouverez l'ID de l'organisation dans l'URL de la page de management (par exemple lorsque vous listez les utilisateurs de l'organisation).

Mise en œuvre des sauvegardes

Dans notre cas, nous effectuons nos sauvegardes avec BorgBackup. On ne va pas aborder le fonctionnement de cet outil dans le présent article car ce n'est pas le sujet, mais vous pouvez lire la série d'articles que je lui ai dédiée sur mon blog si vous souhaitez en apprendre davantage :

Pour effectuer notre sauvegarde, nous allons utiliser une petite machine virtuelle dédiée à cette tâche, qui ne sera pas accessible depuis l'extérieur. L'opération de sauvegarde se déroulera de la manière suivante :

  • création d'un dossier et d'un disque virtuel en RAM pour ne pas écrire les mots de passe en clair sur le disque,
  • export des mots de passe avec LockPass Export,
  • sauvegarde des mots de passe avec BorgBackup,
  • démontage du disque virtuel pour ne laisser aucune trace.

Voici un exemple de script que l'on pourrait écrire pour effectuer ces tâches :

#!/bin/bash

# Création du dossier dans lequel on va monter notre disque virtuel. On le
# crée dans /root car ce dossier n'est pas accessible aux autres utilisateurs du
# système.
mkdir -p /root/lockpass-export

# Création et montage du volume en RAM.
mount -t tmpfs -o size=10M tmpfs /root/lockpass-export

# Export des mots de passe avec LockPass Export
/opt/lockpass-export.venv/bin/lockpass-export \
    --url "https://mycompany.lockself-cloud.com" \
    --auth-token "XXXXXXXXXXXXXXXXXXXX" \
    --ls-token "XXXXXXXXXXXXXXXXXX" \
    /root/lockpass-export

# Sauvegarde (chiffrée) avec BorgBackup.
export BORG_PASSPHRASE='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
borg create --list <URL DU DÉPÔT BORG> /root/lockpass-export

# Démontage du volume en RAM.
umount /root/lockpass-export

NOTE : Le script est volontairement simple pour que vous ayez une idée de la marche à suivre, mais on pourrait l'améliorer, notamment en gérant les erreurs.

Étant donné que ce script contient des secrets (tokens LockSelf et mot de passe BorgBackup), on va l'enregistrer dans un endroit « safe », comme par exemple "/root/backup-lockself-password.sh". Et bien sûr on n'oublie pas de le rendre exécutable :

chmod +x /root/backup-lockself-password.sh

Voilà, maintenant il ne reste plus qu'à ajouter une tâche planifiée pour effectuer une sauvegarde toutes les nuits. Si vous utilisez cron cela se fait en tapant la commande suivante en root :

crontab -e

Puis en entrant une règle similaire à celle-ci (ici on sauvegarde toutes les nuits à 3h du matin) :

 0 3 * * * /bin/bash /root/backup-lockself-password.sh

Conclusion

Voilà, avec tout ça vous devriez pouvoir facilement sauvegarder vos mots de passe LockPass de manière automatisée. N'hésitez pas à nous faire part de vos remarques ou à nous signaler d'éventuels bugs ou erreurs dans les commentaires de l'article ou en ouvrant une issue sur GitHub ! 😄️


L'image de couverture est un travail dérivé d'une photo d'Henry Newman placée sous licence CC BY-SA 4.0 et d'une icône issue de OnlineWebFonts.COM placée sous licence CC BY 4.0. Le logo de LockPass est la propriété de LockSelf.

Commentaires

Il n'y a actuellement aucun commentaire. Soyez le premier !

  • Couverture de l'article Event Bus : Le secret d'une architecture Symfony réellement découplée
    Event Bus : Le secret d'une architecture Symfony réellement découplée

    Il y a 1 semaine

    Imaginez : votre utilisateur clique sur "Commander". En coulisses, le domaine Stock doit décrémenter les quantités, le domaine Facturation doit générer une facture, et le domaine Notification doit envoyer un email de confirmation. Trois domaines, une seule action... et un spaghetti de dépendances en perspective. 🍝

    Et si ces domaines pouvaient collaborer sans jamais se connaître ?

    C'est exactement ce que permet l'Event Bus. Mais avant de foncer tête baissée, une question se pose : Symfony propose déjà l'EventDispatcher pour gérer les événements. Alors pourquoi introduire un nouveau concept ?

    Spoiler : ce ne sont pas les mêmes outils, et les confondre peut vous coûter cher.

    Dans cet article, nous allons démystifier leurs différences et découvrir comment l'Event Bus de Symfony Messenger vous permet de construire une architecture réellement découplée.

    Ce que vous allez apprendre :

    • Les différences fondamentales entre EventDispatcher et Event Bus
    • Quand utiliser l'un plutôt que l'autre
    • Comment configurer un Event Bus avec Symfony Messenger
    • Créer une architecture événementielle découplée
  • Couverture de l'article CQRS avec Symfony Messenger : Domptez la complexité de vos applications
    CQRS avec Symfony Messenger : Domptez la complexité de vos applications

    Il y a 3 semaines

    Vous êtes-vous déjà retrouvé face à un controller Symfony surchargé qui gère à la fois la validation, la logique métier, la persistence et les réponses HTTP ? Si oui, le CQRS est fait pour vous !

    Le CQRS (Command Query Responsibility Segregation) est un pattern architectural qui sépare clairement les opérations d'écriture (Commands) et de lecture (Queries). Combiné avec Symfony Messenger, il vous permet de :

    • Organiser votre code de manière claire et maintenable
    • Séparer les responsabilités pour respecter les principes SOLID
    • Valider vos données avant même qu'elles n'atteignent votre logique métier
    • Gérer les transactions de base de données de manière élégante
    • Préparer votre application pour l'asynchrone sans effort

    Dans cet article, nous allons explorer les Commands (écriture) et les Queries (lecture) à travers un exemple concret de gestion de bibliothèque.

  • Couverture de l'article Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA
    Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA

    Il y a 8 mois

    Depuis quelques années, les outils d'IA pour générer des intégrations d'interfaces à partir de maquettes fleurissent. On en a testé plusieurs chez WanadevDigital : de Locofy à Uizard, en passant par Framer AI. Tous ont leurs qualités, mais jusqu’ici, il manquait un vrai pont stable entre les intentions du designer et la réalité du code front.

    L’arrivée de Figma Make change la donne. Et si je devais résumer son impact en une phrase : ça fonctionne, et ça fonctionne pour tout le monde, designers, développeurs et intégrateurs !

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement
    Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement

    Il y a 11 mois

    Mettre en place l'internationalisation (i18n) dans un projet web peut sembler simple. Cependant, de nombreux projets se retrouvent avec des configurations de traduction mal gérées, difficiles à maintenir ou à faire évoluer à mesure que l'application grandit. Une stratégie i18n robuste est essentielle pour offrir une expérience utilisateur fluide dans plusieurs langues.

    Je vous décris ici, les pratiques que nous avons établies chez Wanadev au fil des années d'expérience pour mettre en œuvre et gérer les traductions dans les projets Vue. Bien que les exemples soient spécifiques à Vue, la plupart de ces pratiques peuvent être appliquées à n'importe quel framework.

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive
    Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive

    Il y a 11 mois

    Dans la partie 1, nous nous sommes concentrés sur la mise en place d'une base solide pour la gestion des traductions dans un projet Vue. Maintenant que votre système de traduction est opérationnel, il est temps d'examiner de plus près comment structurer, gérer et faire évoluer vos fichiers de traduction de manière efficace.

    Cette partie couvrira les bonnes pratiques que nous utilisons chez Wanadev pour créer des clés de traduction maintenables, éviter les pièges courants et garantir que vos fichiers de traduction restent propres et évolutifs au fur et à mesure que votre projet grandit.

  • Couverture de l'article Créez votre assistant personnel grâce à Gmail et ChatGPT 4
    Créez votre assistant personnel grâce à Gmail et ChatGPT 4

    Il y a 2 ans

    Les LLMs, ou Large Language Models, comme ChatGPT, Llama2, Claude ou encore Mistral nous donne un avant-goût du futur des assistants virtuels tels que nous les connaissons avec Google, Siri ou Alexa. Pourtant, il manque une sacrée touche personnelle avec ces assistants nouvelle génération. Même si OpenAI a mis en place un système permettant d’à peu près personnaliser son expérience avec ChatGPT, nous sommes loin d’avoir des IA qui nous connaissent réellement. La raison est assez simple : ceux-ci n’ont pas accès à vos données. Et si on aidait ces LLMs si puissant en leur donnant des données pour qu’ils sachent répondre à des requêtes très personnalisées ?