Looker の暗号鍵の変更

Looker は AES-256 Galois/Counter Mode(GCM)の暗号化を使用して、内部でデータを暗号化します。データのすべてのアイテムは一意のデータ鍵を使用して暗号化され、検証を保証するために署名およびバージョニングされた暗号化エンベロープが含まれます。このモードでは、外部の顧客マスター鍵(CMK)を使用する必要があります。CMK は鍵暗号鍵(KEK)の導出、暗号化、復号に使用され、KEK はデータ鍵の導出、暗号化、復号に使用されます。

従来の暗号化を使用しているセルフホスト型インストールでは、内部データベースを AES-256 GCM 暗号化に移行する必要があります。セルフホスト型新しいインストールでは、AES-256 GCM 暗号化のインストールを構成する必要があります。AES-256 GCM 暗号化に関するセルフホスト型インストールの移行または構成の手順については、AES-256 GCM 暗号化の使用のドキュメント ページをご覧ください。

CMK を変更する場合、またはローカルの鍵ベースの構成から AWS KMS 構成に(またはその逆に)変更する場合は、新しい CMK を作成し、AES-256 GCM 暗号化を rekey します。

鍵交換はオフラインで行われます。つまり、Looker インスタンスをシャットダウンする必要があります。クラスタ化された Looker インスタンスの場合、クラスタのすべてのノードをシャットダウンする必要があります。

鍵交換を行うと、クエリ結果のキャッシュを含む Looker のディスク上のキャッシュ全体が無効になります。そのため、rekey を完了してインスタンスを起動すると、クライアント データベースの負荷が通常よりも高くなる可能性があります。

AES-256 GCM 暗号化を rekey するには、次の手順を実施します。

  1. Looker を停止して、完全バックアップを作成する
  2. _SOURCE 環境変数と _DESTINATION 環境変数を設定する
  3. rekey コマンドを実行する
  4. 新しい環境変数を設定する
  5. Looker を起動する

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

Looker アプリケーション データを保存するために外部 MySQL データベースを実行している場合は、データベースを個別にバックアップします。データベースが MySQL インスタンスの場合は、スナップショットを取得します。このデータベースは比較的小さいので、数分で完了します。

Looker がクラスタ化されている場合は、作業を続行する前にすべてのノードを停止してください。

cd looker
./looker stop

後で rekey コマンドを発行するときにノードが実行されていると、このコマンドは失敗し、「このバックエンド Looker データベースに接続されている他のライブノードがあります。Looker が過去 1 分以内にシャットダウンされた場合は、しばらくしてからもう一度お試しください。それ以外の場合は、クラスタ内のすべてのノードがシャットダウンしていることを確認してください」というエラー メッセージが表示されます。

_SOURCE_DESTINATION 環境変数を設定する

Looker インスタンスが最初に AES-256 GCM 暗号化に移行または構成されたときに、Looker が CMK を検出できる場所を示す環境変数が 1 つ以上作成されました。これらの変数は、AWS KMS を使用しているかどうかによって異なります。

rekey オペレーションでは、現在 AWS KMS を使用しているかどうか、また rekey オペレーション後に AWS KMS を使用するかどうかに基づいて、追加の環境変数を使用します。接尾辞 _SOURCE を持つ環境変数は、Looker が現在 CMK を検出できる場所を示し、接尾辞 _DESTINATION を持つ環境変数は、rekey オペレーション後に Looker が CMK を検出できる場所を示します。

_SOURCE 変数の設定

現在の構成で AWS KMS を使用しているかどうかに応じて、次のいずれかの手順を行います。

現在 AWS KMS を使用している場合

AWS KMS を使用して最初に暗号化を構成した場合は、次の環境変数のいずれかまたは両方を作成します。

  • LKR_AWS_CMK: AWS CMK_alias を保存します。
  • LKR_AWS_CMK_EC: AWS KMS キーストアで使用される暗号化コンテキストを定義するオプションの変数。

環境変数を再作成します。

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

次に、_SOURCE 変数を作成します。次の新しい変数を _SOURCE サフィックス付きで設定します。

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

現在 AWS KMS を使用していない場合

AWS 以外の KMS を使用して最初に暗号化を構成した場合は、CMK を環境変数に保存するか、インスタンス上のファイルに保存するかに応じて、次の環境変数のいずれかを作成します。

  • LKR_MASTER_KEY_ENV: CMK を環境変数に保存する場合、CMK が保存されます。
  • LKR_MASTER_KEY_FILE: CMK をファイルにする場合、CMK を含むファイルのパスとファイル名が保存されます。

構成に使用される環境変数を再作成します。

export LKR_MASTER_KEY_FILE=<path_to_key_file>

または

export LKR_MASTER_KEY_ENV=<CMK_value>

次に、_SOURCE 変数を作成します。

CMK をファイルに保存する場合は、次の変数を作成します。

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

CMK を環境変数に保存する場合は、次の変数を作成します。

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

_DESTINATION 変数の設定

鍵交換オペレーション後に AWS KMS を使用するかどうかに応じて、次のいずれかの手順を行います。

新しい構成で AWS KMS を使用する

新しい構成で AWS KMS を使用する場合は、次の環境変数を作成して新しい CMK のロケーションを指定します。

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

新しい構成で AWS KMS を使用しない

新しい構成で AWS KMS を使用しない場合は、LKR_MASTER_KEY_FILE_DESTINATION 変数または LKR_MASTER_KEY_ENV_DESTINATION 変数を使用して CMK の宛先を指定できます。

CMK をファイルに保存する場合は、次のコマンドを実行します。

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

環境変数を使用して CMK を保存する場合は、次のコマンドを実行します。

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

rekey コマンドを実行する

次のコマンドを実行します。

./looker rekey

Looker インスタンスが -d <db.yaml> または --internal-db-creds=<db.yaml> 起動オプションで起動し、データベース認証情報が含まれる YAML ファイルへのパスが指定されている場合は、rekey コマンドに同じオプションを指定する必要があります。

例:java -jar looker.jar rekey -d /path/file/db.yaml

新しい環境変数を設定する

新しい構成に応じて、次の環境変数を 1 つ以上設定します。

新しい構成で AWS KMS を使用する場合:

export LKR_AWS_CMK=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC=<new_encryption_context>

新しい構成で AWS KMS は使用せず、CMK を環境変数に保存する場合:

export LKR_MASTER_KEY_ENV=<CMK_value>

新しい構成で AWS KMS は使用せず、CMK をファイルに保存する場合は、次のようにします。

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

ローカルに保存された鍵を AWS KMS に移動したり、AWS KMS からローカルに保存された鍵に移動したりした場合は、以前の構成の環境変数が不要になったことになります。古い環境変数を削除します。

ローカルに保存された鍵から AWS KMS に移行した場合:

unset LKR_MASTER_KEY_FILE

AWS KMS からローカルに保存された鍵に移動した場合:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Looker を起動する

次のコマンドを実行します。

./looker start