Migrazione alla crittografia AES-256 GCM

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 sull'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 versione per garantire la verifica. Questa modalità richiede l'utilizzo di una chiave principale del cliente (CMK) esterna. La CMK viene utilizzata per dedurre, criptare e decriptare la chiave di crittografia della chiave (KEK), che a sua volta viene utilizzata per dedurre, 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 alcun 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 AWS KMS o i propri sistemi di gestione delle chiavi personalizzati. Tutte le chiavi dei dati e la KEK sono 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.

Per le installazioni esistenti ospitate dal cliente che vogliono utilizzare la crittografia GCM è necessario eseguire la migrazione dalla crittografia precedente a quella nuova. Le nuove installazioni ospitate dal cliente richiedono una configurazione aggiuntiva per la crittografia GCM.

Segui nell'ordine le procedure nelle sezioni seguenti.

Interrompere Looker e creare un backup completo

Se stai eseguendo la migrazione alla crittografia GCM da un'istanza di 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 utilizzi 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 l'operazione dovrebbe richiedere solo pochi minuti. 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 eseguirai il comando di migrazione in un secondo momento, il comando non riuscirà e verrà visualizzato il messaggio "Sono presenti altri nodi attivi collegati a questo database Looker backend. Se Looker è stato arrestato nell'ultimo minuto, riprova a breve, altrimenti verifica che tutti i nodi del cluster siano stati arrestati."

Generazione di una chiave CMK in corso...

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

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

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

    openssl rand -base64 32
    

    Dopo aver generato la CMK, copiala e usa questo 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 del cluster.

  • Per generare e archiviare la CMK in un file, puoi utilizzare il seguente comando (dove <path_to_CMK_file> rappresenta il percorso e il nome del file per l'archiviazione della CMK):

    openssl rand -base64 32 > <path_to_key_file>
    

Dopo aver generato il file CMK, imposta i permessi del file della chiave su sola lettura per l'utente corrente:

chmod 0400 <path_to_key_file>

Dopo aver generato una CMK, assicurati di conservarla in un luogo sicuro e definitivo 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 Looker.

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

Se vuoi, 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 AWS KMS e stai archiviando la 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 AWS KMS e memorizzi la 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 del cluster.

Crittografia del database interno

Se esegui 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 la tua istanza di Looker viene avviata 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 con il 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, la procedura di crittografia inizierà quando avvierai la nuova istanza.

La procedura di crittografia richiede in genere 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

Questa sezione elenca alcuni errori comuni e le relative soluzioni:

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

  • Looker non può essere avviato perché: manca il keystore di supporto: Looker non riesce a trovare il CMK. Verifica che il percorso CMK nella variabile di ambiente LKR_MASTER_KEY_FILE sia corretto.

  • Looker non può essere avviato perché: la dimensione della chiave principale non è valida, deve essere di 32 byte, ma è X: la CMK deve avere una lunghezza esatta di 32 byte.

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