arrow_back

開始使用 Cloud KMS

登录 加入
访问 700 多个实验和课程

開始使用 Cloud KMS

实验 45 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP079

總覽

在本實驗室中,您會瞭解如何使用一些 Google Cloud 安全性解決方案及 Privacy API 的進階功能,包括:

  • 設定安全的 Cloud Storage bucket
  • 使用金鑰管理服務控管金鑰和已加密資料
  • 查看 Cloud Storage 稽核記錄

您要使用 Enron Corpus 的節略版資料,將其加密後載入 Cloud Storage。

課程內容

  • 如何使用 Cloud Key Management Service (KMS) 加密資料及管理加密金鑰。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

工作 1:建立 Cloud Storage bucket

為了在本實驗室中儲存資料,您需要自行建立 Cloud Storage bucket。

  1. 為您的 Cloud Storage bucket 命名,例如 -enron_corpus。如想進一步瞭解如何為 bucket 命名,請參閱 Cloud Storage bucket 的命名規範。在 Cloud Shell 中執行下列指令,設定 bucket 名稱中的變數:
BUCKET_NAME="{{{ project_0.project_id }}}-enron_corpus"
  1. 接著執行下列指令來建立 bucket:
gsutil mb gs://${BUCKET_NAME}

執行這個指令也可確認 gsutil 指令列用戶端是否妥善設定、驗證機制是否正常運作,以及您是否具備所需雲端專案的寫入權限。

  1. bucket 建立完成後,請繼續下一個步驟,下載 Enron Corpus。

點選「Check my progress」確認目標已達成。

建立 Cloud Storage bucket。

工作 2:查看資料

Enron Corpus 是大型資料庫,含有 Enron Corporation 158 位員工往來的電子郵件,數量超過 600,000 封。這份資料已複製到 Cloud Storage bucket gs://enron_emails/

  1. 執行下列指令,將其中一份來源檔案下載到本機,以便查看檔案內容:
gsutil cp gs://enron_emails/allen-p/inbox/1. .
  1. 現在 tail 已下載檔案,確認是否含有電子郵件文字內容:
tail 1.

您應該會收到下列輸出內容:

Attached is the Delta position for 1/18, 1/31, 6/20, 7/16, 9/24 << File: west_delta_pos.xls >> Let me know if you have any questions.

結果應該會顯示純文字電子郵件檔案的內容。您要尋找的檔案有兩種:純文字電子郵件檔案與圖片檔。如果您有興趣,也可以嘗試使用相同機制查看其他檔案的內容。

工作 3:啟用 Cloud KMS

Cloud KMS 是 Google Cloud 的加密編譯金鑰管理服務。您需要先在專案中啟用 KMS 才能使用這項服務。在本實驗室中,您佈建的 KMS 應該已啟用。您可以使用 gcloud CLI 指令,確認 KMS 是否啟用。

  • 在 Cloud Shell 工作階段中執行下列指令:
gcloud services enable cloudkms.googleapis.com 注意:您也可以使用 Cloud 控制台使用者介面,為專案啟用 KMS 和其他服務。

您應該不會收到任何輸出內容。現在 Cloud KMS 已在您的專案中啟用!

工作 4:建立金鑰環和 Cryptokey

為了加密資料,您必須建立金鑰環和 CryptoKey。金鑰環很適合用來分組金鑰。分組方式可以是環境 (例如測試預備正式),或其他分組依據。本實驗室將金鑰環稱為 test,CryptoKey 則稱為 qwiklab

  1. 在 Cloud Shell 中執行下列指令,設定環境變數:
KEYRING_NAME=test CRYPTOKEY_NAME=qwiklab
  1. 執行 gcloud 指令來建立金鑰環。本實驗室會使用「全域」位置,但您也可以設為特定區域:
gcloud kms keyrings create $KEYRING_NAME --location global
  1. 接下來使用新的金鑰環,建立 qwiklab CryptoKey:
gcloud kms keys create $CRYPTOKEY_NAME --location global \ --keyring $KEYRING_NAME \ --purpose encryption 注意:Cloud KMS 中的 CryptoKey 和金鑰環無法刪除!

您應該不會看到任何輸出內容。就這樣,您已成功建立金鑰環 和 CryptoKey!

  1. 在控制台中,依序前往「導覽選單」>「安全性」>「金鑰管理」,開啟金鑰管理服務。

您可以在金鑰管理服務的網頁版使用者介面中,查看及管理 CryptoKey 和金鑰環。之後您管理權限時,會用到這個使用者介面。

點選「Check my progress」確認目標已達成。

建立金鑰環和 Cryptokey。

工作 5:加密資料

接著,嘗試加密一些資料!

  1. 執行下列指令,使用您先前查看的電子郵件內容,並透過 base64 技術將其編碼:
PLAINTEXT=$(cat 1. | base64 -w0) 注意:Base64 編碼技術可將二進位資料以明文方式傳送至 API。這項指令適用於圖片、影片或其他類型的二進位資料。

使用加密端點,您就可以將想加密的 Base64 編碼文字傳送至指定金鑰。

  1. 執行以下指令:
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type: application/json" 注意:每次 encrypt 動作都會傳回不同的結果,即便使用相同的文字內容和金鑰也一樣。

回應會是 JSON 酬載,包含 ciphertext 屬性的加密文字內容。

  1. 您的資料已加密,接著可以儲存至檔案,並上傳至 Cloud Storage bucket。如要從 JSON 回應擷取加密文字內容,並將其儲存至檔案,請使用指令列公用程式 jq。先前呼叫的回應可以傳輸至 jq,將 ciphertext 屬性剖析至 1.encrypted 檔案。執行以下指令:
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type:application/json" \ | jq .ciphertext -r > 1.encrypted
  1. 如要驗證已加密資料是否可解密,請呼叫 decrypt 端點,驗證解密後的文字內容是否與原先的電子郵件相符。已加密資料含有加密該資料的 CryptoKey 版本資訊,因此特定版本不會提供給解密端點。執行以下指令:
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:decrypt" \ -d "{\"ciphertext\":\"$(cat 1.encrypted)\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type:application/json" \ | jq .plaintext -r | base64 -d 注意:通常解密會在應用程式層執行。如想瞭解各個程式設計語言的資料加密/解密逐步操作說明,請參閱 Cloud KMS 快速入門導覽課程
  1. 您已確認文字內容加密成功,接著要將加密檔案上傳至 Cloud Storage bucket。
gsutil cp 1.encrypted gs://${BUCKET_NAME}

點選「Check my progress」確認目標已達成。

使用 Cloud KMS 金鑰加密資料,然後將其上傳到儲存空間 bucket。

工作 6:設定 IAM 權限

在 KMS 中有兩項要注意的主要權限,分別為可讓使用者或服務帳戶管理 KMS 資源的權限,以及透過金鑰加密及解密資料的權限。

管理金鑰的權限是 cloudkms.admin,具備此權限的任何人都可以建立金鑰環,以及建立、修改、停用和刪除 CryptoKey。加密及解密權限是 cloudkms.cryptoKeyEncrypterDecrypter,用於呼叫加密及解密 API 端點。

在這項練習中,您要將 IAM 權限指派給現有的授權使用者。

  1. 如要取得現有的授權使用者,請執行下列指令:
USER_EMAIL=$(gcloud auth list --limit=1 2>/dev/null | grep '@' | awk '{print $2}')
  1. 接著,將管理 KMS 資源的權限指派給該使用者。執行下列 gcloud 指令即可指派 IAM 權限,用於管理您剛才建立的金鑰環:
gcloud kms keyrings add-iam-policy-binding $KEYRING_NAME \ --location global \ --member user:$USER_EMAIL \ --role roles/cloudkms.admin

由於 CryptoKeys 隸屬於金鑰環,而金鑰環隸屬於專案,若使用者具備這個階層中的高層級特定角色或權限,對子資源也會具備相同權限。舉例來說,如果某位使用者具備專案的「擁有者」角色,則也會成為該專案中所有金鑰環和 CryptoKey 的擁有者。同樣的,如果使用者獲派金鑰環的 cloudkms.admin 角色,對該金鑰環中的 CryptoKey 也會具備相關權限。

如果沒有 cloudkms.cryptoKeyEncrypterDecrypter 權限,授權使用者就無法使用金鑰加密/解密資料。

  1. 執行下列 gcloud 指令來指派 IAM 權限,加密及解密所建金鑰環 CryptoKey 的資料:
gcloud kms keyrings add-iam-policy-binding $KEYRING_NAME \ --location global \ --member user:$USER_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter

現在您可以在「金鑰服務」的「加密編譯金鑰」部分查看已指派的權限。

  1. 勾選金鑰環 (test) 名稱旁的方塊,然後點選右側資訊面板的「主體」

系統會開啟選單,您可以針對剛才建立的金鑰環查看帳戶和權限。

工作 7:透過指令列備份資料

您已瞭解如何加密單一檔案,也具備相關權限,接著可以執行指令碼來備份目錄中的所有檔案。本示例會複製 allen-p 的所有郵件,將其加密後上傳至 Cloud Storage bucket。

  1. 首先,將 allen-p 所有的電子郵件複製到您現有的工作目錄:
gsutil -m cp -r gs://enron_emails/allen-p .
  1. 接著複製下列指令碼並貼到 Cloud Shell,備份並加密 allen-p 目錄中的所有檔案,儲存至 Cloud Storage bucket:
MYDIR=allen-p FILES=$(find $MYDIR -type f -not -name "*.encrypted") for file in $FILES; do PLAINTEXT=$(cat $file | base64 -w0) curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type:application/json" \ | jq .ciphertext -r > $file.encrypted done gsutil -m cp allen-p/inbox/*.encrypted gs://${BUCKET_NAME}/allen-p/inbox

這項指令碼會逐一處理指定目錄中的所有檔案,使用 KMS API 加密檔案,並上傳至 Cloud Storage。

點選「Check my progress」確認目標已達成。

使用 KMS API 加密多個檔案,並上傳到 Cloud Storage。

指令碼執行完畢後,您可以在控制台的左選單中點選「Storage」,查看已加密的檔案。

  1. 如要找出檔案,請依序前往「導覽選單」>「Cloud Storage」>「Bucket」>「YOUR_BUCKET」>「allen-p」>「inbox」。畫面應如下所示:

注意:Cloud Storage 支援伺服器端加密,可以為資料設定金鑰輪替機制,此為在 Cloud Storage 中加密資料的建議做法。以上範例僅供示範。

工作 8:查看 Cloud 稽核記錄

Google Cloud 稽核記錄包含管理員活動與資料存取兩種記錄串流,兩者皆由 Google Cloud 服務產生,可協助您瞭解 Google Cloud 專案中相關人事時地物的問題。

  • 如要查看 KMS 中資源的活動,請依序點選「導覽選單」>「Cloud 總覽」>「活動」分頁。您會前往 Cloud 活動使用者介面,接著點選「View Log Explorer」,選取「Cloud KMS 金鑰環」做為 Resource Type,您應該會看到所有建立的金鑰環,以及對其所做的所有變更。

現在您已使用 KMS 加密資料,並將其上傳至 Cloud Storage!

內容回顧

  • 使用 IAM 管理 KMS 權限。
  • 使用 KMS 加密資料。
  • 使用 Cloud Storage 儲存已加密資料。
  • 使用 Cloud 稽核記錄功能,查看所有 CryptoKeys 和金鑰環的活動。

工作 9:學以致用

進行測驗,測試您對 Cloud KMS 的瞭解程度。

恭喜!

您已瞭解如何使用 Cloud Key Management Service (KMS) 加密資料及管理加密金鑰。

後續行動/其他資源

使用手冊上次更新日期:2024 年 4 月 15 日

實驗室上次測試日期:2023 年 8 月 31 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。