Looker usa el cifrado AES-256 Galois/Counter Mode (GCM) para cifrar los datos sensibles que se almacenan internamente, incluidos los siguientes:
- Copias de seguridad de la base de datos interna de Looker
- Información de conexión de bases de datos y servicios
- Información de autenticación de usuarios
- Valores de atributos de usuario
- Datos de clientes que se almacenan en caché o se preparan para su entrega
Para ver una lista detallada de los datos que cifra Looker, abre una solicitud de asistencia.
Los datos se cifran con una clave de datos única y contienen un envoltorio de cifrado firmado y versionado para garantizar la verificación. Este modo requiere el uso de una clave maestra del cliente (CMK) externa. La CMK se usa para derivar, encriptar y desencriptar la clave de encriptado de claves (KEK), que a su vez se usa para derivar, encriptar y desencriptar claves de datos.
El cifrado solo se usa en la base de datos y la caché internas de Looker. Las bases de datos de los clientes no se ven afectadas por el cifrado de Looker de ninguna manera. Además, solo se cifran de esta forma los datos estáticos (datos almacenados en el disco).
Las instalaciones alojadas por el cliente pueden usar sus propias cuentas de AWS KMS o sus propios sistemas de gestión de claves personalizados. Todas las claves de datos y la KEK se cifran y se usan internamente en la instalación de Looker alojada por el cliente. Si no se usa AWS KMS, la CMK externa debe mantenerse protegida.
Las instalaciones alojadas por el cliente que quieran usar el cifrado de GCM deben migrar del cifrado antiguo al nuevo cifrado de GCM. Las nuevas instalaciones alojadas por el cliente requieren una configuración adicional para el cifrado de GCM.
Siga los procedimientos que se indican en las secciones siguientes en orden.
Detener Looker y crear una copia de seguridad completa
Si vas a migrar a cifrado de GCM desde una instancia de Looker, crea una copia de seguridad completa por si surge algún problema con la migración del cifrado. Si vas a instalar una instancia de Looker nueva, sáltate esta sección.
Si usas la base de datos interna de Looker:
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 utilizas una base de datos MySQL externa para almacenar los datos de la aplicación Looker, crea una copia de seguridad de la base de datos por separado. Si la base de datos es una instancia de MySQL, haz una instantánea. La base de datos es relativamente pequeña, por lo que solo debería tardar unos minutos. Después, detén Looker.
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 ejecutándose cuando emitas el comando de migración más adelante, el comando fallará y se mostrará el mensaje "There are other live nodes connected to this backend Looker database. Si Looker se ha apagado en el último minuto, inténtalo de nuevo en breve. De lo contrario, comprueba que todos los nodos del clúster estén apagados."
Generar una CMK
Si usas AWS KMS, crea una CMK con AWS Management Console o la API.
Si no usas AWS KMS, genera una CMK de 32 bytes en Base64. Puedes almacenar la CMK en una variable de entorno o en un archivo.
Para generar la CMK y almacenarla en una variable de entorno, puedes usar el siguiente comando:
openssl rand -base64 32
Después de generar la CMK, cópiala y usa el siguiente comando para almacenarla en la variable de entorno
LKR_MASTER_KEY_ENV
(donde<CMK_value>
es la CMK que has generado con el comando anterior):export LKR_MASTER_KEY_ENV=<CMK_value>
Si Looker está agrupado en clústeres, ejecute el comando anterior en todos los nodos del clúster.
Para generar y almacenar la CMK en un archivo, puedes usar el siguiente comando (donde
<path_to_CMK_file>
es la ruta y el nombre del archivo en el que se almacenará la CMK):openssl rand -base64 32 > <path_to_key_file>
Después de generar el archivo de CMK, define los permisos del archivo de clave como de solo lectura para el usuario actual:
chmod 0400 <path_to_key_file>
Una vez que hayas generado una CMK, asegúrate de almacenarla en una ubicación segura y permanente antes de continuar. Si pierde la CMK después de cifrar la base de datos interna, puede perder su instancia.
Crear un rol de gestión de identidades y accesos de AWS
Si no usas AWS KMS, omite esta sección.
Si usas AWS KMS, Looker te recomienda que crees un rol de IAM único para tu CMK y que lo asocies a tu instancia de Looker.
A continuación, se muestra un ejemplo de rol de gestión de identidades y accesos que contiene los permisos mínimos necesarios para tu CMK:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "kms:GenerateRandom",
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:Generate*",
],
"Resource": "arn:aws:kms:*:*:key/*"
}
]
}
Configurar variables de entorno
Si usas AWS KMS, asigna a la variable de entorno AWS_REGION
tu región de AWS y a la variable de entorno LKR_AWS_CMK
el alias de tu CMK:
export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>
También puedes definir la variable de entorno LKR_AWS_CMK_EC
para establecer un contexto de cifrado de AWS personalizado. Si no defines esta variable de entorno, Looker usará el contexto de cifrado predeterminado, la cadena Looker_Encryption_Context
.
export LKR_AWS_CMK_EC=<My_Encryption_Context>
Si no usas AWS KMS y almacenas tu CMK en un archivo, asigna a la variable de entorno LKR_MASTER_KEY_FILE
la ruta del archivo CMK:
export LKR_MASTER_KEY_FILE=<path_to_key_file>
Si no utiliza AWS KMS y almacena su CMK en una variable de entorno, asigne a la variable de entorno LKR_MASTER_KEY_ENV
el valor de la CMK:
export LKR_MASTER_KEY_ENV=<CMK_value>
Si Looker está agrupado en clústeres, ejecute el comando anterior en todos los nodos del clúster.
Cifrar la base de datos interna
Si vas a migrar una instancia de Looker a un cifrado GCM, migra la base de datos interna de Looker e inicia Looker:
java -jar looker.jar migrate_encryption
./looker start
Si tu instancia de Looker se inicia con las
-d <db.yaml>
o las--internal-db-creds=<db.yaml>
opciones de inicio, que proporcionan una ruta a un archivo YAML con tus credenciales de base de datos, tendrás que incluir la misma opción con el comandojava -jar looker.jar migrate_encryption
.Por ejemplo,
java -jar looker.jar migrate_encryption -d /path/file
.
Si vas a instalar una instancia de Looker nueva, el proceso de cifrado comenzará cuando inicies la nueva instancia.
El proceso de cifrado suele tardar menos de un minuto. Una vez que se haya iniciado Looker, puedes verificar el nuevo cifrado buscando GCM
en el registro de Looker:
grep GCM log/looker.log
2018-10-29 22:42:20.279 +0000 [INFO|007d0|crypt] :: Starting migration from AES-128-CBC Legacy to AES-GCM-256
2018-10-29 22:42:20.468 +0000 [INFO|007d0|db:looker] :: (0.000152s) INSERT INTO "SETTING" ("KEY", "VALUE") VALUES
Solución de problemas
En esta sección se enumeran algunos errores habituales y sus soluciones:
No se ha encontrado la tarea "migrate_encryption": actualiza tu instancia de Looker a Looker 6.4.
Looker no se puede iniciar porque falta el almacén de claves de respaldo: Looker no encuentra la CMK. Comprueba que la ruta de la CMK de la variable de entorno
LKR_MASTER_KEY_FILE
sea correcta.Looker no se puede iniciar porque el tamaño de la clave maestra no es válido. Debe ser de 32 bytes, pero es de X. La CMK debe tener una longitud de 32 bytes.
Looker no se puede iniciar porque el permiso del archivo de claves de respaldo
debe ser 0400, pero es XXX : el archivo de CMK debe ser de solo lectura con un valorchmod
de0400
.