Migración a encriptación AES-256 de GCM

robots: noindex

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 la base de datos y la conexión de servicio
  • Información de autenticación del usuario
  • Valores del atributo del 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 externa (CMK) del cliente. La CMK se utiliza para derivar, encriptar y desencriptar la clave de encriptación de claves (KEK), que, a su vez, se utiliza 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. La encriptación de Looker no afecta de ninguna manera las bases de datos del cliente. Además, solo se encriptan los datos estáticos (datos almacenados en el disco) 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 se debe mantener de forma segura.

Las instalaciones existentes alojadas por el cliente que quieren usar 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 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 de encriptación. Si estás instalando una nueva instancia 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 tardar unos minutos. Luego, detén Looker.

Si Looker se agrupa en clústeres, asegúrate de detener todos los nodos antes de continuar:

cd looker
./looker stop

Si se está ejecutando algún nodo cuando ejecutes 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 se cierren”.

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 a fin de generar la CMK:

    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 el 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 (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 clave como de solo lectura del usuario actual:

chmod 0400 <path_to_key_file>

Después de generar una CMK, asegúrate de guardarla 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 la instancia.

Crea un rol 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 con tu instancia de Looker.

A continuación, se muestra un ejemplo de un rol 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 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 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, establece la variable de entorno LKR_MASTER_KEY_ENV en el valor de la 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, inicia 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 la 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 buscar la GCM en el registro de Looker para verificar la encriptación nueva:

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 puede iniciarse porque: falta el 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 tener 32 bytes, pero es X: la CMK debe tener exactamente 32 bytes de longitud.

  • Looker 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.