Create a Cloud Storage bucket.

Check my progress

/ 25

Create a Keyring and Crypto key.

Check my progress

/ 25

Encrypt Your Data with the Cloud KMS key and upload it on the storage bucket.

Check my progress

/ 25

Encrypt multiple files using KMS API and upload to cloud storage.

Check my progress

/ 25

This lab may incorporate AI tools to support your learning.

GSP079

Google Cloud 自學實驗室

總覽

在本實驗室中,您將探索 Google Cloud 安全性解決方案和 Privacy API 的進階功能。首先,您會設定安全的 Cloud Storage bucket,然後使用 Cloud Key Management Service 管理加密金鑰及保護資料。接著,您也會查看 Cloud Storage 稽核記錄,以監控資料的存取和修改情況。本實驗室將引導您處理節略版財務資料,並在加密後上傳至 Cloud Storage,確保機密性。

課程內容

在本實驗室中,您將瞭解如何執行下列工作:

  • 設定安全的 Cloud Storage bucket。
  • 使用 Key Management Service 控管金鑰與加密資料。
  • 查看 Cloud Storage 稽核記錄。

設定和需求

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

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

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

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

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

如何開始實驗室及登入 Google Cloud 控制台

  1. 按一下「Start Lab」按鈕。如果實驗室會產生費用,請在開啟的對話方塊中選取付款方式。右側的「Lab setup and access」面板會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 此實驗室所需的臨時憑證 (使用者名稱和密碼)
    • 完成此實驗室所需的其他資訊 (如有)

    請注意,實驗室計時器位於頁面頂端附近,會顯示剩餘時間。

  2. 按一下「Open Google Cloud console」。如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

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

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

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

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

    您也可以在「Lab setup and access」面板找到「Username」。

  4. 點選「下一步」

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

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

    您也可以在「Lab setup and access」面板找到「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」圖示

  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 命名,例如 -kms_lab (詳情請參閱 Cloud Storage bucket 的命名規範)。請在 Cloud Shell 執行下列指令,設定 bucket 名稱的變數:
BUCKET_NAME="{{{ project_0.project_id }}}-kms_lab"
  1. 執行下列指令來建立 bucket:
gsutil mb gs://${BUCKET_NAME}

執行這個指令也能確認 gsutil 指令列用戶端設定正確、驗證機制正常運作,而且您具備目前雲端專案的寫入權限。

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

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

建立 Cloud Storage bucket。

工作 2:查看資料

本實驗室使用的財務資料集內含一系列範例財務文件,這些資料已複製到 Cloud Storage bucket gs://${GOOGLE_CLOUD_PROJECT}-kms-lab-data/

  1. 執行下列指令,將其中一份來源檔案下載到本機,方便查看內容:
gsutil cp gs://${GOOGLE_CLOUD_PROJECT}-kms-lab-data/finance-dept/inbox/1.txt .
  1. 使用 tail 指令檢查下載的檔案,確認內容包含電子郵件文字:
tail 1.txt

輸出內容應如下所示:

Content: This is a sample financial document for encryption (File 1).

結果會顯示明文電子郵件檔案的內容。

工作 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。金鑰環很適合用來為金鑰分組。您可以依環境 (例如測試預備正式) 或其他邏輯概念,將金鑰分門別類。在本實驗室中,金鑰環的名稱為 labkey,CryptoKey 則是 qwiklab

  1. 在 Cloud Shell 執行下列指令,設定環境變數:
KEYRING_NAME=labkey 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. 在控制台,依序點選「導覽選單」圖示 >「安全性」>「Key Management」,開啟「金鑰管理」頁面。

透過 Key Management 網頁版使用者介面,您可以查看及管理 CryptoKey 和金鑰環;稍後管理權限時也是在這裡操作。

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

建立金鑰環和 CryptoKey。

工作 5:加密資料

接下來,請試著加密一些資料。

  1. 執行下列指令,以 base64 編碼您剛才查看的電子郵件內容:
PLAINTEXT=$(cat 1.txt | base64 -w0) 注意:Base64 編碼能將二進位資料轉為明文,方便傳送至 API。這個指令適用於圖片、影片或任何其他類型的二進位資料。

只要使用 encrypt 端點,就能將要加密的 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 屬性包含加密文字。

資料加密完成後,即可儲存為檔案並上傳至 Cloud Storage bucket。

  1. 現在要使用指令列公用程式 jq,從 JSON 回應擷取加密文字並存成檔案。您可以將先前呼叫的回應透過管道傳送至 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 版本資訊,因此呼叫 decrypt 端點時,不必另外指定版本。請執行下列指令:
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 權限,主要用來呼叫 encrypt 和 decrypt 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

CryptoKey 隸屬於金鑰環,金鑰環則隸屬於專案。在這種階層架構下,若使用者在較高層級擁有特定角色或權限,相同的權限將一併套用至子項資源。舉例來說,具備專案「擁有者」角色的使用者,也會是該專案中所有金鑰環和 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

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

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

選單會隨即開啟,供您查看剛才新增金鑰環的帳戶與權限。

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

您已經學會加密單一檔案並取得所需權限,現在可以執行指令碼,備份目錄中的所有檔案。在本例中,您要複製 finance-dept 的所有檔案,將其加密後上傳至 Cloud Storage bucket。

  1. 首先,將 finance-dept 的所有檔案複製到目前使用的目錄:
gsutil -m cp -r gs://${GOOGLE_CLOUD_PROJECT}-kms-lab-data/finance-dept .
  1. 接著,複製下列指令碼並貼到 Cloud Shell,將 finance-dept 目錄中的所有檔案備份及加密,然後儲存至 Cloud Storage bucket:
MYDIR=finance-dept 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 finance-dept/inbox/*.encrypted gs://${BUCKET_NAME}/finance-dept/inbox

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

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

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

待指令碼執行完畢,即可在控制台的左選單點選「Cloud Storage」,查看加密的檔案。

  1. 依序點選「導覽選單」圖示 >「Cloud Storage」>「Bucket」>「kms_lab_bucket」>「finance-dept」>「inbox」,找出所需檔案。畫面應如下所示:

bucket 內容

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

工作 8:查看 Cloud 稽核記錄

Google Cloud 稽核記錄包含「管理員活動」與「資料存取」兩種記錄串流。這些記錄由 Google Cloud 服務產生,可協助您掌握 Google Cloud 專案中,誰在何時、何地做了哪些操作。

  • 如要查看 KMS 資源的活動,請依序點選「導覽選單」圖示 >「Cloud 總覽」>「活動」分頁標籤。進入 Cloud 的「活動」使用者介面後,點選「查看 Logs Explorer」,然後在「資源類型」部分選取「Cloud KMS 金鑰環」,應該就會看見金鑰環的建立記錄,以及後續的所有變更。

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

內容回顧

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

工作 9:學以致用

請接受測驗,測試您對 Cloud KMS 瞭解多少。

恭喜!

在本實驗室中,您建立了包含 Cloud Storage bucket 的安全環境,並管理加密編譯金鑰,順利探索 Google Cloud Key Management Service 的功能。您將財務資料加密後再儲存以確保機密性,然後透過 Cloud 稽核記錄掌握金鑰的使用情形;這套完整流程示範了如何在雲端有效保護敏感資訊。

後續步驟/瞭解詳情

使用手冊上次更新日期:2026 年 5 月 20 日

實驗室上次測試日期:2026 年 1 月 8 日

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

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

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

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.