Service du Séquestre

Le service de séquestre permet de récupérer toutes les données d’une organisation. Il ne peut être activé que lors du démarrage de l’organisation et non après.

Le cas d’utilisation typique de ce service est la réponse à une enquête menée par un service d’inspection nécessitant l’accès aux données stockées sur les espaces de travail de la (des) personne(s) impliquée(s) dans l’enquête.

Le service est géré par une clé d’autorité et une clé de service. Notez que les parties secrètes des clés d’autorité et de service ne sont utilisées qu’en mode hors ligne (c’est-à-dire qu’aucune communication directe avec le serveur Parsec n’est nécessaire), de sorte qu’elles peuvent être stockées dans un endroit sûr.

L’environnement dans lequel le service de séquestre est utilisé peut être contrôlé autant que possible.

Considérations de sécurité

Le service de séquestre utilise des clés AES-256 qui sont les éléments les plus sensibles car elles sont utilisées pour décrypter les données exportées.

Ces clés doivent donc être sauvegardées et stockées sur un support externe physiquement protégé (coffre-fort) et toutes les opérations de décryptage doivent être effectuées sur un poste de travail hors ligne.

Prérequis

Pour utiliser le service de séquestre, vous devez :

  • OpenSSL, pour la génération de clés

  • Parsec CLI (parsec-cli)

  • CLI du serveur Parsec (from pypi pip install parsec-cloud)

Clé d’autorité

Vous pouvez créer la clé d’autorité à l’aide des commandes suivantes :

openssl genrsa -aes256 -out authority_key.private 4096
openssl rsa -in authority_key.private -out authority_key.pub -pubout -outform PEM

Initialisation d’une organisation avec l’autorité de séquestre

Important

Cette étape ne peut être effectuée que pendant l’initialisation de l’organisation et ne peut pas être configurée après cette étape.

Une fois que vous avez reçu un lien d’initialisation de la part de l’administrateur du serveur Parsec, généralement obtenu avec la commande suivante :

./parsec-cli organization create organization-sequester-test

Note

Cette commande nécessite que PARSEC_SERVER_ADDR et PARSEC_ADMINISTRATION_TOKEN soient définis dans les variables d’environnement.

Si vous préférez, vous pouvez utiliser les options --addr et --token pour transmettre ces valeurs (mais nous ne recommandons pas cela pour --token, car il s’agit d’une valeur sensible qui sera enregistrée dans l’historique du terminal).

Vous devez ensuite initialiser l’organisation en spécifiant le fichier authority_key.pub.

Vous pouvez le faire soit via parsec-cli :

./parsec-cli organization bootstrap \
    --addr="$BOOTSTRAP_LINK" \
    --device-label "my device" \
    --label "John Doe" \
    --email john.doe@example.com \
    --sequester-key ./authority_key.pub

Ou en utilisant l’application graphique :

  1. Copiez le lien d’initialisation fourni

  2. De manière similaire à démarrer le processus d’invitation, collez le lien fourni dans le champ de texte

  3. L’application affichera une fenêtre modale avec un résumé de l’organisation à initialiser

  4. Dans cette même fenêtre, développez Paramètres avancés, activez la fonctionnalité Séquestre de données et fournissez le fichier authority_key.pub :

    ../../_images/create-org-with-sequester-main-key.fr.png
  5. Poursuivez le processus jusqu’à ce que l’organisation soit initialisée

Séquestrer la clé de service et le certificat

Vous pouvez créer la clé de service et le certificat à l’aide des commandes suivantes :

  1. Activer le service de séquestre

    openssl genrsa -aes256 -out sequester_key.private 4096
    openssl rsa -in sequester_key.private -out sequester_key.pub -pubout -outform PEM
    
  2. Séquestrer la clé de service et le certificat

    Prudence

    Cette étape doit être effectuée après l’initialisation de l’organisation, sinon le certificat du service ne sera pas accepté par le serveur.

    Danger

    Vous devez vous assurer que l’horloge de l’ordinateur est synchronisée avec celle du serveur (vous pouvez utiliser date --utc pour comparer les horloges)

    Vous pouvez créer le certificat de séquestre à l’aide de la commande suivante :

    Ajouté dans la version 3.10.0: parsec-cli peut generer le certificat du sequestre

    parsec-cli sequester generate-service-certificate \
       --service-label="Sequester service" \
       --service-public-key=./sequester_key.pub \
       --authority-private-key=./authority_key.private
    
    python -m parsec sequester generate_service_certificate \
      --service-label="Sequester service" \
      --service-public-key=./sequester_key.pub \
      --authority-private-key=./authority_key.private
    

    Astuce

    Cette étape, lors de l’utilisation de l’interface en ligne de commande du serveur Parsec, n’a pas besoin d’être exécutée sur la même machine que le service.

Activer le service de séquestre

  1. Ensuite, fournissez à l’administrateur du serveur Parsec le certificat de service récemment généré.

  2. L’administrateur doit maintenant créer le service sur le serveur :

    python -m parsec sequester create_service \
      --organization=organization-sequester-test \
      --service-certificate=./sequester_service_certificate-ef9adae7ee9f44cc9f974fdcaaff8839-2025-02-23T21:19:35.484948Z.pem
    

    Note

    Vous devez avoir accès aux identifiants de la base de données pour cette opération.

Important

Le service de séquestre ne peut être activé que sur une organisation initialisée.

Exportation de données avec le service séquestre

Realm vs Espace de travail : Dans le vocabulaire Parsec, Espace de travail et Realm sont les deux faces d’une même pièce. En résumé, le realm est un concept côté serveur qui fait référence à la grosse pile de données cryptées, tandis que l’espace de travail est le concept côté client qui fait référence à ces données une fois décryptées.

Par conséquent, l”« exportation de realm » est l’opération qui consiste à exporter du serveur toutes les données cryptées qui, lorsqu’elles sont utilisées avec les bonnes clés de décryptage, nous permettent d’avoir un accès en lecture complet à un espace de travail à tout moment jusqu’à la date d’exportation.

Vue d’ensemble :

  • Une organisation existe avec un espace de travail

  • Un realm est exporté à l’aide de l’interface CLI du serveur. Cela génère un grand fichier .sqlite contenant toutes les données cryptées appartenant à ce realm.

  • Le fichier d’exportation du realm est transféré vers une machine contenant les clés de décryptage :

    • Clé de service du séquestre dans le cas d’une organisation séquestrée.

    • Clé de l’appareil, sinon (c’est-à-dire décrypter l’exportation du realm à partir d’une machine normalement utilisée pour exécuter le client Parsec).

    # On Parsec server, identity real (workspace) to export
    python -m parsec human_accesses \
      --organization=organization-sequester-test [--db=$POSTGRESQL_URL]
    
    # This creates a file "parsec-export-$ORG-realm-$REALM-$TIMESTAMP.sqlite".
    python -m parsec export_realm
      --organization=organization-sequester-test \
      --realm=<id-realm> [--db=$POSTGRESQL_URL --blockstore=$S3_URL]
    

Utilisation des données exportées

Utiliser parsec-cli pour monter un disque virtuel avec la donnée déchiffrée :

parsec-cli sequester mount \
  --decryptor sequester:7bd707ce86df42288634f2a78db7f10e:./sequester_key.private \
  parsec-export-organization-sequester-test-realm-f749b8035f6e4bd88e96ae557828a583-20250225T135312Z.sqlite

Modifié dans la version 3.10.0: La commande mount-realm-export a été renommée vers sequester mount