Cambia las claves de encriptación de Looker

Looker usa la encriptación AES-256 Galois/Counter Mode (GCM) para encriptar datos de forma interna. Cada elemento de datos se encripta con una clave de datos única y contiene un sobre de encriptación firmado y con control de versiones para garantizar la verificación. Este modo requiere el uso de una clave principal de cliente (CMK) externa. La CMK se usa para derivar, encriptar y desencriptar la clave de encriptación de claves (KEK), que, a su vez, se usa para derivar, encriptar y desencriptar claves de datos.

Las instalaciones alojadas por el cliente que usen encriptación heredada deben migrar sus bases de datos internas a la encriptación AES-256 GCM. Las instalaciones alojadas por clientes nuevos deben configurarlas para la encriptación AES-256 GCM. Consulta la página de documentación Cómo usar la encriptación AES-256 GCM para obtener instrucciones sobre cómo migrar o configurar tu instalación alojada por el cliente para la encriptación AES-256 GCM.

Si deseas cambiar tu CMK, o si deseas pasar de una configuración local basada en claves a una configuración de AWS KMS (o viceversa), puedes hacerlo creando una nueva CMK y cambiando la clave de tu encriptación AES-256 GCM.

El cambio de clave se realiza sin conexión, lo que significa que la instancia de Looker debe cerrarse. Para las instancias de Looker en clústeres, todos los nodos del clúster deben apagarse.

El cambio de clave invalida toda la caché en disco de Looker, incluida la caché de resultados de la consulta. Como resultado, después de completar un cambio de clave y de iniciar la instancia, es posible que las bases de datos del cliente experimenten una carga mayor que la habitual.

Para cambiar la clave de la encriptación AES-256 GCM, realiza los siguientes procedimientos:

  1. Detén Looker y crea una copia de seguridad completa
  2. Configura las variables de entorno _SOURCE y _DESTINATION
  3. Ejecuta el comando rekey
  4. Configura variables de entorno nuevas
  5. Iniciar Looker

Detén Looker y crea una copia de seguridad completa

Ejecuta los siguientes comandos:

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 ejecutas una base de datos externa de MySQL para almacenar datos de la aplicación de Looker, crea una copia de seguridad de la base de datos por separado. Si la base de datos es una instancia de MySQL, toma una instantánea. La base de datos es relativamente pequeña, por lo que solo debería tardar unos minutos.

Si Looker está agrupado en clústeres, asegúrate de detener todos los nodos antes de continuar:

cd looker
./looker stop

Si algún nodo sigue en ejecución cuando más adelante emitas el comando rekey, este fallará y mostrará el mensaje “Hay otros nodos activos conectados a esta base de datos de backend de Looker. Si se cerró Looker en el último minuto, vuelve a intentarlo en breve. De lo contrario, verifica que todos los nodos del clúster estén apagados”.

Configura las variables de entorno _SOURCE y _DESTINATION

Cuando tu instancia de Looker se migró a la encriptación AES-256 GCM o se configuró para usarla, se crearon una o más variables de entorno que indican dónde Looker puede encontrar tu CMK. Estas variables difieren si usas AWS KMS.

La operación de cambio de clave usa variables de entorno adicionales en función de si actualmente usas AWS KMS y de si usarás AWS KMS después de la operación de cambio de clave. Las variables de entorno con el sufijo _SOURCE indican dónde Looker puede encontrar tu CMK actualmente, y las variables de entorno con el sufijo _DESTINATION indican dónde Looker puede encontrar tu CMK después de la operación de cambio de clave.

Configura variables _SOURCE

Realiza uno de los siguientes procedimientos, según si tu configuración actual usa AWS KMS.

Si actualmente usas AWS KMS

Si, en un principio, configuraste la encriptación con AWS KMS, creaste una de las siguientes variables de entorno, o ambas:

  • LKR_AWS_CMK: Almacena el CMK_alias de AWS.
  • LKR_AWS_CMK_EC: Es una variable opcional que define el contexto de encriptación que se usa con los almacenes de claves de KMS de AWS.

Vuelve a crear las variables de entorno:

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

Luego, crea las variables _SOURCE. Configura las siguientes variables nuevas con el sufijo _SOURCE:

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

Si actualmente no usas AWS KMS

Si, en un principio, configuraste tu encriptación con un KMS distinto de AWS, creaste una de las siguientes variables de entorno, según si almacenaste la CMK en una variable de entorno o en un archivo en tu instancia:

  • LKR_MASTER_KEY_ENV: Si almacenas la CMK en una variable de entorno, se almacenará en ella.
  • LKR_MASTER_KEY_FILE: Si almacenas tu CMK en un archivo, se almacenan la ruta de acceso y el nombre del archivo que contiene la CMK.

Vuelve a crear la variable de entorno usada para tu configuración:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Como alternativa, puedes hacer lo siguiente:

export LKR_MASTER_KEY_ENV=<CMK_value>

Luego, crea la variable _SOURCE.

Si almacenas tu CMK en un archivo, crea la siguiente variable:

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

Si almacenas tu CMK en una variable de entorno, crea la siguiente variable:

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Configura variables _DESTINATION

Realiza uno de los siguientes procedimientos, según si usarás AWS KMS después de la operación de cambio de clave.

Tu nueva configuración usará AWS KMS

Si tu nueva configuración usará AWS KMS, crea las siguientes variables de entorno para indicar la nueva ubicación de CMK:

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

Tu nueva configuración no usará AWS KMS

Si tu nueva configuración no usará AWS KMS, tienes la opción de usar las variables LKR_MASTER_KEY_FILE_DESTINATION o LKR_MASTER_KEY_ENV_DESTINATION para especificar el destino de CMK.

Si deseas almacenar tu CMK en un archivo, ejecuta el siguiente comando:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

O bien, si deseas almacenar tu CMK con una variable de entorno, ejecuta el siguiente comando:

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Ejecuta el comando rekey

Ejecuta el siguiente comando:

./looker rekey

Si tu instancia de Looker comienza con las opciones de inicio -d <db.yaml> o --internal-db-creds=<db.yaml>, que proporcionan una ruta de acceso a un archivo YAML con las credenciales de tu base de datos, deberás incluir la misma opción con el comando rekey.

Por ejemplo, java -jar looker.jar rekey -d /path/file/db.yaml.

Configura nuevas variables de entorno

Establece una o más de las siguientes variables de entorno según corresponda para tu nueva configuración.

Si tu configuración nueva usa AWS KMS, haz lo siguiente:

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

Si tu configuración nueva no usa AWS KMS y almacenas la CMK en una variable de entorno, haz lo siguiente:

export LKR_MASTER_KEY_ENV=<CMK_value>

Si tu configuración nueva no usa AWS KMS y almacenas la CMK en un archivo, haz lo siguiente:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

Si migraste de una clave almacenada localmente al KMS de AWS o de AWS a una clave almacenada localmente, tendrás variables de entorno de tu configuración anterior que no son necesarias. Borra las variables de entorno anteriores.

Si migraste de una clave almacenada de forma local a AWS KMS, haz lo siguiente:

unset LKR_MASTER_KEY_FILE

Si migraste de AWS KMS a una clave almacenada de forma local:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Iniciar Looker

Ejecuta el siguiente comando:

./looker start