根據預設,系統會使用 Google 代管的加密金鑰,在資料處於靜態時 Google Cloud 自動加密。如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以使用客戶管理的加密金鑰 (CMEK),對 Looker (Google Cloud Core) 進行應用程式層級的加密。
如要進一步瞭解 CMEK,包括啟用時機和原因,請參閱 Cloud Key Management Service 說明文件。
本頁將逐步說明如何設定 Looker (Google Cloud Core) 執行個體,以使用 CMEK。
Looker (Google Cloud Core) 如何與 CMEK 互動?
Looker (Google Cloud Core) 會使用單一 CMEK 金鑰 (透過次要金鑰階層) 來保護 Looker (Google Cloud Core) 執行個體管理的機密資料。啟動期間,Looker 執行個體中的每個程序都會對 Cloud Key Management Service (KMS) 進行一次初始呼叫,以解密金鑰。在正常運作期間 (啟動後),整個 Looker 執行個體大約每五分鐘會向 KMS 發出一次呼叫,確認金鑰是否仍有效。
哪些類型的 Looker (Google Cloud Core) 執行個體支援 CMEK?
如果符合下列兩項條件,Looker (Google Cloud Core) 執行個體就支援 CMEK:
- 本頁面說明的 CMEK 設定步驟,是在建立 Looker (Google Cloud Core) 執行個體之前完成。您無法在現有執行個體上啟用客戶自行管理的加密金鑰。
- 執行個體版本必須為 Enterprise 或 Embed。
使用 CMEK 建立 Looker (Google Cloud Core) 執行個體的工作流程
本頁將逐步說明如何為 Looker (Google Cloud Core) 執行個體設定 CMEK。
- 設定環境。
- 僅限 Google Cloud CLI、Terraform 和 API 使用者:如果專案尚未設定 Looker 服務帳戶,請為每個需要客戶管理加密金鑰的專案建立服務帳戶。
- 建立金鑰環和金鑰,並設定金鑰位置。位置是指要建立 Looker (Google Cloud Core) 執行個體的 Google Cloud 區域。
- 僅限 Google Cloud CLI、Terraform 和 API 使用者: 複製或記下金鑰 ID (KMS_KEY_ID) 和金鑰位置,以及金鑰環的 ID (KMS_KEYRING_ID)。授予服務帳戶金鑰存取權時,您需要這項資訊。
- 僅限 Google Cloud CLI、Terraform 和 API 使用者: 授予服務帳戶金鑰存取權。
- 前往專案,然後建立 Looker (Google Cloud Core) 執行個體,並使用下列選項:
完成所有這些步驟後,Looker (Google Cloud Core) 執行個體就會啟用 CMEK。
事前準備
如果尚未設定環境,請務必完成設定,才能按照本頁面的指示操作。請按照本節的步驟操作,確認設定正確無誤。
- 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。注意:如果您不打算保留在這項程序中建立的資源,請建立新專案,而不要選取現有專案。完成這些步驟後,您就可以刪除專案,並移除與該專案相關聯的資源。
- 請確認您已為 Google Cloud 專案啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
- 安裝 Google Cloud CLI。
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
啟用 Cloud Key Management Service API。
啟用 Looker (Google Cloud Core) API。
必要的角色
如要瞭解設定 CMEK 時所需的角色,請參閱 Cloud Key Management Service 說明文件的「使用 IAM 控管存取權」頁面。
如要建立 Looker (Google Cloud Core) 執行個體,請確認您具備 Looker (Google Cloud Core) 執行個體所在專案的 Looker 管理員 IAM 角色。如要在 Google Cloud 控制台中為執行個體啟用 CMEK,請確認您對用於 CMEK 的金鑰具有 Cloud KMS CryptoKey Encrypter/Decrypter IAM 角色。
如要授予 Looker 服務帳戶 Cloud KMS 金鑰的存取權,您需要Cloud KMS 管理員 IAM 角色,才能存取使用的金鑰。
建立服務帳戶
如果您使用 Google Cloud CLI、Terraform 或 API 建立 Looker (Google Cloud Core) 執行個體,且尚未為該執行個體所在的 Google Cloud 專案建立 Looker 服務帳戶,則必須為該專案建立服務帳戶。如果您要在專案中建立多個 Looker (Google Cloud Core) 執行個體,同一個服務帳戶會套用至該專案中的所有 Looker (Google Cloud Core) 執行個體,因此您只需要建立一次服務帳戶。如果您使用控制台建立執行個體,設定「使用客戶代管加密金鑰」選項時,Looker (Google Cloud Core) 會自動建立服務帳戶,並授予該帳戶 CMEK 金鑰的存取權。
如要讓使用者管理服務帳戶,請先為使用者授予以下其中一種角色:
- 服務帳戶使用者 (
roles/iam.serviceAccountUser
):包括列出服務帳戶、取得服務帳戶詳細資料,以及模擬服務帳戶的權限。 - 服務帳戶管理員 (
roles/iam.serviceAccountAdmin
):包括列出服務帳戶及取得服務帳戶詳細資料的權限。也包括建立、更新及刪除服務帳戶的權限。
目前您只能使用 Google Cloud CLI 指令,建立客戶自行管理的加密金鑰所需的服務帳戶類型。如果您使用 Google Cloud 控制台,Looker (Google Cloud Core) 會自動為您建立這個服務帳戶。
gcloud
執行下列指令來建立服務帳戶:
gcloud beta services identity create \ --service=looker.googleapis.com \ --project=PROJECT_ID
將 PROJECT_ID
替換為 Looker (Google Cloud Core) 執行個體所在的專案。
這項指令會建立服務帳戶,並傳回服務帳戶名稱。在「授予服務帳戶金鑰存取權」程序中,您會使用這個服務帳戶名稱。
建立服務帳戶後,請等待幾分鐘,讓服務帳戶生效。
建立金鑰環和金鑰
您可以在與 Looker (Google Cloud Core) 執行個體相同的 Google Cloud 專案中建立金鑰,也可以在個別使用者專案中建立金鑰。Cloud KMS 金鑰環位置必須與要建立 Looker (Google Cloud Core) 執行個體的區域相符。多區域或全域金鑰無法使用。如果區域不相符,Looker (Google Cloud Core) 執行個體建立要求就會失敗。
按照「建立金鑰環」和「建立金鑰」說明文件頁面的指示,建立符合下列兩項條件的金鑰環和金鑰:
- 「金鑰環位置」欄位必須與您為 Looker (Google Cloud Core) 執行個體設定的區域一致。
- 「Purpose」欄位必須是「Symmetric encrypt/decrypt」。
如要瞭解如何輪替金鑰及建立新的金鑰版本,請參閱「輪替金鑰」一節。
複製或寫下 KMS_KEY_ID
和 KMS_KEYRING_ID
如果您使用 Google Cloud CLI、Terraform 或 API 設定 Looker (Google Cloud Core) 執行個體,請按照「取得 Cloud KMS 資源 ID」說明文件頁面的操作說明,找出您剛建立的金鑰環和金鑰的資源 ID。複製或記下金鑰的 ID (KMS_KEY_ID) 和位置,以及金鑰環的 ID (KMS_KEYRING_ID)。授予服務帳戶金鑰存取權時,您需要這項資訊。
授予服務帳戶金鑰存取權
只有在符合下列兩種情況時,才需要執行這項程序:
- 您使用 Google Cloud CLI、Terraform 或 API。
- 服務帳戶先前沒有取得金鑰的存取權。舉例來說,如果相同專案中已有使用相同金鑰的 Looker (Google Cloud Core) 執行個體,您就不需要授予存取權。或者,如果其他人已授予金鑰存取權,您就不需要授予存取權。
您必須對所用金鑰擁有 Cloud KMS 管理員 IAM 角色,才能授予服務帳戶存取權。
如要授予服務帳戶存取權,請按照下列步驟操作:
gcloud
gcloud kms keys add-iam-policy-binding KMS_KEY_ID \ --location=REGION \ --keyring=KMS_KEYRING_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
更改下列內容:
授予服務帳戶身分與存取權管理角色後,請稍待幾分鐘,讓權限生效。
建立啟用 CMEK 的 Looker (Google Cloud Core) 執行個體
如要在 Google Cloud 控制台中建立使用客戶代管加密金鑰的執行個體,請先按照先前「建立金鑰環和金鑰」一節中的步驟,在您要用於 Looker (Google Cloud Core) 執行個體的相同區域中,建立金鑰環和金鑰。接著,請使用下列設定,按照操作說明建立 Looker (Google Cloud Core) 執行個體。
如要建立具有 CMEK 設定的 Looker (Google Cloud Core) 執行個體,請選取下列任一選項:
主控台
- 請確認您在用於 CMEK 的金鑰上,具有「Cloud KMS CryptoKey Encrypter/Decrypter」IAM 角色。
- 在「建立執行個體」頁面的「版本」部分,您必須選取「企業」或「嵌入」版本,才能使用 CMEK。
- 在「建立執行個體」頁面的「加密」部分,選取「客戶管理的加密金鑰 (CMEK)」圓形按鈕。這時會顯示「選取客戶管理的金鑰」下拉式選單欄位。
- 在「選取客戶管理的金鑰」欄位中,設定要使用的金鑰。金鑰必須位於金鑰環中,且金鑰環的位置必須與您要建立的 Looker (Google Cloud Core) 執行個體位於相同區域,否則執行個體建立作業會失敗。您可以透過下列兩種方法選取金鑰:
- 從下拉式清單中選取金鑰名稱:Google Cloud 專案中的可用金鑰會顯示在下拉式清單中。選取金鑰後,按一下「確定」。
- 輸入金鑰的資源 ID:按一下「找不到您的金鑰嗎?輸入下拉式選單底部的金鑰資源 ID,系統會顯示「輸入金鑰資源 ID」對話方塊,您可以在其中輸入金鑰 ID。輸入 ID 後,請選取「儲存」。
- 選取金鑰後,系統會顯示訊息,要求您授予服務帳戶使用金鑰的權限。按一下「授予」按鈕。
- 如果服務帳戶沒有權限使用所選金鑰進行加密和解密,系統會顯示訊息。如果發生這種情況,請按一下「授權」,為所選 KMS 金鑰上的服務帳戶授予 Cloud KMS CryptoKey Encrypter/Decrypter IAM 角色。
- 完成 Looker (Google Cloud Core) 執行個體的所有設定後,請按一下「建立」。
gcloud
gcloud looker instances create INSTANCE_NAME \ --project=PROJECT_ID \ --oauth-client-id=OAUTH_CLIENT_ID\ --oauth-client-secret=OAUTH_CLIENT_SECRET \ --kms-key=KMS_KEY_ID --region=REGION \ --edition=EDITION [--consumer-network=CONSUMER_NETWORK --private-ip-enabled --reserved-range=RESERVED_RANGE] [--no-public-ip-enabled] [--public-ip-enabled]
更改下列內容:
INSTANCE_NAME
:Looker (Google Cloud Core) 執行個體的名稱,與執行個體網址無關PROJECT_ID
:您要建立 Looker (Google Cloud Core) 執行個體的 Google Cloud 專案名稱OAUTH_CLIENT_ID
和OAUTH_CLIENT_SECRET
:您設定 OAuth 用戶端時建立的 OAuth 用戶端 ID 和 OAuth 密鑰。建立執行個體後,請在 OAuth 用戶端的「已授權的重新導向 URI」部分輸入執行個體的網址。- KMS_KEY_ID:KMS 金鑰的 ID
REGION
:Looker (Google Cloud Core) 執行個體的代管區域。如需可用區域清單,請參閱「Looker (Google Cloud Core) 位置」說明文件頁面。EDITION
:如要啟用 CMEK,EDITION
必須為core-embed-annual
或core-enterprise-annual
CONSUMER_NETWORK
:您的虛擬私有雲網路或共用虛擬私有雲。如果您要建立私人連線 (PSA) 執行個體,就必須設定這個值。RESERVED_RANGE
:Google 會在虛擬私有雲中佈建子網路,供 Looker (Google Cloud Core) 執行個體使用,這個子網路的 IP 位址範圍。如果您要建立私人連線 (PSA) 執行個體,就必須設定這個值。
您可以加入下列旗標:
--private-ip-enabled
啟用私人連線。--public-ip-enabled
可啟用公開安全連線。--no-public-ip-enabled
會停用公開安全連線。
Terraform
使用下列 Terraform 資源,佈建採用私人網路連線的企業版 Looker (Google Cloud Core) 執行個體:
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
Looker (Google Cloud Core) 執行個體已啟用 CMEK。
查看已啟用 CMEK 的執行個體金鑰資訊
成功建立 Looker (Google Cloud Core) 執行個體後,您可以檢查是否已啟用 CMEK。
如要查看是否已啟用 CMEK,請選取下列其中一個選項:
主控台
- 前往 Google Cloud 控制台的「Looker Instances」頁面。
- 按一下執行個體名稱,開啟「Details」(詳細資料) 頁面。如果執行個體已啟用 CMEK,則「加密」列會指出執行個體使用的加密方式。「客戶自行管理的加密金鑰 (CMEK)」欄位會顯示金鑰 ID。
gcloud
gcloud looker instances describe INSTANCE_NAME --region=REGION --format config
更改下列內容:
INSTANCE_NAME
:Looker (Google Cloud Core) 執行個體的名稱,與執行個體網址無關- REGION:建立執行個體的區域
這項指令應會傳回 kmsKeyName
、kmsKeyNameVersion
和 kmsKeyState
,確認執行個體已設定 CMEK。
使用 Cloud External Key Manager (Cloud EKM)
如要保護 Looker (Google Cloud Core) 執行個體中的資料,您可以使用透過支援的外部金鑰管理合作夥伴代管的金鑰。詳情請參閱 Cloud External Key Manager 說明文件頁面,包括「注意事項」一節。
準備好建立 Cloud EKM 金鑰後,請參閱 Cloud External Key Manager 說明文件頁面的「運作方式」一節。建立金鑰後,請在建立 Looker (Google Cloud Core) 執行個體時提供金鑰名稱。
Google 無法控管外部金鑰管理合作夥伴系統中的金鑰供應情形。
輪替金鑰
建議您輪替金鑰,以提升安全性。每次輪替金鑰時,系統都會建立新的金鑰版本。如要進一步瞭解金鑰輪替,請參閱「金鑰輪替」說明文件頁面。
如果您輪替用於保護 Looker (Google Cloud Core) 執行個體的金鑰,仍須使用先前的金鑰版本,才能存取該金鑰版本使用期間建立的備份或匯出內容。因此,Google 建議您在輪替後至少保留先前的金鑰版本 45 天,確保這些項目仍可存取。金鑰版本預設會保留,直到停用或刪除為止。
停用及重新啟用金鑰版本
請參閱下列說明文件頁面:
如果用於保護 Looker (Google Cloud Core) 執行個體的金鑰版本遭到停用,Looker (Google Cloud Core) 執行個體就必須停止運作、清除記憶體中可能存在的任何未加密機密資料,並等待金鑰再次可用。程序如下:
- 用於保護 Looker (Google Cloud Core) 執行個體的金鑰版本已停用。
- 大約 15 分鐘內,Looker (Google Cloud 核心) 執行個體會偵測到金鑰版本已撤銷,並停止運作,清除記憶體中的所有加密資料。
- 執行個體停止運作後,對 Looker API 的呼叫會傳回錯誤訊息。
- 執行個體停止運作後,Looker (Google Cloud Core) UI 會傳回錯誤訊息。
- 如果重新啟用金鑰版本,您必須手動觸發執行個體的重新啟動。
如果停用金鑰版本後不想等待 Looker (Google Cloud Core) 執行個體自行停止,可以手動觸發執行個體重新啟動,讓 Looker (Google Cloud Core) 執行個體立即偵測到已撤銷的金鑰版本。
刪除金鑰版本
請參閱下列說明文件頁面:
如果用於保護 Looker (Google Cloud Core) 執行個體的金鑰版本遭到毀損,您將無法存取 Looker 執行個體。您必須刪除執行個體,且無法存取其中的資料。
疑難排解
本節說明在設定或使用啟用 CMEK 的執行個體時,如果收到錯誤訊息,可以嘗試哪些做法。
如果發生 Cloud KMS 錯誤,且缺少角色或權限,Looker (Google Cloud Core) 管理員作業 (例如建立或更新) 可能會失敗。常見的失敗原因包括缺少 Cloud KMS 金鑰版本、Cloud KMS 金鑰版本已停用或銷毀、存取 Cloud KMS 金鑰版本的 IAM 權限不足,或是 Cloud KMS 金鑰版本與 Looker (Google Cloud Core) 執行個體位於不同區域。請參閱下表,診斷及解決常見問題。
客戶管理的加密金鑰疑難排解表
錯誤訊息 | 可能原因 | 疑難排解策略 |
找不到每個產品和專案的服務帳戶 | 服務帳戶名稱有誤。 | 確認您為正確的使用者專案建立了服務帳戶。 |
無法授予服務帳戶存取權 | 使用者帳戶沒有授權存取這個金鑰版本的權限。 | 在使用者或服務帳戶中新增機構管理員角色。 |
Cloud KMS 金鑰版本已銷毀 | 金鑰版本已刪除。 | 如果金鑰版本已刪除,您就無法使用該版本加密或解密資料。您必須刪除 Looker (Google Cloud Core) 執行個體。 |
Cloud KMS 金鑰版本已停用 | 金鑰版本已停用。 | 重新啟用 Cloud KMS 金鑰版本。 |
使用 Cloud KMS 金鑰的權限不足 | 您用來在 Looker (Google Cloud Core) 執行個體上執行作業的使用者或服務帳戶缺少 cloudkms.cryptoKeyEncrypterDecrypter 角色,或是 Cloud KMS 金鑰版本不存在。
|
在使用者或服務帳戶中新增 如果帳戶中已有該角色,請參閱「建立金鑰環和金鑰」一節,瞭解如何建立新金鑰版本。然後再次完成執行個體建立步驟。 |
找不到 Cloud KMS 金鑰 | 金鑰版本不存在。 | 建立新的金鑰版本,然後再次完成執行個體建立步驟。請參閱「建立金鑰環和金鑰」一節。 |
Looker (Google Cloud Core) 執行個體和 Cloud KMS 金鑰版本位於不同區域 | Cloud KMS 金鑰版本和 Looker (Google Cloud 核心) 執行個體必須位於相同區域。如果 Cloud KMS 金鑰版本位於全域或多區域,則無法使用這項功能。 | 在要建立執行個體的相同區域中建立金鑰版本,然後再次完成執行個體建立步驟。請參閱「建立金鑰環和金鑰」一節。 |