Como alterar as chaves de criptografia do Looker

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

As instalações hospedadas pelo cliente que usam criptografia legada precisam migrar os bancos de dados internos para a criptografia do GCM AES-256. As novas instalações hospedadas pelo cliente precisam configurar as instalações para a criptografia do GCM AES-256. Consulte a página de documentação Como usar a criptografia GCM AES-256 para instruções sobre como migrar ou configurar a instalação hospedada pelo cliente para criptografia AES-256 no GCM.

Se quiser alterar o CMK ou quiser mudar de uma configuração baseada em chaves local para uma configuração do AWS KMS (ou vice-versa), crie um novo CMK e reconfigure a criptografia AES-256 do GCM.

A rechave é 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 rechave invalida todo o cache do Looker no disco, incluindo o cache de resultados da consulta. Como resultado, depois de concluir uma nova chave e iniciar a instância, pode haver uma carga de trabalho mais alta do que a normal para os bancos de dados do cliente.

Para refazer a criptografia do AES-256 do GCM, siga estes procedimentos:

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

Interromper 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 snapshot. O banco de dados é relativamente pequeno, então leva apenas alguns minutos.

Se o Looker estiver em cluster, interrompa 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 "quot;Existem outros nós ativos conectados a este 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 no cluster estão encerrados."

Definir as variáveis de ambiente _SOURCE e _DESTINATION

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

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

Como definir variáveis _SOURCE

Siga um dos procedimentos a seguir, dependendo se a configuração atual usar o KMS da AWS.

Se você estiver usando o AWS KMS

Se você configurou inicialmente sua criptografia usando o KMS da AWS, 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 keystores 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 novas variáveis a seguir 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 sua criptografia usando um KMS diferente da AWS, criou uma das seguintes variáveis de ambiente, dependendo se você armazena seu CMK em uma variável de ambiente ou em um arquivo na sua instância:

  • LKR_MASTER_KEY_ENV: se você armazenar a CMK em uma variável de ambiente, ela será armazenada.
  • 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.

Crie novamente a variável de ambiente usada em 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 você armazenar a 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

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

A nova configuração usará o AWS KMS

Caso a nova configuração use 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ê poderá usar as variáveis LKR_MASTER_KEY_FILE_DESTINATION ou LKR_MASTER_KEY_ENV_DESTINATION para especificar o destino do CMK.

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

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

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

Defina novas variáveis de ambiente

Defina uma ou mais das variáveis de ambiente a seguir conforme apropriado para sua 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, faça o seguinte:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

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

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

unset LKR_MASTER_KEY_FILE

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

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Iniciar o Looker

Use o comando a seguir:

./looker start