Como alterar as chaves de criptografia do Looker

O Looker usa a criptografia AES-256 Galois/Counter Mode (GCM) para criptografar dados internamente. Todos os itens de dados são criptografados com uma chave exclusiva e contêm um envelope de criptografia assinado e com controle de versão para garantir a verificação. Este modo requer o uso de uma chave mestra externa do cliente (CMK, na sigla em inglês). O CMK é usado para derivar, criptografar e descriptografar a chave de criptografia de chaves (KEK), que, por sua vez, é usada para derivar, criptografar e descriptografar chaves de dados.

As instalações hospedadas pelo cliente que usam a criptografia legada precisam migrar os bancos de dados internos para a criptografia GCM AES-256. Novas instalações hospedadas pelo cliente precisam configurar suas instalações para a criptografia GCM AES-256. Consulte a página de documentação Como usar a criptografia GCM AES-256 (em inglês) para instruções sobre como migrar ou configurar a instalação hospedada pelo cliente para a criptografia GCM AES-256.

Se você quiser alterar sua CMK ou se quiser mudar de uma configuração local baseada em chave para uma configuração do AWS KMS (ou vice-versa), crie uma nova CMK e redigite sua criptografia AES-256 no GCM.

A rechaveamento é feita off-line, o que significa que a instância do Looker precisa ser encerrada. Para instâncias do Looker em cluster, todos os nós do cluster precisam ser desligados.

A rechaveamento invalida todo o cache do Looker no disco, incluindo o cache do resultado da consulta. Como resultado, depois de concluir um rekeying e iniciar a instância, os bancos de dados do cliente podem ter uma carga maior do que o normal.

Para recodificar a criptografia GCM AES-256, execute os seguintes procedimentos:

  1. Interromper o Looker e criar um backup completo
  2. Definir as variáveis de ambiente _SOURCE e _DESTINATION
  3. Execute o comando rekey
  4. Definir novas variáveis de ambiente
  5. Iniciar o Looker

Parar o Looker e criar um backup completo

Execute os comandos a seguir:

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 você estiver executando um banco de dados MySQL externo para armazenar dados do aplicativo Looker, faça backup do banco de dados separadamente. Se o banco de dados for uma instância do MySQL, tire um instantâneo. O banco de dados é relativamente pequeno, então deve levar apenas alguns minutos.

Se o Looker estiver em cluster, pare todos os nós antes de continuar:

cd looker
./looker stop

Se algum nó ainda estiver em execução quando você emitir o comando rekey, ele falhará com a mensagem: "Há outros nós ativos conectados a esse banco de dados do back-end do Looker. Se o Looker foi encerrado no último minuto, tente novamente em breve. Caso contrário, verifique se todos os nós do cluster estão desligados."

Definir as variáveis de ambiente _SOURCE e _DESTINATION

Quando sua instância do Looker foi inicialmente migrada ou configurada para criptografia AES-256 do GCM, uma ou mais variáveis de ambiente foram criadas para indicar onde o Looker pode encontrar sua CMK. Essas variáveis diferem se você estiver usando o AWS KMS.

A operação de rechaveamento usa variáveis de ambiente adicionais, com base no uso atual do AWS KMS e no uso do AWS KMS após a operação de rechaveamento. As variáveis de ambiente com o sufixo _SOURCE indicam onde o Looker pode encontrar sua CMK, e as variáveis com o sufixo _DESTINATION indicam onde a ferramenta pode ser encontrada após a operação de rechaveamento.

Como definir variáveis _SOURCE

Execute um dos procedimentos a seguir, dependendo da configuração atual do AWS KMS.

Se você estiver usando o AWS KMS

Se você configurou inicialmente a criptografia usando o AWS KMS, criou uma ou ambas as variáveis de ambiente a seguir:

  • LKR_AWS_CMK: armazena o CMK_alias da AWS.
  • LKR_AWS_CMK_EC: uma variável opcional que define o contexto de criptografia usado com armazenamentos de chaves do AWS KMS.

Recrie as variáveis de ambiente acima:

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

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

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

Se você não estiver usando o AWS KMS

Se você configurou inicialmente a criptografia usando um KMS diferente da AWS, criou uma das seguintes variáveis de ambiente, dependendo se armazena o CMK em uma variável de ambiente ou em um arquivo na instância:

  • LKR_MASTER_KEY_ENV: se você armazenar o CMK em uma variável de ambiente, ele será armazenado.
  • LKR_MASTER_KEY_FILE: se você armazenar a CMK em um arquivo, o caminho e o nome do arquivo que a contém serão armazenados.

Recrie a variável de ambiente usada na 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 você armazenar sua CMK em um arquivo, crie a seguinte variável:

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

Se você armazenar o CMK em uma variável de ambiente, crie a seguinte variável:

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Como definir variáveis _DESTINATION

Execute um dos procedimentos a seguir, dependendo se você usará o AWS KMS após a operação de rechaveamento.

Sua nova configuração usará o AWS KMS

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

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

Sua nova configuração não usará o AWS KMS

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

Se você quiser armazenar sua CMK em um arquivo, emita o seguinte comando:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

Ou, se quiser armazenar o CMK usando uma variável de ambiente, emita o seguinte comando:

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Execute o comando rekey.

Use o comando a seguir:

./looker rekey

Definir novas variáveis de ambiente

Defina uma ou mais das variáveis de ambiente a seguir conforme apropriado para a nova configuração.

Se a 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 nova configuração não usar o AWS KMS e você armazenar o CMK em uma variável de ambiente:

export LKR_MASTER_KEY_ENV=<CMK_value>

Se a nova configuração não usar o AWS KMS e você armazenar o CMK em um arquivo:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

Se você migrar de uma chave armazenada localmente para o AWS KMS ou vice-versa, terá variáveis de ambiente desnecessárias da configuração anterior. Exclua as variáveis de ambiente antigas.

Se você migrou de uma chave armazenada localmente para o AWS KMS:

unset LKR_MASTER_KEY_FILE

Se você migrou do AWS KMS para uma chave armazenada localmente:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Iniciar o Looker

Use o comando a seguir:

./looker start