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

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

  • Copias de seguridad de la base de datos interna de Looker
  • Información de conexión de la base de datos y el servicio
  • Información de autenticación del usuario
  • Valores de atributos del usuario
  • Datos del cliente que se almacenan en caché o que están listos 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 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.

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

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, la CMK externa 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 una 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 estás migrando a una 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:

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. Luego, detén Looker.

Si Looker está agrupado, 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 de migración, este fallará y se mostrará el siguiente 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”.

Genera una 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 una CMK Base64 de 32 bytes. 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 generaste con el comando anterior):

    export LKR_MASTER_KEY_ENV=<CMK_value>
    

    Si Looker está agrupado en clústeres, ejecuta el comando anterior en cada nodo 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 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 una CMK, asegúrate de almacenarla en una ubicación segura y permanente antes de continuar. Perder la 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 un nuevo rol de IAM que sea único para tu CMK y lo adjuntes a tu instancia de Looker.

A continuación, se muestra un ejemplo de un rol de IAM 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/*"
        }
    ]
}

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 forma 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 cadena Looker_Encryption_Context.

export LKR_AWS_CMK_EC=<My_Encryption_Context>

Si no usas AWS KMS y almacenas tu CMK en un archivo, configura la variable de entorno LKR_MASTER_KEY_FILE como la ruta de acceso al 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 la CMK:

export LKR_MASTER_KEY_ENV=<CMK_value>

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

Encripta la base de datos interna

Si quieres migrar una instancia existente de Looker a 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 de acceso 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 encontró la tarea “migrate_encryption”: Actualiza tu instancia de Looker a Looker 6.4.

  • Looker no se puede iniciar porque falta un almacén de claves de copia de seguridad: Looker no puede encontrar la CMK. Verifica que la ruta 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, pero es X: La CMK debe tener exactamente 32 bytes de longitud.

  • Looker no se puede iniciar porque el permiso para el archivo de claves de copia de seguridad debe ser 0400, pero es XXX: El archivo CMK debe ser de solo lectura y tener un valor chmod de 0400.