Cómo migrar a la encriptación AES-256 de GCM

Looker usa la encriptación AES-256 Galois/Counter Mode (GCM) para encriptar 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 servicio y base de datos
  • Información de autenticación del usuario
  • Valores del atributo de usuario
  • Datos del cliente almacenados en caché o preparados para la entrega

Para obtener una lista detallada de los datos que Looker encripta, comunícate con tu administrador de cuentas o abre una solicitud de asistencia en el Centro de ayuda de Looker. Para ello, haz clic en Comunícate con nosotros.

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

La encriptación se usa solo para la caché y la base de datos interna de Looker. Las bases de datos de los clientes no se ven afectadas por la encriptación de Looker de ninguna manera. Además, de esta manera, solo se encriptan 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 administración de claves personalizados. 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 se usa AWS KMS, el CMK externo debe conservarse de forma segura.

Las instalaciones existentes alojadas por el cliente que deseen 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 configuración adicional para la encriptación de GCM.

Sigue los procedimientos de las siguientes secciones en orden.

Detén Looker y crea una copia de seguridad completa

Si migras a la encriptación de GCM desde una instancia de Looker existente, asegúrate de crear una copia de seguridad completa en caso de que haya un problema con la migración de encriptació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 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 tomar 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 se siguen ejecutando nodos cuando emita el comando de migración más tarde, el comando fallará y mostrará el mensaje “Hay otros nodos activos conectados a esta base de datos de backend de Looker. Si Looker se cerró en el último minuto, vuelva a intentarlo en breve. De lo contrario, verifique que todos los nodos del clúster estén cerrados.

Cómo generar un CMK

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

Si no usas AWS KMS, genera un CMK base64 de 32 bytes. Puede almacenar la CMK en una variable de entorno o en un archivo.

  • Para generar la CMK y almacenarla en una variable de entorno, puede usar el siguiente comando para generarla:

    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 generaste con el comando anterior):

    export LKR_MASTER_KEY_ENV=<CMK_value>
    

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

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

    openssl rand -base64 32 > <path_to_key_file>
    

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

chmod 0400 <path_to_key_file>

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

Crea una función de IAM de AWS

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

Si usas AWS KMS, Looker recomienda que crees una nueva función de IAM que sea única para tu CMK y la adjuntes con tu instancia de Looker.

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

Configure variables de entorno

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

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

De manera opcional, también puedes configurar 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 string 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 en la ruta 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, configura la variable de entorno LKR_MASTER_KEY_ENV con el valor de CMK:

export LKR_MASTER_KEY_ENV=<CMK_value>

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

Encripta la base de datos interna

Si migras una instancia existente de Looker a la encriptación de 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 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 tus credenciales de 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 Looker se haya iniciado, puedes verificar la nueva encriptación si buscas 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 encontró la tarea &migt;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. Verifica que la ruta de CMK en la variable de entorno LKR_MASTER_KEY_FILE sea correcta.

  • El visor 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): El CMK debe tener exactamente 32 bytes de longitud.

  • El visualizador no se puede iniciar 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.