Looker 會使用 AES-256 Galois/計數器模式 (GCM) 加密技術,在內部加密資料。每個資料項目都會使用專屬的資料金鑰加密,並包含已簽署且有版本號碼的信封式加密資料,以確保驗證。這個模式需要使用外部客戶主金鑰 (CMK)。CMK 用於擷取、加密及解密金鑰加密金鑰 (KEK),而 KEK 則用於擷取、加密及解密資料金鑰。
使用舊版加密機制的客戶代管安裝作業必須將內部資料庫遷移至 AES-256 GCM 加密機制。新的客戶代管安裝作業必須設定 AES-256 GCM 加密功能。如要瞭解如何遷移或設定客戶代管的 AES-256 GCM 加密安裝作業,請參閱「使用 AES-256 GCM 加密」說明文件。
如要變更 CMK,或從本機金鑰設定移至 AWS KMS 設定 (或反之),您可以建立新的 CMK,並重新設定 AES-256 GCM 加密金鑰。
重新設定索引鍵必須在離線狀態下進行,也就是說,Looker 執行個體必須關閉。對於叢集 Looker 執行個體,必須關閉叢集的所有節點。
重新編碼會使 Looker 的磁碟快取無效,包括查詢結果快取。因此,在重新設定金鑰並啟動執行個體後,用戶端資料庫可能會承受比平常更高的負載。
如要重新設定 AES-256 GCM 加密金鑰,請執行下列程序:
停止 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 是叢集,請務必先停止每個節點再繼續操作:
cd looker
./looker stop
如果您稍後發出 rekey
指令時,仍有節點正在執行,指令將失敗,並顯示「有其他正在執行的節點已連線至此後端 Looker 資料庫。如果 Looker 在過去一分鐘內關閉,請稍後再試一次,否則請確認叢集中的所有節點都已關閉。」
設定 _SOURCE
和 _DESTINATION
環境變數
當 Looker 執行個體最初遷移至或設定為 AES-256 GCM 加密時,系統會建立一或多個環境變數,指出 Looker 可在何處找到 CMK。這些變數會因您是否使用 AWS KMS 而有所不同。
重新編碼作業會根據您目前是否使用 AWS KMS,以及您是否會在重新編碼作業後使用 AWS KMS,使用其他環境變數。結尾為 _SOURCE
的環境變數表示 Looker 目前可在哪裡找到 CMK,而結尾為 _DESTINATION
的環境變數則表示 Looker 在重新設定金鑰後可在哪裡找到 CMK。
設定 _SOURCE
變數
視目前設定是否使用 AWS KMS 而定,請執行下列任一程序。
如果您目前使用 AWS KMS
如果您一開始使用 AWS KMS 設定加密功能,就會建立下列一或兩個環境變數:
LKR_AWS_CMK
:儲存 AWSCMK_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
。
設定新的環境變數
視新設定而定,設定下列一或多個環境變數。
如果新設定使用 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