Migrazione alla crittografia GCM AES-256

Looker utilizza la crittografia AES-256 Galois/Counter Mode (GCM) per criptare i dati sensibili archiviati internamente, tra cui:

  • Backup del database interno di Looker
  • Informazioni sulla connessione al database e al servizio
  • Informazioni di autenticazione utente
  • Valori degli attributi utente
  • Dati dei clienti memorizzati nella cache o pronti per la consegna

Per un elenco dettagliato dei dati criptati da Looker, apri una richiesta di assistenza.

I dati vengono criptati utilizzando una chiave di dati univoca e contengono una busta di crittografia firmata e con più versioni per garantire la verifica. Questa modalità richiede l'utilizzo di una chiave master del cliente (CMK) esterna. La CMK viene utilizzata per ricavare, criptare e decriptare la chiave di crittografia della chiave (KEK), che a sua volta viene utilizzata per ricavare, criptare e decriptare le chiavi di dati.

La crittografia viene utilizzata solo per il database e la cache interni di Looker. I database dei clienti non sono interessati in nessun modo dalla crittografia di Looker. Inoltre, solo i dati statici (dati archiviati su disco) vengono criptati in questo modo.

Le installazioni ospitate dal cliente possono utilizzare i propri account KMS di AWS o sistemi di gestione delle chiavi personalizzati. Tutte le chiavi dati e la KEK vengono criptate e utilizzate internamente nell'installazione di Looker ospitata dal cliente. Se non utilizzi KMS AWS, la CMK esterna deve essere conservata in modo sicuro.

Le installazioni esistenti ospitate dal cliente che desiderano utilizzare la crittografia GCM devono eseguire la migrazione dalla crittografia legacy a quella nuova. Le nuove installazioni ospitate dal cliente richiedono una configurazione aggiuntiva per la crittografia GCM.

Segui in ordine le procedure indicate nelle sezioni seguenti.

Interruzione di Looker e creazione di un backup completo

Se stai eseguendo la migrazione alla crittografia GCM da un'istanza Looker esistente, assicurati di creare un backup completo in caso di problemi con la migrazione della crittografia. Se stai installando una nuova istanza di Looker, salta questa sezione.

Se utilizzi il database interno di 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

Se esegui un database MySQL esterno per archiviare i dati dell'applicazione Looker, esegui il backup del database separatamente. Se il database è un'istanza MySQL, acquisisci uno snapshot. Il database è relativamente piccolo, quindi dovrebbe richiedere solo pochi minuti. Quindi, interrompi Looker.

Se Looker è in cluster, assicurati di arrestare ogni nodo prima di procedere:

cd looker
./looker stop

Se alcuni nodi sono ancora in esecuzione quando in un secondo momento emetti il comando di migrazione, quest'ultimo non riuscirà e visualizzerà il messaggio "Sono presenti altri nodi attivi connessi al database Looker di backend. Se Looker è stato arrestato nell'ultimo minuto, riprova a breve, altrimenti verifica che tutti i nodi del cluster siano arrestati."

Generazione di una CMK

Se utilizzi KMS AWS, crea una chiave CMK utilizzando la console di gestione AWS o l'API.

Se non utilizzi KMS AWS, genera una CMK a 32 byte Base64. Puoi archiviare la chiave CMK in una variabile di ambiente o in un file.

  • Per generare la chiave CMK e memorizzarla in una variabile di ambiente, puoi utilizzare il seguente comando:

    openssl rand -base64 32
    

    Dopo aver generato la CMK, copiala e utilizza il seguente comando per archiviare la CMK nella variabile di ambiente LKR_MASTER_KEY_ENV (dove <CMK_value> è la CMK generata con il comando precedente):

    export LKR_MASTER_KEY_ENV=<CMK_value>
    

    Se Looker è in cluster, esegui il comando precedente su ogni nodo nel cluster.

  • Per generare e archiviare la CMK in un file, puoi utilizzare il seguente comando (dove <path_to_CMK_file> è il percorso e il nome file in cui archiviare la CMK):

    openssl rand -base64 32 > <path_to_key_file>
    

Dopo aver generato il file CMK, imposta le autorizzazioni del file chiave sull'utente corrente di sola lettura:

chmod 0400 <path_to_key_file>

Dopo aver generato una CMK, assicurati di conservarla in un luogo sicuro e permanente prima di continuare. La perdita della chiave CMK dopo la crittografia del database interno può comportare la perdita dell'istanza.

Creazione di un ruolo AWS IAM

Se non utilizzi KMS AWS, salta questa sezione.

Se utilizzi KMS AWS, Looker consiglia di creare un nuovo ruolo IAM univoco per la tua CMK e di collegarlo all'istanza di Looker.

Di seguito è riportato un ruolo IAM di esempio che contiene le autorizzazioni minime richieste per la tua 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/*"
        }
    ]
}

Imposta le variabili di ambiente

Se utilizzi KMS AWS, imposta la variabile di ambiente AWS_REGION sulla tua regione AWS e la variabile di ambiente LKR_AWS_CMK sull'alias della tua CMK:

export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>

Facoltativamente, puoi anche impostare la variabile di ambiente LKR_AWS_CMK_EC per impostare un contesto di crittografia AWS personalizzato. Se non imposti questa variabile di ambiente, Looker utilizzerà il contesto di crittografia predefinito, la stringa Looker_Encryption_Context.

export LKR_AWS_CMK_EC=<My_Encryption_Context>

Se non utilizzi KMS AWS e archivi la chiave CMK in un file, imposta la variabile di ambiente LKR_MASTER_KEY_FILE sul percorso del file CMK:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Se non utilizzi KMS AWS e archivi la chiave CMK in una variabile di ambiente, imposta la variabile di ambiente LKR_MASTER_KEY_ENV sul valore della CMK:

export LKR_MASTER_KEY_ENV=<CMK_value>

Se Looker è in cluster, esegui il comando precedente su ogni nodo nel cluster.

Crittografia del database interno

Se stai eseguendo la migrazione di un'istanza di Looker esistente alla crittografia GCM, esegui la migrazione del database interno di Looker e avvia Looker:

java -jar looker.jar migrate_encryption
./looker  start

Se l'istanza di Looker si avvia con le opzioni di avvio -d <db.yaml> o --internal-db-creds=<db.yaml>, che forniscono un percorso a un file YAML con le credenziali del tuo database, devi includere la stessa opzione nel comando java -jar looker.jar migrate_encryption.

Ad esempio, java -jar looker.jar migrate_encryption -d /path/file.

Se stai installando una nuova istanza di Looker, il processo di crittografia inizia all'avvio della nuova istanza.

In genere, la procedura di crittografia richiede meno di un minuto. Una volta avviato Looker, puoi verificare la nuova crittografia cercando GCM nel log di 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

Risoluzione dei problemi

In questa sezione sono elencati alcuni errori comuni e le relative soluzioni:

  • Impossibile trovare l'attività "migrate_encryption": aggiorna l'istanza di Looker a Looker 6.4.

  • Impossibile avviare Looker perché: archivio chiavi di supporto mancante: Looker non riesce a trovare la chiave CMK. Verifica che il percorso CMK nella variabile di ambiente LKR_MASTER_KEY_FILE sia corretto.

  • Impossibile avviare Looker perché la dimensione della chiave master non è valida, deve essere di 32 byte, mentre è X. La CMK deve avere esattamente 32 byte.

  • Impossibile avviare Looker perché: l'autorizzazione per il file della chiave di supporto deve essere 0400, ma è XXX: il file CMK deve essere di sola lettura con un valore chmod pari a 0400.