Modification des clés de chiffrement de Looker

Looker utilise le chiffrement GCM (Galois/Counter Mode) AES-256 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 multiversion pour garantir la validation. Ce mode nécessite l'utilisation d'une clé principale client (CMK) externe. Elle permet de dériver, chiffrer et déchiffrer la clé de chiffrement de clé (KEK), qui est ensuite utilisée pour générer, chiffrer et déchiffrer des 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 GCM AES-256. Les nouvelles installations hébergées par le client doivent configurer le chiffrement GCM AES-256. Pour savoir comment migrer ou configurer votre installation hébergée par le client pour le chiffrement GCM AES-256, consultez la page Utiliser le chiffrement GCM AES-256.

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

Cette opération est effectuée 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.

Cette opération invalide l'intégralité du cache disque de Looker, y compris le cache des résultats de requête. Par conséquent, une fois que vous avez terminé une nouvelle clé et démarré l'instance, la charge des bases de données client peut être plus élevée que d'habitude.

Pour attribuer une nouvelle clé au chiffrement GCM AES-256, procédez comme suit:

  1. Arrêter Looker et créer une sauvegarde complète
  2. Définir des 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 d'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, elle ne devrait prendre que quelques minutes.

Si Looker est en cluster, veillez à arrêter tous les nœuds avant de continuer:

cd looker
./looker stop

Si des nœuds sont toujours en cours d'exécution lorsque vous émettez la commande rekey, la commande échouera avec le message"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

Lors de la migration initiale de votre instance Looker ou de sa migration vers le chiffrement GCM AES-256, une ou plusieurs variables d'environnement ont été créées pour indiquer à Looker où trouver votre CMK. Ces variables diffèrent selon que vous utilisez AWS KMS.

L'opération de reclé utilise des variables d'environnement supplémentaires, selon que vous utilisez actuellement AWS KMS et si vous allez utiliser AWS KMS après l'opération de reclé. 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 reclé.

Définir des variables _SOURCE

Effectuez 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éé l'une des variables d'environnement suivantes, ou les deux:

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

Recréez les variables d'environnement ci-dessus:

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 pour l'instant

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 de votre instance:

  • LKR_MASTER_KEY_ENV: si vous stockez votre CMK dans une variable d'environnement, celle-ci est stockée.
  • LKR_MASTER_KEY_FILE: si vous stockez votre CMK dans un fichier, le chemin et le nom du fichier contenant votre 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

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

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 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

Définir de nouvelles variables d'environnement

Définissez une ou plusieurs variables d'environnement correspondant à 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 n'aurez pas besoin de variables d'environnement de votre configuration précédente. 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