使用 Cloud KMS Autokey 輕鬆加密資源

1. 簡介

Cloud KMS Autokey 可自動佈建及指派客戶管理加密金鑰 (CMEK),簡化建立及使用程序。使用 Autokey 時,您不必事先規劃及佈建金鑰環、金鑰和服務帳戶,Autokey 會在您建立資源時,依據需求產生金鑰,並依賴委派的權限,而非 Cloud KMS 管理員。

使用 Autokey 產生的金鑰,有助於您持續遵循資料安全性的業界標準和建議做法,包括 HSM 防護等級、權責劃分、金鑰輪替、位置和金鑰專用原則等。Autokey 會為與 Cloud KMS Autokey 整合的 Google Cloud 服務建立金鑰,這些金鑰會遵循一般和資源類型專屬的指南。使用 Autokey 建立的金鑰,與具有相同設定的其他 Cloud HSM 金鑰功能相同。

建構項目

在本程式碼研究室中,您將建立下列項目,使用 Cloud KMS Autokey 啟動受保護的資源:

  • 資料夾資源
  • 用來存放金鑰的專案
  • 服務代理人擔任金鑰管理助理
  • 用於存放受保護資源的專案
  • 以 Cloud KMS Autokey 加密的 BigQuery 資料集、永久磁碟和 Cloud Storage bucket

軟硬體需求

2. 建立資料夾

資料夾是 Cloud Platform 資源階層中的節點。資料夾可包含專案、其他資料夾,或是兩者兼具。機構資源可以使用資料夾,在階層中的機構資源節點下對專案進行分組。要建立資料夾:

  1. 前往 Google Cloud 控制台的「管理資源」 頁面
  2. 確認頁面頂端的機構下拉式清單中已選取機構資源名稱。
  3. 按一下「建立資料夾」

9328ef3bd4840817.png

  1. 選取標準資料夾

20a094fe0c7a0924.png

  1. 在「資料夾名稱」方塊中輸入新的資料夾名稱。在本實驗室中,請考慮使用「Autokey-Folder」
  2. 在「目的地」下方,按一下「瀏覽」,然後選取要在哪個機構資源或資料夾下建立新資料夾。
  3. 按一下「建立」。

3. 建立資源專案

請務必建立資源專案,其中包含您要使用 Cloud KMS Autokey 加密的資源,例如 BigQuery 資料集、永久磁碟和 Cloud Storage 值區。如果您嘗試在金鑰專案中建立受 Autokey 保護的資源,Autokey 會拒絕新的金鑰要求。如要建立資源專案,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「管理資源」 頁面
  2. 按一下「建立專案」。

93e4e224322c68a7.png

  1. 在頁面頂端的「選取機構」下拉式清單中,選取「Autokey-Folder」資料夾。
  2. 在顯示的「新增專案」視窗,輸入專案名稱並選取適當的帳單帳戶。在本實驗室中,請考慮使用「Autokey Encrypted Resources」
  3. 在「位置」方塊中,選取「Autokey-Folder」資料夾。該資源將成為新專案的階層父項。設定內容應類似下列所示:

187ece37daf50835.png

  1. 將專案 ID (上例中的專案 ID 為「causal-hour-43319-m4」,但您的 ID 會不同) 複製到您選擇的文字編輯器。
  2. 點選 [建立]
  3. 選取畫面右上角的 Cloud Shell 圖示

16c8476c4991f448.png

  1. Cloud Shell 啟用後,請執行下列指令,將 Autokey 專案 ID 儲存為變數:
export RESOURCE_PROJECT=<paste your Resource Project ID>

由於我的專案 ID 是「key-management-433319」,因此我的指令如下所示:

export AUTOKEY_PROJECT=causal-hour-43319-m4
  1. 執行下列指令,從主要專案執行指令:
gcloud config set project $RESOURCE_PROJECT

系統提示時,按一下「授權」授權 Cloud Shell

a6c755d4921bc728.png

  1. 由於這個專案會包含資源,因此我們需要為 Autokey 保護的服務啟用 API。執行下列指令:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com

4. 建立主要專案

建議您建立專案,用來存放 Autokey 建立的 Cloud KMS 資源。這就是我們接下來所稱的「主要專案」。您可以在要啟用 Autokey 的資料夾中建立金鑰專案。您不應在金鑰專案中建立其他資源。如果您嘗試在金鑰專案中建立受 Autokey 保護的資源,Autokey 會拒絕新的金鑰要求。如要建立金鑰專案,請按照下列指示操作:

  1. 前往 Google Cloud 控制台的「管理資源」 頁面
  2. 按一下「建立專案」。

93e4e224322c68a7.png

  1. 在頁面頂端的「選取機構」下拉式清單中,選取「Autokey-Folder」資料夾。
  2. 在顯示的「新增專案」視窗,輸入專案名稱並選取適當的帳單帳戶。在本實驗室中,請考慮「金鑰管理」
  3. 在「位置」方塊中,選取「Autokey-Folder」資料夾。該資源將成為新專案的階層父項。設定內容應類似下列所示:

157894b5c9048c06.png

  1. 將專案 ID (上例中的專案 ID 為「key-management-433319」,但您的 ID 會不同) 複製到您選擇的文字編輯器。
  2. 按一下「建立」。

5. 準備 Autokey 金鑰專案

現在已建立各個專案,接下來要設定金鑰專案,以使用 Cloud KMS Autokey。

  1. 選取畫面右上角的 Cloud Shell 圖示

16c8476c4991f448.png

  1. Cloud Shell 啟用後,請執行下列指令,將 Autokey 專案 ID 儲存為變數:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>

由於我的專案 ID 是「key-management-433319」,因此我的指令如下所示:

export AUTOKEY_PROJECT=key-management-433319
  1. 執行下列指令,從主要專案執行指令:
gcloud config set project $AUTOKEY_PROJECT

系統提示時,按一下「授權」授權 Cloud Shell

a6c755d4921bc728.png

  1. 執行下列指令,啟用 Cloud KMS API
gcloud services enable cloudkms.googleapis.com  kmsinventory.googleapis.com
  1. 執行下列指令,將專案編號儲存為名為 AUTOKEY_PROJECT_NUMBER 的變數
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
  1. 執行下列指令,將主體的電子郵件地址儲存為變數:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
  1. 將金鑰專案的 Cloud KMS 管理員權限授予 Cloud KMS 管理員使用者
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
    --role=roles/cloudkms.admin \
    --member=user:$KEY_ADMIN_EMAIL

6. 設定 Cloud KMS 服務代理

金鑰專案的 Cloud KMS 服務代理程式會代表 Cloud KMS 管理員建立金鑰,並在建立資源時套用 IAM 政策繫結。如要建立及指派金鑰,Cloud KMS 服務代理人必須具備 Cloud KMS 管理員權限。

  1. 使用下列指令找出機構 ID:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
  1. 複製機構 ID,這是以紅色醒目顯示的數字結果
  2. 將機構 ID 儲存為名為 ORG_ID 的變數:
export ORG_ID=<paste your Organization ID>
  1. 執行下列指令,建立 Cloud KMS 服務代理程式:
gcloud beta services identity create --service=cloudkms.googleapis.com \
    --project=$AUTOKEY_PROJECT_NUMBER
  1. 將 Cloud KMS 管理員角色授予服務代理:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
    --role=roles/cloudkms.admin \
    --member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
  1. 新增 IAM 政策繫結,即可查看 Cloud KMS 金鑰用量。「金鑰用量」會提供每把金鑰的相關資訊,包括受保護的資源、專案和使用金鑰的專屬 Google Cloud 產品數量。只要使用者在金鑰上具備 Cloud KMS 檢視者角色,就能查看這類詳細資料。執行下列指令:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
    --member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. 在機構資源中,將 Cloud KMS 組織服務代理 (cloudkms.orgServiceAgent) 角色授予 Cloud KMS 服務帳戶。
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. 如要讓使用者查看金鑰使用情形詳細資料,請在機構資源中授予 Cloud KMS 受保護的資源檢視者角色。
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="user:$KEY_ADMIN_EMAIL" \
    --role='roles/cloudkms.protectedResourcesViewer'

7. 授予 Autokey 使用者角色

開發人員必須先取得必要角色,才能使用 Autokey。您可以在資料夾層級或專案層級授予角色。開發人員在該資料夾或專案中建立資源時,可透過這個角色向 Cloud KMS 服務代理要求金鑰。

授予角色時,首先要儲存資料夾 ID。

  1. 使用下列指令找出資料夾 ID:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
  1. 複製資料夾 ID,也就是以紅色標示的部分
  2. 將資料夾 ID 儲存為名為 FOLDER_ID 的變數
export FOLDER_ID=<paste the folder ID>

在本實驗室中,我們將主要管理員定義為 Autokey 使用者。不過,在正式環境使用案例中,如果機構內有多位使用者,金鑰管理員應與使用 Autokey 的開發人員不同。

  1. 在資料夾層級授予 roles/cloudkms.autokeyUser 角色:
gcloud resource-manager folders add-iam-policy-binding \
    $FOLDER_ID --role=roles/cloudkms.autokeyUser \
    --member=user:$KEY_ADMIN_EMAIL

8. 在資源資料夾中啟用 Cloud KMS Autokey

在這個步驟中,您將在資源資料夾上啟用 Cloud KMS Autokey,並找出將包含該資料夾 Autokey 資源的 Cloud KMS 專案。在這個資料夾中啟用 Autokey 後,該資料夾內的所有資源專案都會啟用 Autokey。

  1. 前往 Google Cloud 控制台的 KMS 控制項頁面
  2. 按一下「選取資料夾」

785f338e1860029c.png

  1. 從內容挑選器中,選取要啟用 Autokey 的資料夾。這個資料夾與您先前建立的資料夾相同,內含資源專案和金鑰管理專案。內容應該會類似這樣:

f0ee5141dc6fa40e.png

  1. 按一下「啟用」。
  2. 按一下「瀏覽」選取金鑰專案
  3. 選取金鑰管理專案,然後按一下「提交」。

5acd9e68eb972e15.png

畫面上會顯示訊息,確認資料夾已啟用 Cloud KMS Autokey。KMS 控制項頁面應如下所示:

8bddb3d688ba842d.png

9. 使用 Cloud KMS Autokey 建立受保護的資源

Compute Engine 永久磁碟

Autokey 會為每個磁碟、映像檔和機器映像檔建立新金鑰,並儲存在與所建立資源相同的位置。

如要建立磁碟,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
  2. 按一下「建立磁碟」,然後輸入新磁碟的屬性。
  3. 在「Encryption」(加密) 底下,選取「Cloud KMS key」(Cloud KMS 金鑰)。

dcc63e9ae03c5fbe.png

  1. 在「金鑰類型」中選取「Cloud KMS with Autokey」,然後按一下「要求新金鑰」。系統會顯示訊息,指出車鑰已成功建立,可以開始使用。

4b2283a0d52cc98d.png

  1. 如要完成磁碟建立程序,請按一下「建立」。

您可以按照類似的程序建立受保護的 VM 執行個體、映像檔和機器映像檔資源。

Google Cloud Storage 值區

Autokey 會在與值區相同的位置建立新金鑰。Autokey 建立的金鑰會指派為 bucket 預設金鑰。

Autokey 不會為物件建立金鑰。根據預設,在值區中建立的物件會使用值區預設金鑰。如要使用非值區預設金鑰的金鑰加密物件,您可以手動建立 CMEK,並在建立物件時使用該金鑰。

  1. 前往 Google Cloud 控制台的「建立值區」頁面。
  2. 請挑選一個全域不重複的永久名稱。
  3. 選擇資料位置。
  4. 前往「選擇保護物件資料的方式」部分

e31bbeff5c7aabdf.png

  1. 按一下「選擇保護物件資料的方式」展開該部分

9c68ce19dac932de.png

  1. 展開「資料加密」部分,然後選取「Cloud KMS 金鑰」d8caca08891be9dc.png
  2. 在「金鑰類型」中選取「Cloud KMS with Autokey」,然後按一下「要求新金鑰」。系統會顯示訊息,指出車鑰已成功建立,可以開始使用。

a10d1ae243c44811.png

  1. 按一下「建立」,完成值區建立程序。如果系統顯示對話方塊,說明「系統會禁止公開存取」,請按一下「確認」。

BigQuery 資料集

針對每個新資料集,Autokey 會在與資源本身相同的位置建立新金鑰,做為資料集的預設金鑰。Autokey 不會為資料表、查詢、暫時資料表或模型建立金鑰。根據預設,這些資源會受到資料集預設金鑰保護。如要使用資料集預設金鑰以外的金鑰保護資料集中的資源,可以手動建立 CMEK,並在建立資源時使用該金鑰。

如要建立 BigQuery 資料集,您必須先具備 BigQuery 使用者角色。

  1. 返回 Cloud Shell
  2. 將 Cloud Shell 設為從資源專案執行指令
gcloud config set project $RESOURCE_PROJECT
  1. 執行下列指令,將專案編號儲存為名為 RESOURCE_PROJECT_NUMBER 的變數
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
  1. 授予自己 BigQuery 使用者角色
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
    --role=roles/bigquery.user \
    --member=user:$KEY_ADMIN_EMAIL

現在您已具備 BigQuery 使用者角色,可以建立資料集並使用 Autokey 保護資料集!

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。
  2. 按照建立資料集的說明操作,直到看到「進階選項」>「加密」為止。
  3. 在「加密」下方選取「Cloud KMS 金鑰」。
  4. 在「金鑰類型」中選取「Cloud KMS with Autokey」,然後按一下「要求新金鑰」。系統會顯示訊息,指出車鑰已成功建立,可以開始使用。
  5. 按一下「建立資料集」,即可完成資料集建立作業。

10. 探索安全金鑰

在本步驟中,您將前往「金鑰清單」頁面,查看 Cloud KMS Autokey 代您建立的金鑰。「金鑰清單」頁面會提供專案中加密金鑰的完整資訊。請注意,資料可能會延遲顯示。舉例來說,如果您建立新的受保護資源,受保護資源和相關聯的金鑰版本不會立即新增至「使用情況追蹤」分頁。如要瞭解更多限制,請參閱這篇文章

  1. 前往 Google Cloud 控制台的「金鑰清單」頁面。
  2. 選用:如要篩選金鑰清單,請在「篩選器」方塊中輸入搜尋字詞,然後按下 Enter 鍵。舉例來說,您可以依位置、金鑰環、狀態或其他金鑰屬性篩選。
  3. 按一下要查看使用資訊的金鑰名稱。
  4. 按一下「總覽」。請注意,您為每個建立的資源都有一組金鑰。每個金鑰名稱都包含金鑰保護的資源名稱 (例如「compute-disk」或「storage-bucket」)。Cloud KMS Autokey 可確保每個金鑰都會在建立 365 天後排定輪替時間,且每個金鑰都會指派「HSM」防護等級。

9acbce68acb653d4.png

  1. 按一下「使用量追蹤」分頁標籤。請注意顯示的資訊層級:這裡會顯示金鑰加密的每個資源,以及專案、位置和建立日期。
  2. 選用:如要篩選受保護資源清單,請在「篩選器」方塊中輸入搜尋字詞,然後按下 Enter 鍵。

7def6fe9a023d063.png

11. 恭喜

恭喜!您已成功建立 Google Cloud 資源,並透過 Cloud KMS Autokey 視需要自動加密這些資源!

您現在已瞭解設定 Autokey 的必要步驟,以及如何使用 Autokey,透過 Cloud KMS 金鑰自動加密資源。

12. 接下來要做什麼?

將資料上傳至 Autokey 加密資源

參考文件