arrow_back

開始使用 Cloud KMS

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

開始使用 Cloud KMS

实验 45 分钟 universal_currency_alt 1 积分 show_chart 入门级
info This lab may incorporate AI tools to support your learning.
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP079

Google Cloud 自修研究室標誌

總覽

在本實驗室中,您會瞭解如何使用一些 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」圖示 「啟動 Cloud Shell」圖示

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

您在本工作階段中的 Cloud Platform 專案會設為「YOUR_PROJECT_ID」

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

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

  2. 輸出畫面應如下所示:

輸出內容:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = <project_ID>

輸出內容範例:

[core] project = qwiklabs-gcp-44776a13dea667a6 附註:如需有關 gcloud 的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(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 是有超過 600,000 封電子郵件的大型資料庫,由 Enron Corporation 的 158 位員工打造而成。這份資料已複製到 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」>「收件匣」。畫面應如下所示:

bucket 內容

注意: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 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

This content is not currently available

We will notify you via email, when it becomes available

Great!

We will contact you via email, if it becomes available