Alterar as chaves de encriptação do Looker

O Looker usa a encriptação AES-256 Galois/Counter Mode (GCM) para encriptar dados internamente. Cada item de dados é encriptado através de uma chave de dados única e contém um envelope de encriptação assinado e com controlo de versões para garantir a validação. Este modo requer a utilização de uma chave principal do cliente (CMK) externa. A CMK é usada para derivar, encriptar e desencriptar a chave de encriptação de chaves (KEK), que, por sua vez, é usada para derivar, encriptar e desencriptar chaves de dados.

As instalações alojadas pelo cliente que usam a encriptação antiga têm de migrar as respetivas bases de dados internas para a encriptação AES-256 GCM. As novas instalações alojadas pelo cliente têm de configurar as respetivas instalações para a encriptação AES-256 GCM. Consulte a página de documentação Usar a encriptação AES-256 GCM para obter instruções sobre como migrar ou configurar a instalação alojada pelo cliente para a encriptação AES-256 GCM.

Se quiser alterar a CMK ou passar de uma configuração baseada em chaves locais para uma configuração do AWS KMS (ou o inverso), pode fazê-lo criando uma nova CMK e alterando a chave da sua encriptação AES-256 GCM.

A alteração das chaves é feita offline, o que significa que a instância do Looker tem de ser encerrada. Para instâncias do Looker agrupadas, todos os nós do cluster têm de ser encerrados.

A nova introdução de chaves invalida toda a cache no disco do Looker, incluindo a cache de resultados de consultas. Como resultado, depois de concluir uma nova introdução de chaves e iniciar a instância, as bases de dados de clientes podem sofrer uma carga superior à habitual.

Para alterar a chave da encriptação AES-256 GCM, execute os seguintes procedimentos:

  1. Pare o Looker e crie uma cópia de segurança completa
  2. Defina as variáveis de ambiente _SOURCE e _DESTINATION
  3. Execute o comando rekey
  4. Defina novas variáveis de ambiente
  5. Iniciar Looker

Pare o Looker e crie uma cópia de segurança completa

Emita os seguintes comandos:

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

Se estiver a executar uma base de dados MySQL externa para armazenar dados da aplicação Looker, faça uma cópia de segurança da base de dados separadamente. Se a base de dados for uma instância do MySQL, tire um instantâneo. A base de dados é relativamente pequena, pelo que o processo deve demorar apenas alguns minutos.

Se o Looker estiver agrupado, certifique-se de que para todos os nós antes de continuar:

cd looker
./looker stop

Se algum nó ainda estiver em execução quando emitir posteriormente o comando rekey, o comando falha com a mensagem "Existem outros nós ativos ligados a esta base de dados do Looker de back-end. Se o Looker foi encerrado no último minuto, tente novamente em breve. Caso contrário, verifique se todos os nós no cluster estão encerrados."

Defina as variáveis de ambiente _SOURCE e _DESTINATION

Quando a sua instância do Looker foi inicialmente migrada ou configurada para a encriptação AES-256 GCM, foram criadas uma ou mais variáveis de ambiente que indicam onde o Looker pode encontrar a sua CMK. Estas variáveis diferem consoante esteja a usar o AWS KMS.

A operação de alteração da chave usa variáveis de ambiente adicionais, com base no facto de estar a usar atualmente o AWS KMS e se vai usar o AWS KMS após a operação de alteração da chave. As variáveis de ambiente com o sufixo _SOURCE indicam onde o Looker pode encontrar atualmente a sua CMK, e as variáveis de ambiente com o sufixo _DESTINATION indicam onde o Looker pode encontrar a sua CMK após a operação de alteração da chave.

Definir variáveis _SOURCE

Efetue um dos seguintes procedimentos, consoante a sua configuração atual use o AWS KMS.

Se estiver a usar atualmente o AWS KMS

Se configurou inicialmente a encriptação através do AWS KMS, criou uma ou ambas as seguintes variáveis de ambiente:

  • LKR_AWS_CMK: Armazena o AWS CMK_alias.
  • LKR_AWS_CMK_EC: uma variável opcional que define o contexto de encriptação usado com os arquivos de chaves do AWS KMS.

Recrie as variáveis de ambiente:

export LKR_AWS_CMK=alias/<CMK_alias>
export LKR_AWS_CMK_EC=<encryption_context>

Em seguida, crie as variáveis _SOURCE. Defina as seguintes novas variáveis com o sufixo _SOURCE:

export LKR_AWS_CMK_SOURCE=alias/<CMK_alias>
export LKR_AWS_CMK_EC_SOURCE=<encryption_context>

Se não estiver a usar atualmente o AWS KMS

Se configurou inicialmente a encriptação com um KMS que não seja o AWS, criou uma das seguintes variáveis de ambiente, consoante armazene a CMK numa variável de ambiente ou num ficheiro na sua instância:

  • LKR_MASTER_KEY_ENV: se armazenar a CMK numa variável de ambiente, esta armazena a CMK.
  • LKR_MASTER_KEY_FILE: se armazenar a CMK num ficheiro, este armazena o caminho e o nome do ficheiro que contém a CMK.

Recrie a variável de ambiente usada para a sua configuração:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Ou:

export LKR_MASTER_KEY_ENV=<CMK_value>

Em seguida, crie a variável _SOURCE.

Se armazenar a CMK num ficheiro, crie a seguinte variável:

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

Se armazenar a CMK numa variável de ambiente, crie a seguinte variável:

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Definir variáveis _DESTINATION

Realize um dos seguintes procedimentos, consoante se vai usar o AWS KMS após a operação de alteração da chave.

A nova configuração vai usar o AWS KMS

Se a nova configuração usar o AWS KMS, crie as seguintes variáveis de ambiente para indicar a nova localização da CMK:

export LKR_AWS_CMK_DESTINATION=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC_DESTINATION=<new_encryption_context>

A nova configuração não usa o AWS KMS

Se a nova configuração não usar o AWS KMS, tem a opção de usar as variáveis LKR_MASTER_KEY_FILE_DESTINATION ou LKR_MASTER_KEY_ENV_DESTINATION para especificar o destino da CMK.

Se quiser armazenar a CMK num ficheiro, execute o seguinte comando:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

Em alternativa, se quiser armazenar a CMK através de uma variável de ambiente, execute o seguinte comando:

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Execute o comando rekey

Emita o seguinte comando:

./looker rekey

Se a sua instância do Looker começar com a -d <db.yaml> ou as --internal-db-creds=<db.yaml> opções de arranque, que fornecem um caminho para um ficheiro YAML com as suas credenciais da base de dados, tem de incluir a mesma opção com o comando rekey.

Por exemplo, java -jar looker.jar rekey -d /path/file/db.yaml.

Defina novas variáveis de ambiente

Defina uma ou mais das seguintes variáveis de ambiente, conforme adequado para a sua nova configuração.

Se a sua nova configuração usar o AWS KMS:

export LKR_AWS_CMK=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC=<new_encryption_context>

Se a sua nova configuração não usar o AWS KMS e armazenar a CMK numa variável de ambiente:

export LKR_MASTER_KEY_ENV=<CMK_value>

Se a sua nova configuração não usar o AWS KMS e armazenar a CMK num ficheiro:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

Se mudou de uma chave armazenada localmente para o AWS KMS ou do AWS KMS para uma chave armazenada localmente, tem variáveis de ambiente da sua configuração anterior que são desnecessárias. Elimine as variáveis de ambiente antigas.

Se mudou de uma chave armazenada localmente para o AWS KMS:

unset LKR_MASTER_KEY_FILE

Se mudou do AWS KMS para uma chave armazenada localmente:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Inicie o Looker

Emita o seguinte comando:

./looker start