Migration zur AES-256-GCM-Verschlüsselung

Looker verwendet die AES-256 Galois/Counter Mode (GCM)-Verschlüsselung, um sensible Daten zu verschlüsseln, die intern gespeichert sind. Dazu gehören:

  • Sicherungen der internen Datenbank von Looker
  • Informationen zu Datenbank und Dienstverbindung
  • Informationen zur Nutzerauthentifizierung
  • Nutzerattributwerte
  • Kundendaten, die im Cache gespeichert oder für die Zustellung aufbereitet werden

Wenn Sie eine detaillierte Liste der Daten erhalten möchten, die von Looker verschlüsselt werden, öffnen Sie eine Supportanfrage.

Die Daten werden mit einem eindeutigen Datenschlüssel verschlüsselt und enthalten einen signierten und versionierten Verschlüsselungsumschlag, um die Überprüfung zu gewährleisten. Für diesen Modus ist die Verwendung eines externen Kundenmasterschlüssels (Customer Master Key, CMK) erforderlich. Der CMK wird verwendet, um den Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) abzuleiten, zu verschlüsseln und zu entschlüsseln. Dieser wird wiederum verwendet, um Datenschlüssel abzuleiten, zu verschlüsseln und zu entschlüsseln.

Die Verschlüsselung wird nur für die interne Datenbank und den Cache von Looker verwendet. Kundendatenbanken sind von der Verschlüsselung von Looker in keiner Weise betroffen. Außerdem werden nur statische Daten (auf dem Laufwerk gespeicherte Daten) auf diese Weise verschlüsselt.

Für vom Kunden gehostete Installationen können ihre eigenen AWS KMS-Konten oder ihre eigenen benutzerdefinierten Schlüsselverwaltungssysteme verwendet werden. Alle Datenschlüssel und der KEK werden verschlüsselt und intern in der vom Kunden gehosteten Looker-Installation verwendet. Wenn Sie AWS KMS nicht verwenden, sollte die externe CMK sicher aufbewahrt werden.

Bei bestehenden, vom Kunden gehosteten Installationen, die die GCM-Verschlüsselung verwenden möchten, muss von der bisherigen Verschlüsselung zur neuen GCM-Verschlüsselung migriert werden. Für neue, von Kunden gehostete Installationen ist eine zusätzliche Konfiguration für die GCM-Verschlüsselung erforderlich.

Folgen Sie der Reihe nach den Schritten in den folgenden Abschnitten.

Looker beenden und eine Vollsicherung erstellen

Wenn Sie von einer vorhandenen Looker-Instanz zur GCM-Verschlüsselung migrieren, sollten Sie unbedingt eine vollständige Sicherung erstellen, falls ein Problem mit der Verschlüsselungsmigration auftritt. Wenn Sie eine neue Looker-Instanz installieren, überspringen Sie diesen Abschnitt.

Wenn Sie die interne Looker-Datenbank verwenden:

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

Wenn Sie eine externe MySQL-Datenbank zum Speichern von Looker-Anwendungsdaten verwenden, sichern Sie die Datenbank separat. Wenn die Datenbank eine MySQL-Instanz ist, erstellen Sie einen Snapshot. Die Datenbank ist relativ klein, sodass der Vorgang nur wenige Minuten dauern sollte. Beenden Sie dann Looker.

Wenn Looker geclustert ist, beenden Sie jeden Knoten, bevor Sie fortfahren:

cd looker
./looker stop

Wenn noch Knoten ausgeführt werden, wenn Sie den Migrationsbefehl später ausführen, schlägt der Befehl mit der Meldung fehl: „Es gibt noch andere aktive Knoten, die mit dieser Looker-Backend-Datenbank verbunden sind. Wenn Looker innerhalb der letzten Minute heruntergefahren wurde, versuchen Sie es kurz darauf noch einmal. Andernfalls prüfen Sie, ob alle Knoten im Cluster heruntergefahren sind.“

CMK generieren

Wenn Sie AWS KMS verwenden, erstellen Sie einen CMK entweder über die AWS Management Console oder die API.

Wenn Sie AWS KMS nicht verwenden, generieren Sie einen Base64-CMK mit 32 Byte. Sie können den CMK entweder in einer Umgebungsvariablen oder in einer Datei speichern.

  • Wenn Sie die CMK generieren und in einer Umgebungsvariablen speichern möchten, können Sie den folgenden Befehl verwenden:

    openssl rand -base64 32
    

    Kopieren Sie den CMEK-Schlüssel nach dem Generieren und speichern Sie ihn mit dem folgenden Befehl in der Umgebungsvariablen LKR_MASTER_KEY_ENV. Dabei steht <CMK_value> für den CMEK-Schlüssel, den Sie mit dem vorherigen Befehl generiert haben:

    export LKR_MASTER_KEY_ENV=<CMK_value>
    

    Wenn Looker geclustert ist, führen Sie den vorherigen Befehl auf jedem Knoten im Cluster aus.

  • Zum Generieren und Speichern des CMK in einer Datei können Sie den folgenden Befehl verwenden (wobei <path_to_CMK_file> der Pfad und Dateiname zum Speichern des CMK ist):

    openssl rand -base64 32 > <path_to_key_file>
    

Nachdem Sie die CMK-Datei generiert haben, legen Sie die Berechtigungen für die Schlüsseldatei auf den Lesezugriff des aktuellen Nutzers fest:

chmod 0400 <path_to_key_file>

Nachdem Sie eine CMK generiert haben, sollten Sie sie an einem sicheren und dauerhaften Ort speichern, bevor Sie fortfahren. Wenn der CMK nach der Verschlüsselung der internen Datenbank verloren geht, kann Ihre Instanz verloren gehen.

AWS IAM-Rolle erstellen

Wenn Sie nicht AWS KMS verwenden, überspringen Sie diesen Abschnitt.

Wenn Sie AWS KMS verwenden, empfiehlt Looker, eine neue IAM-Rolle zu erstellen, die für Ihren CMK eindeutig ist, und sie mit Ihrer Looker-Instanz zu verknüpfen.

Im Folgenden finden Sie ein Beispiel für eine IAM-Rolle mit den Mindestberechtigungen, die für Ihre CMK erforderlich sind:

{
    "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/*"
        }
    ]
}

Umgebungsvariablen festlegen

Wenn Sie AWS KMS verwenden, legen Sie die Umgebungsvariable AWS_REGION auf Ihre AWS-Region und die Umgebungsvariable LKR_AWS_CMK auf den Alias Ihres CMK fest:

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

Optional können Sie auch die Umgebungsvariable LKR_AWS_CMK_EC festlegen, um einen benutzerdefinierten AWS-Verschlüsselungskontext festzulegen. Wenn Sie diese Umgebungsvariable nicht festlegen, verwendet Looker den Standardverschlüsselungskontext, den String Looker_Encryption_Context.

export LKR_AWS_CMK_EC=<My_Encryption_Context>

Wenn Sie nicht AWS KMS verwenden und Ihren CMK in einer Datei speichern, legen Sie die Umgebungsvariable LKR_MASTER_KEY_FILE auf den Pfad der CMK-Datei fest:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Wenn Sie AWS KMS nicht verwenden und Ihre CMK in einer Umgebungsvariablen speichern, legen Sie die Umgebungsvariable LKR_MASTER_KEY_ENV auf den Wert der CMK fest:

export LKR_MASTER_KEY_ENV=<CMK_value>

Wenn Looker geclustert ist, führen Sie den vorherigen Befehl auf jedem Knoten im Cluster aus.

Interne Datenbank verschlüsseln

Wenn Sie eine vorhandene Looker-Instanz zur GCM-Verschlüsselung migrieren, migrieren Sie die interne Datenbank von Looker und starten Sie Looker:

java -jar looker.jar migrate_encryption
./looker  start

Wenn Ihre Looker-Instanz mit den Startoptionen -d <db.yaml> oder --internal-db-creds=<db.yaml> gestartet wird, die einen Pfad zu einer YAML-Datei mit Ihren Datenbankanmeldedaten angeben, müssen Sie dieselbe Option auch im Befehl java -jar looker.jar migrate_encryption angeben.

Beispiel: java -jar looker.jar migrate_encryption -d /path/file.

Wenn Sie eine neue Looker-Instanz installieren, beginnt der Verschlüsselungsprozess, wenn Sie die neue Looker-Instanz starten.

Die Verschlüsselung dauert in der Regel weniger als eine Minute. Nach dem Start von Looker können Sie die neue Verschlüsselung prüfen. Suchen Sie dazu im Looker-Log nach GCM:

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

Fehlerbehebung

In diesem Abschnitt werden einige häufige Fehler und deren Lösungen aufgeführt:

  • Aufgabe „migrate_encryption“ konnte nicht gefunden werden: Aktualisieren Sie Ihre Looker-Instanz auf Looker 6.4.

  • Looker kann nicht gestartet werden, da der Back-Keystore fehlt: Looker kann den CMK nicht finden. Prüfen Sie, ob der CMK-Pfad in der Umgebungsvariablen LKR_MASTER_KEY_FILE korrekt ist.

  • Looker kann nicht gestartet werden, weil: Die Größe des Masterschlüssels ist ungültig. Er muss 32 Byte groß sein, ist aber X: Der CMK muss genau 32 Byte lang sein.

  • Looker kann nicht gestartet werden, da die Berechtigung für die Sicherungsschlüsseldatei 0400 sein muss, aber XXX ist: Die CMK-Datei muss nur lesbar sein und einen chmod-Wert von 0400 haben.