Modifier les clés de chiffrement Looker

Looker utilise le chiffrement AES-256 Galois/Counter Mode (GCM) pour chiffrer les données en interne. Chaque élément de données est chiffré à l'aide d'une clé de données unique et contient une enveloppe de chiffrement signée et versionnée pour garantir la vérification. Ce mode nécessite l'utilisation d'une clé maître client (CMK) externe. La CMK permet de dériver, de chiffrer et de déchiffrer la clé de chiffrement de clé (KEK), qui permet à son tour de dériver, de chiffrer et de déchiffrer les clés de données.

Les installations hébergées par le client qui utilisent l'ancien chiffrement doivent migrer leurs bases de données internes vers le chiffrement AES-256 GCM. Les installations hébergées par des nouveaux clients doivent être configurées pour le chiffrement GCM AES-256. Consultez la page de documentation Utiliser le chiffrement AES-256 GCM pour savoir comment migrer ou configurer votre installation hébergée par un client pour le chiffrement AES-256 GCM.

Si vous souhaitez modifier votre CMK ou passer d'une configuration basée sur une clé locale à une configuration AWS KMS (ou inversement), vous pouvez créer une nouvelle CMK et redéfinir votre chiffrement AES-256 GCM.

Le renouvellement des clés s'effectue hors connexion, ce qui signifie que l'instance Looker doit être arrêtée. Pour les instances Looker en cluster, tous les nœuds du cluster doivent être arrêtés.

La modification des clés invalide l'intégralité du cache sur disque de Looker, y compris le cache des résultats de la requête. Par conséquent, une fois la regénération de clé terminée et le démarrage de l'instance terminé, les bases de données clientes peuvent subir une charge plus importante que d'habitude.

Pour modifier la clé de chiffrement AES-256 GCM, procédez comme suit :

  1. Arrêter Looker et créer une sauvegarde complète
  2. Définir les variables d'environnement _SOURCE et _DESTINATION
  3. Exécuter la commande rekey
  4. Définir de nouvelles variables d'environnement
  5. Démarrer Looker

Arrêter Looker et créer une sauvegarde complète

Exécutez les commandes suivantes :

cd looker
./looker stop
tar -zcvf /tmp/looker-pre-encrypt.tar.gz  /home/lookerops/looker --exclude=.cache --exclude=log --exclude=.tmp --exclude=.snapshots --exclude=looker.jar --exclude=authorized_keys --exclude=dr-log --exclude=core

Si vous exécutez une base de données MySQL externe pour stocker les données de l'application Looker, sauvegardez la base de données séparément. Si la base de données est une instance MySQL, prenez un instantané. La base de données étant relativement petite, l'opération ne devrait prendre que quelques minutes.

Si Looker est configuré en cluster, veillez à arrêter chaque nœud avant de continuer :

cd looker
./looker stop

Si des nœuds sont toujours en cours d'exécution lorsque vous exécutez la commande rekey ultérieurement, la commande échoue et le message suivant s'affiche : "D'autres nœuds actifs sont connectés à cette base de données Looker backend. Si Looker a été arrêté au cours de la dernière minute, réessayez rapidement. Sinon, vérifiez que tous les nœuds du cluster sont arrêtés."

Définir les variables d'environnement _SOURCE et _DESTINATION

Lorsque votre instance Looker a été initialement migrée vers le chiffrement AES-256 GCM ou configurée pour ce chiffrement, une ou plusieurs variables d'environnement ont été créées pour indiquer où Looker peut trouver votre CMK. Ces variables diffèrent selon que vous utilisez AWS KMS.

L'opération de regénération de clé utilise des variables d'environnement supplémentaires, selon que vous utilisez actuellement ou non AWS KMS, et si vous l'utiliserez après l'opération. Les variables d'environnement avec le suffixe _SOURCE indiquent où Looker peut actuellement trouver votre CMK, et les variables d'environnement avec le suffixe _DESTINATION indiquent où Looker peut trouver votre CMK après l'opération de recréation de clé.

Définir des variables _SOURCE

Suivez l'une des procédures suivantes, selon que votre configuration actuelle utilise AWS KMS.

Si vous utilisez actuellement AWS KMS

Si vous avez initialement configuré votre chiffrement à l'aide d'AWS KMS, vous avez créé une ou les deux variables d'environnement suivantes :

  • LKR_AWS_CMK : stocke l'CMK_alias AWS.
  • LKR_AWS_CMK_EC: variable facultative qui définit le contexte de chiffrement utilisé avec les keystores AWS KMS.

Recréez les variables d'environnement:

export LKR_AWS_CMK=alias/<CMK_alias>
export LKR_AWS_CMK_EC=<encryption_context>

Créez ensuite les variables _SOURCE. Définissez les nouvelles variables suivantes avec le suffixe _SOURCE :

export LKR_AWS_CMK_SOURCE=alias/<CMK_alias>
export LKR_AWS_CMK_EC_SOURCE=<encryption_context>

Si vous n'utilisez pas AWS KMS

Si vous avez initialement configuré votre chiffrement à l'aide d'un KMS autre qu'AWS, vous avez créé l'une des variables d'environnement suivantes, selon que vous stockez votre CMK dans une variable d'environnement ou dans un fichier sur votre instance :

  • LKR_MASTER_KEY_ENV : si vous stockez votre CMK dans une variable d'environnement, elle est stockée.
  • LKR_MASTER_KEY_FILE: si vous stockez la clé CMK dans un fichier, le chemin d'accès et le nom du fichier contenant la clé CMK sont stockés.

Recréez la variable d'environnement utilisée pour votre configuration :

export LKR_MASTER_KEY_FILE=<path_to_key_file>

ou

export LKR_MASTER_KEY_ENV=<CMK_value>

Créez ensuite la variable _SOURCE.

Si vous stockez votre CMK dans un fichier, créez la variable suivante :

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

Si vous stockez votre CMK dans une variable d'environnement, créez la variable suivante :

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Définir des variables _DESTINATION

Suivez l'une des procédures suivantes, selon que vous utiliserez AWS KMS après l'opération de remplacement de clé.

Votre nouvelle configuration utilisera AWS KMS

Si votre nouvelle configuration utilise AWS KMS, créez les variables d'environnement suivantes pour indiquer le nouvel emplacement CMK:

export LKR_AWS_CMK_DESTINATION=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC_DESTINATION=<new_encryption_context>

Votre nouvelle configuration n'utilisera pas AWS KMS.

Si votre nouvelle configuration n'utilise pas AWS KMS, vous avez la possibilité d'utiliser les variables LKR_MASTER_KEY_FILE_DESTINATION ou LKR_MASTER_KEY_ENV_DESTINATION pour spécifier la destination CMK.

Si vous souhaitez stocker votre clé CMK dans un fichier, exécutez la commande suivante:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

Si vous souhaitez stocker votre CMK à l'aide d'une variable d'environnement, exécutez la commande suivante :

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Exécuter la commande rekey

Exécutez la commande suivante :

./looker rekey

Si votre instance Looker démarre avec les options de démarrage -d <db.yaml> ou --internal-db-creds=<db.yaml>, qui fournissent un chemin d'accès à un fichier YAML avec vos identifiants de base de données, vous devez inclure la même option avec la commande rekey.

Par exemple, java -jar looker.jar rekey -d /path/file/db.yaml.

Définir de nouvelles variables d'environnement

Définissez une ou plusieurs des variables d'environnement suivantes en fonction de votre nouvelle configuration.

Si votre nouvelle configuration utilise AWS KMS :

export LKR_AWS_CMK=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC=<new_encryption_context>

Si votre nouvelle configuration n'utilise pas AWS KMS et que vous stockez votre CMK dans une variable d'environnement:

export LKR_MASTER_KEY_ENV=<CMK_value>

Si votre nouvelle configuration n'utilise pas AWS KMS et que vous stockez votre CMK dans un fichier:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

Si vous êtes passé d'une clé stockée localement à AWS KMS ou d'AWS KMS à une clé stockée localement, vous disposez de variables d'environnement de votre configuration précédente qui ne sont pas nécessaires. Supprimez les anciennes variables d'environnement.

Si vous êtes passé d'une clé stockée localement à AWS KMS :

unset LKR_MASTER_KEY_FILE

Si vous êtes passé d'AWS KMS à une clé stockée localement:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Démarrer Looker

Exécutez la commande suivante :

./looker start