Migración a encriptación AES-256 GCM

Looker usa la encriptación AES-256 Galois/Counter Mode (GCM) para encriptar los datos sensibles que se almacenan de forma interna, lo que incluye lo siguiente:

  • Copias de seguridad de la base de datos interna de Looker
  • Información de conexión de la base de datos y los servicios
  • Información de autenticación del usuario
  • Valores de atributos de usuario
  • Datos del cliente que se almacenan en caché o se preparan para la entrega

Para obtener una lista detallada de los datos que encripta Looker, abre una solicitud de asistencia.

Los datos se encriptan con una clave de datos única y contienen un sobre de encriptación firmado y con control de versiones para garantizar la verificación. Este modo requiere el uso de una clave maestra de cliente (CMK) externa. 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.

La encriptación se usa solo para la base de datos y la caché internas de Looker. Las bases de datos de clientes no se ven afectadas por la encriptación de Looker de ninguna manera. Además, solo los datos estáticos (datos almacenados en el disco) se encriptan de esta manera.

Las instalaciones alojadas por el cliente pueden usar sus propias cuentas de KMS de AWS o sus propios sistemas de administración de claves personalizadas. Todas las claves de datos y la KEK se encriptan y se usan de forma interna en la instalación de Looker alojada por el cliente. Si no usas AWS KMS, el CMK externo debe conservarse de forma segura.

Las instalaciones existentes alojadas por el cliente que desean utilizar la encriptación de GCM deben migrar de la encriptación heredada a la nueva encriptación de GCM. Las nuevas instalaciones alojadas por el cliente requieren una configuración adicional para la encriptación de GCM.

Sigue los procedimientos de las siguientes secciones en orden.

Deteniendo Looker y creando una copia de seguridad completa

Si migras a la encriptación de GCM desde una instancia existente de Looker, asegúrate de crear una copia de seguridad completa en caso de que haya un problema con la migración. Si instalas una instancia nueva de Looker, omite esta sección.

Si usas la base de datos interna de Looker, haz lo siguiente:

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 los 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. Luego, 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 aún se está ejecutando cuando emitas el comando de migración más tarde, el comando fallará y mostrará el siguiente mensaje: “Hay otros nodos activos conectados a esta base de datos de backend de Looker. Si Looker se apagó en el último minuto, vuelve a intentarlo en breve. De lo contrario, verifica que todos los nodos del clúster estén apagados”.

Cómo generar un CMK

Si usas AWS KMS, crea un CMK con la consola de administración de AWS o la API.

Si no usas AWS KMS, genera una Base64 de 32 bytes CMK. Puedes almacenar el CMK en una variable de entorno o en un archivo.

  • Para generar el CMK y almacenarlo en una variable de entorno, puedes usar el siguiente comando:

    openssl rand -base64 32
    

    Después de generar el CMK, cópialo y usa el siguiente comando para almacenarlo en la variable de entorno LKR_MASTER_KEY_ENV (donde <CMK_value> es el CMK que generaste con el comando anterior):

    export LKR_MASTER_KEY_ENV=<CMK_value>
    

    Si Looker está agrupado, ejecuta el comando anterior en cada nodo del clúster.

  • Para generar y almacenar el CMK en un archivo, puedes usar el siguiente comando (donde <path_to_CMK_file> es la ruta de acceso y el nombre de archivo para almacenar el CMK):

    openssl rand -base64 32 > <path_to_key_file>
    

Después de generar el archivo CMK, configura los permisos del archivo de claves como el usuario actual de solo lectura:

chmod 0400 <path_to_key_file>

Después de generar un CMK, asegúrate de guardarlo en una ubicación segura y permanente antes de continuar. La pérdida del CMK después de encriptar la base de datos interna puede provocar la pérdida de su instancia.

Crea un rol de IAM de AWS

Si no usas AWS KMS, omite esta sección.

Si usas AWS KMS, Looker recomienda crear un nuevo rol de IAM que sea único para tu CMK y adjuntarlo a tu instancia de Looker.

A continuación, se incluye un ejemplo de un rol de IAM que contiene los permisos mínimos requeridos 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/*"
        }
    ]
}

Configura variables de entorno

Si usas AWS KMS, configura la variable de entorno AWS_REGION como tu región de AWS y la variable de entorno LKR_AWS_CMK como el alias de tu CMK:

export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>

De manera opcional, también puedes establecer la variable de entorno LKR_AWS_CMK_EC para establecer un contexto de encriptación de AWS personalizado. Si no configuras esta variable de entorno, Looker usará el contexto de encriptación 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, establece la variable de entorno LKR_MASTER_KEY_FILE como la ruta de acceso del archivo CMK:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Si no usas AWS KMS y almacenas tu CMK en una variable de entorno, establece la variable de entorno LKR_MASTER_KEY_ENV en el valor de CMK:

export LKR_MASTER_KEY_ENV=<CMK_value>

Si Looker está agrupado, ejecuta el comando anterior en cada nodo del clúster.

Encripta la base de datos interna

Si estás migrando una instancia existente de Looker a la encriptación de GCM, migra la base de datos interna de Looker y luego inicia Looker:

java -jar looker.jar migrate_encryption
./looker  start

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

Por ejemplo, java -jar looker.jar migrate_encryption -d /path/file.

Si instalas una instancia nueva de Looker, el proceso de encriptación comenzará cuando la inicies.

El proceso de encriptación suele tardar menos de un minuto. Una vez que se inicie Looker, puedes verificar la nueva encriptación 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

Soluciona problemas

En esta sección, se enumeran algunos errores comunes y sus soluciones:

  • No se pudo encontrar la tarea “Migrate_encryption”: Actualiza tu instancia de Looker a Looker 6.4.

  • Looker no puede iniciarse porque falta el almacén de claves de copia de seguridad: Looker no puede encontrar el CMK. Comprueba que la ruta de acceso de CMK en la variable de entorno LKR_MASTER_KEY_FILE sea correcta.

  • Looker no puede iniciarse porque el tamaño de la clave maestra no es válido; debe ser de 32 bytes; sin embargo, es X: El CMK debe tener exactamente 32 bytes de longitud.

  • No se puede iniciar Looker porque el permiso para crear una copia de seguridad del archivo de claves debe ser 0400, pero es XXX: El archivo CMK debe ser de solo lectura con un valor chmod de 0400.