Looker は、AES-256 Galois/Counter Mode(GCM)暗号化を使用して、以下を含む機密データを社内で暗号化しています。
- Looker の内部データベースのバックアップ
- データベースとサービス接続情報
- ユーザー認証情報
- ユーザー属性値
- 配信用にキャッシュに保存または準備された顧客データ
Looker が暗号化するデータの詳細なリストについては、アカウント マネージャーにお問い合わせいただくか、Looker のヘルプセンターで [お問い合わせ] をクリックしてサポート リクエストを開いてください。
データは一意のデータ鍵を使用して暗号化されます。また、検証が確実に行われるように、署名済みのバージョン付き暗号化エンベロープが含まれます。このモードでは、外部のカスタマー マスター キー(CMK)を使用する必要があります。CMK は、鍵暗号鍵(KEK)の導出、暗号化、復号に使用されます。鍵暗号鍵は、データ鍵の導出、暗号化、復号に使用します。
暗号化は Looker の内部データベースとキャッシュにのみ使用されます。お客様のデータベースは、Looker の暗号化の影響を一切受けません。また、この方法で暗号化されるのは静的データ(ディスクに保存されているデータ)のみです。
顧客がホストするインストールでは、独自の AWS KMS アカウントまたは独自のカスタム鍵管理システムを使用できます。すべてのデータキーと KEK は暗号化され、お客様がホストする Looker インストールの内部で使用されます。AWS KMS を使用しない場合は、外部 CMK を安全に保つ必要があります。
顧客がホストする既存のインストール環境で GCM 暗号化を使用する場合は、以前の暗号化から新しい GCM 暗号化に移行する必要があります。ホストでホストされる新規インストールには、GCM 暗号化のための追加構成が必要です。
以降のセクションの手順に沿って作業を進めてください。
Looker の停止と完全バックアップの作成
既存の Looker インスタンスから GCM 暗号化に移行する場合は、暗号化の移行で問題が発生した場合に備えて、必ず完全バックアップを作成してください。新しい 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
外部 MySQL データベースを実行して Looker アプリケーション データを保存する場合は、データベースを個別にバックアップします。データベースが MySQL インスタンスの場合、スナップショットを取得します。データベースは比較的小さいため、数分で完了します。その後、Looker を停止します。
Looker がクラスタ化されている場合は、続行する前にすべてのノードを停止してください。
cd looker
./looker stop
後で移行コマンドを発行したときにまだ実行されているノードがある場合、コマンドは失敗し、「このバックエンド Looker データベースに接続された他のライブノードがあります」というメッセージが表示されます。Looker が 1 分以内にシャットダウンされた場合は、しばらくしてからもう一度お試しください。それ以外の場合は、クラスタ内のすべてのノードがシャットダウンされていることを確認します。"
CMK の生成
AWS KMS を使用している場合は、AWS Management Console または API を使用して CMK を作成します。
AWS KMS を使用していない場合は、Base64、32 バイトの CMK を生成します。CMK は、環境変数またはファイルに保存できます。
CMK を生成して環境変数に保存するには、次のコマンドを使用して CMK を生成します。
openssl rand -base64 32
CMK を生成したら、次のコマンドを使用して、その CMK を
LKR_MASTER_KEY_ENV
環境変数に保存します(<CMK_value>
は前のコマンドで生成した CMK です)。export LKR_MASTER_KEY_ENV=<CMK_value>
Looker がクラスタ化されている場合は、クラスタ内のすべてのノードで上記のコマンドを実行します。
CMK を生成してファイルに保存するには、次のコマンドを使用します(
<path_to_CMK_file>
は CMK を保存するパスとファイル名です)。openssl rand -base64 32 > <path_to_key_file>
CMK ファイルを生成したら、鍵ファイルの権限を現在のユーザーの読み取り専用に設定します。
chmod 0400 <path_to_key_file>
CMK を生成したら、安全かつ永続的な場所に保管してから続行してください。内部データベースを暗号化した後に CMK が失われると、インスタンスが失われる可能性があります。
AWS IAM ロールの作成
AWS KMS を使用していない場合は、このセクションをスキップしてください。
AWS KMS を使用している場合は、CMK に固有の新しい IAM ロールを作成し、Looker インスタンスに接続することをおすすめします。
次に、CMK に必要な最小限の権限を含む IAM ロールの例を示します。
{
"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/*"
}
]
}
環境変数を設定する
AWS KMS を使用している場合は、AWS_REGION
環境変数を AWS リージョンに設定し、LKR_AWS_CMK
環境変数を CMK のエイリアスに設定します。
export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>
必要に応じて、LKR_AWS_CMK_EC
環境変数を設定して、カスタム AWS 暗号化コンテキストを設定することもできます。この環境変数を設定しない場合、Looker はデフォルトの暗号化コンテキストである文字列 Looker_Encryption_Context
を使用します。
export LKR_AWS_CMK_EC=<My_Encryption_Context>
AWS KMS を使用せず、CMK をファイルに保存する場合は、LKR_MASTER_KEY_FILE
環境変数を CMK ファイルのパスに設定します。
export LKR_MASTER_KEY_FILE=<path_to_key_file>
AWS KMS を使用せず、CMK を環境変数に保存する場合は、LKR_MASTER_KEY_ENV
環境変数を CMK の値に設定します。
export LKR_MASTER_KEY_ENV=<CMK_value>
Looker がクラスタ化されている場合は、クラスタ内のすべてのノードで上記のコマンドを実行します。
内部データベースを暗号化する
既存の Looker インスタンスを GCM 暗号化に移行する場合は、Looker の内部データベースを移行して Looker を起動します。
java -jar looker.jar migrate_encryption
./looker start
Looker インスタンスが
-d <db.yaml>
または--internal-db-creds=<db.yaml>
起動オプションで始まって、データベースの認証情報を含む YAML ファイルへのパスを指定する場合は、java -jar looker.jar migrate_encryption
コマンドに同じオプションを含める必要があります。例:
java -jar looker.jar migrate_encryption -d /path/file
新しい Looker インスタンスをインストールする場合、暗号化プロセスは新しい Looker インスタンスの起動時に開始されます。
暗号化プロセスは通常、1 分未満で完了します。Looker が起動したら、Looker ログで 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
トラブルシューティング
このセクションでは、一般的なエラーとその解決方法について説明します。
タスクが見つかりませんでした。'移行された暗号化": Looker インスタンスを Looker 6.4 に更新します。
Looker を起動できない理由: バッキング キーストアが見つからない: Looker が CMK を見つけられません。
LKR_MASTER_KEY_FILE
環境変数の CMK パスが正しいことを確認します。Looker を起動できない理由: マスターキーのサイズが無効(32 バイト、ただし X): CMK の長さがちょうど 32 バイトである必要があります。
Looker を起動できない理由: 鍵ファイルのバッキング権限は
0400 でなければなりませんが、XXX でなければなりません : CMK ファイルは0400
値がchmod
である読み取り専用である必要があります