Create a Cloud Storage bucket

Check my progress

/ 20

Make file publicly readable

Check my progress

/ 20

Customer-supplied encryption keys (CSEK)

Check my progress

/ 20

Enable lifecycle management

Check my progress

/ 20

Enable versioning

Check my progress

/ 20

This lab may incorporate AI tools to support your learning.

總覽

Cloud Storage 是 Google Cloud 提供的基本資源,內含多種進階功能。在本實驗室中,您將練習運用許多能輔助設計的實用 Cloud Storage 功能。您可以透過下列幾種方式與 Cloud Storage 互動:Google Cloud 控制台、指令列工具 gsutil,或是適用於各種程式設計語言的 Cloud Storage 用戶端程式庫。

目標

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

  • 建立及使用 Cloud Storage bucket
  • 設定存取控管清單 (ACL) 來限制存取權
  • 使用自己的加密金鑰
  • 導入版本管理機制
  • 使用目錄同步功能

設定和需求

每個實驗室都會提供新的 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 產品和服務的選單,請點選左上角的「導覽選單」「導覽選單」圖示

工作 1:準備實驗室環境

在這項工作中,您要先建立 Cloud Storage bucket,然後下載範例檔案,供下一項工作使用。

建立 Cloud Storage bucket

  1. 前往 Google Cloud 控制台,依序點選「導覽選單」圖示 導覽選單圖示 >「Cloud Storage」>「Bucket」
注意:bucket 必須設定全域不重複的名稱。您可以在名稱中使用 PROJECT_ID_1 的一部分,確保名稱不會重複。舉例來說,如果 PROJECT_ID_1myproj-154920,bucket 名稱可以設為 storecore154920
  1. 點選「建立」
  2. 指定下列屬性,每個欄位設定完後點選「繼續」,其餘設定則保留預設值。
屬性 值 (輸入或選取)
名稱 輸入全域不重複的名稱
位置類型 區域
區域
存取控管 精細 (除了 bucket 層級權限,也會控管物件層級權限)
  1. 點選「建立」
  2. 如果看到「系統會禁止公開存取」的提示訊息,請取消勾選強制禁止公開存取這個 bucket」,然後點選「確認」
  3. 請記下 bucket 名稱,實驗室的後續步驟會用到這個名稱,屆時將稱為 [BUCKET_NAME_1]

點選「Check my progress」,確認目標已達成。 建立 Cloud Storage bucket

使用 CURL 下載範例檔案並複製兩份

  1. 在 Cloud 控制台,點選「啟用 Cloud Shell」圖示 Cloud Shell
  2. 如果出現提示訊息,請依序點選「繼續」>「授權」
  3. 將 [BUCKET_NAME_1] 保存在環境變數中:
export BUCKET_NAME_1=在這裡輸入bucket 名稱 1
  1. 使用 echo 進行驗證:
echo $BUCKET_NAME_1
  1. 執行下列指令,下載範例檔案 (這個範例檔案是公開的 Hadoop 說明文件 HTML 檔案):
curl \ https://hadoop.apache.org/docs/current/\ hadoop-project-dist/hadoop-common/\ ClusterSetup.html > setup.html
  1. 執行下列指令來複製檔案:
cp setup.html setup2.html cp setup.html setup3.html

工作 2:存取控管清單 (ACL)

在這項工作中,您將設定 ACL 來限制誰能存取複製到 Cloud Storage bucket 的檔案。

將檔案複製到 bucket 並設定 ACL

  1. 執行下列指令,將第一個檔案複製到 bucket:
gcloud storage cp setup.html gs://$BUCKET_NAME_1/
  1. 執行下列指令,取得指派給 setup.html 的預設存取清單:
gcloud storage objects get-iam-policy gs://$BUCKET_NAME_1/setup.html > acl.txt cat acl.txt
  1. 執行下列指令,將存取清單設為私人並確認結果:
gcloud storage objects update gs://$BUCKET_NAME_1/setup.html --predefined-acl=private gcloud storage objects get-iam-policy gs://$BUCKET_NAME_1/setup.html > acl2.txt cat acl2.txt
  1. 執行下列指令來更新存取清單,將檔案設為可公開讀取:
gcloud storage objects add-iam-policy-binding gs://$BUCKET_NAME_1/setup.html \ --member="allUsers" \ --role="roles/storage.legacyObjectReader" gcloud storage objects get-iam-policy gs://$BUCKET_NAME_1/setup.html > acl3.txt cat acl3.txt

點選「Check my progress」,確認目標已達成。 將檔案設定為可公開讀取

在 Cloud 控制台檢視檔案

  1. 前往 Google Cloud 控制台,依序點選「導覽選單」圖示 導覽選單圖示 >「Cloud Storage」>「Bucket」
  2. 點選「[BUCKET_NAME_1]」
  3. 確認 setup.html 檔案的「公開存取權」有可用的「公開連結」
注意:如果無法查看公開連結,請重新整理頁面。

刪除本機檔案並從 Cloud Storage 複製還原

  1. 返回「Cloud Shell」。如有需要,請點選「啟用 Cloud Shell」圖示 Cloud Shell
  2. 執行下列指令,刪除設定檔案:
rm setup.html
  1. 執行下列指令,確認檔案已刪除:
ls
  1. 執行下列指令,從 bucket 再次複製檔案:
gcloud storage cp gs://$BUCKET_NAME_1/setup.html setup.html

工作 3:客戶提供的加密金鑰 (CSEK)

在這項工作中,您要產生一組 CSEK 金鑰,將儲存在 Cloud Storage bucket 的檔案加密。

產生 CSEK 金鑰

在接下來的步驟,您需要使用 AES-256 base-64 金鑰。

  1. 執行下列指令來建立金鑰:
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'

結果 (輸出內容範例)

b'tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=\n'
  1. 從指令輸出內容複製產生的金鑰值,不要複製 b'\n'。金鑰格式應該是 tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=

修改 boto 檔案

加密控制選項包含在名為 .boto 的 gsutil 設定檔中。

  1. 執行下列指令,檢視並開啟 boto 檔案:
ls -al nano .boto

注意:如果 .boto 檔案是空的,請按下 Ctrl+X 鍵關閉 nano 編輯器,然後使用 gsutil config -n 指令產生新的 .boto 檔案。接著,請使用上述指令,再次嘗試開啟檔案。

如果 .boto 檔案依然是空的,您可能需要使用 gsutil version -l 指令找出檔案。
  1. 找到「#encryption_key=」這行程式碼。
注意:nano 編輯器底部提供快速指令,方便您迅速找到檔案。使用 Where Is 快速指令,即可迅速找到 #encryption_key= 行。
  1. 移除 # 字元,將該行程式碼取消註解,然後把先前產生的金鑰貼到末端。

範例

變更前: # encryption_key= 變更後: encryption_key=tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。

上傳其餘設定檔案 (已加密) 並在 Cloud 控制台確認

  1. 返回 Cloud 控制台。

  2. 執行下列指令,上傳其餘 setup.html 檔案:

gsutil kms encryption -d gs://$BUCKET_NAME_1 gcloud storage cp setup2.html gs://$BUCKET_NAME_1/ gcloud storage cp setup3.html gs://$BUCKET_NAME_1/
  1. 點選「[BUCKET_NAME_1]」。您會看到 setup2.htmlsetup3.html 檔案都已由客戶加密。

點選「Check my progress」,確認目標已達成。 客戶提供的加密金鑰 (CSEK)

刪除本機檔案、複製新檔案,並驗證加密檔案

  1. 在 Cloud Shell 執行下列指令,刪除本機檔案:
rm setup*
  1. 執行下列指令,從 bucket 再次複製檔案:
gcloud storage cp gs://$BUCKET_NAME_1/setup* ./
  1. 執行下列指令來串連加密檔案,查看是否已複製成功:
cat setup.html cat setup2.html cat setup3.html

工作 4:輪換 CSEK 金鑰

在這項工作中,您將輪換用來加密 Cloud Storage 資料的 CSEK,持續確保資料安全。

將目前的 CSEK 加密金鑰變更為解密金鑰

  1. 執行下列指令,開啟 .boto 檔案:
nano .boto
  1. 在目前的 encryption\_key 行開頭加上 # 字元,將該行註解排除。
注意:nano 編輯器底部提供快速指令,方便您迅速找到檔案。使用 Where Is 快速指令,即可迅速找到 encryption_key= 行。
  1. 移除 # 字元來取消註解 decryption\_key1,然後將 encryption\_key 行目前的金鑰複製到 encryption\_key1 行。

結果 (輸出內容範例)

變更前: encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= # decryption_key1= 變更後: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。
注意:實務中,您應刪除 encryption_key 行的舊 CSEK 金鑰。

產生另一個 CSEK 金鑰並新增到 boto 檔案

  1. 執行下列指令來產生新的金鑰:
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
  1. 從指令輸出內容複製產生的金鑰值,不要複製 b'\n'。金鑰格式應該是 tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
  2. 執行下列指令,開啟 boto 檔案:
nano .boto
  1. 取消註解加密金鑰,並將新的金鑰值貼入 encryption_key=

結果 (輸出內容範例)

變更前: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= 變更後: encryption_key=HbFK4I8CaStcvKKIx6aNpdTse0kTsfZNUjFpM+YUEjY=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。

重寫檔案 1 的金鑰,再將舊的解密金鑰設為註解來排除

如果檔案已加密,重寫檔案就是指使用先前設定的 decryption_key1 來解密,再使用新的 encryption_key 為檔案加密。

您將重寫 setup2.html 的金鑰,但 setup3.html 的金鑰維持不變,這樣就能觀察未適當輪換金鑰會發生什麼情況。

  1. 執行下列指令:
gcloud storage objects update gs://$BUCKET_NAME_1/setup2.html
  1. 執行下列指令,開啟 boto 檔案:
nano .boto
  1. 在目前的 decryption\_key1 行加回 # 字元,將該行設為註解來排除。

結果 (輸出內容範例)

變更前: decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= 變更後: # decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。
注意:實務中,您應刪除 decryption_key1 行的舊 CSEK 金鑰。

下載 setup2 和 setup3

  1. 執行下列指令,下載 setup2.html 檔案:
gcloud storage cp gs://$BUCKET_NAME_1/setup2.html recover2.html
  1. 執行下列指令,下載 setup3.html 檔案:
gcloud storage cp gs://$BUCKET_NAME_1/setup3.html recover3.html 注意:發生這樣的情況,是因為沒有使用新金鑰重寫 setup3.html,因此無法再將 setup3.html 解密,複製作業也會失敗。

您已成功輪換 CSEK 金鑰。

工作 5:啟用生命週期管理功能

在這項工作中,您將啟用 Cloud Storage bucket 的生命週期管理功能,在指定時間過後自動刪除物件。

查看 bucket 目前的生命週期政策

  • 執行下列指令,查看目前的生命週期政策:
gcloud storage buckets describe gs://$BUCKET_NAME_1 --format="json(lifecycle)" 注意:目前沒有生命週期政策,您將在後續步驟建立。

建立 JSON 生命週期政策檔案

  1. 執行下列指令來建立檔案,並命名為 life.json
nano life.json 注意:您也可以使用 Cloud Shell 編輯器建立這個檔案。
  1. 將下列值貼入 life.json 檔案:
{ "rule": [ { "action": {"type": "Delete"}, "condition": {"age": 31} } ] } 注意:這些指令要求 Cloud Storage 在 31 天後刪除物件。
  1. 依序按下 Ctrl+OEnter 鍵儲存檔案,然後按下 Ctrl+X 退出 nano 編輯器。

設定並驗證政策

  1. 執行下列指令來設定政策:
gcloud storage buckets update gs://$BUCKET_NAME_1 --lifecycle-file=life.json
  1. 執行下列指令來驗證政策:
gcloud storage buckets describe gs://$BUCKET_NAME_1 --format="json(lifecycle_config)"

點選「Check my progress」,確認目標已達成。 啟用生命週期管理功能

工作 6:啟用版本管理功能

在這項工作中,您將為 Cloud Storage bucket 啟用版本管理功能,以免意外刪除或修改資料。

查看 bucket 的版本管理狀態並啟用版本管理功能

  1. 執行下列指令,查看 bucket 目前的版本管理狀態:
gcloud storage buckets describe gs://$BUCKET_NAME_1 --format="json(versioning)" 注意:如果政策已暫停,代表該政策未啟用。
  1. 執行下列指令,啟用版本管理功能:
gcloud storage buckets update gs://$BUCKET_NAME_1 --versioning
  1. 執行下列指令,確認版本管理功能已啟用:
gcloud storage buckets describe gs://$BUCKET_NAME_1 --format="json(versioning_enabled)"

點選「Check my progress」,確認目標已達成。 啟用版本管理功能

在 bucket 建立多個版本的範例檔案

  1. 檢查範例檔案的大小:
ls -al setup.html
  1. 開啟 setup.html 檔案:
nano setup.html
  1. 在 setup.html 檔案中刪除任意 5 行程式碼,變更檔案大小。
  2. 依序按下 Ctrl+OEnter 鍵儲存檔案,然後按下 Ctrl+X 退出 nano 編輯器。
  3. 使用 -v 版本管理選項,將檔案複製到 bucket:
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
  1. 開啟 setup.html 檔案:
nano setup.html
  1. 再次從 setup.html 檔案中刪除 5 行程式碼,變更檔案大小。
  2. 依序按下 Ctrl+OEnter 鍵儲存檔案,然後按下 Ctrl+X 退出 nano 編輯器。
  3. 使用 -v 版本管理選項,將檔案複製到 bucket:
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1

列出所有檔案版本

  1. 執行下列指令,列出檔案的所有版本:
gcloud storage ls -a gs://$BUCKET_NAME_1/setup.html
  1. 反白選取並複製最舊版本 (即第一列) 的檔案名稱,後續步驟會將這個版本稱為 [VERSION_NAME]。
注意:請務必複製檔案的完整路徑,開頭為 gs://
  1. 將版本值保存在環境變數 [VERSION_NAME] 中。
export VERSION_NAME=在這裡輸入版本名稱
  1. 使用 echo 進行驗證:
echo $VERSION_NAME

結果 (輸出內容範例)

gs://BUCKET_NAME_1/setup.html#1584457872853517

下載最舊的原始檔案版本並驗證復原作業

  1. 下載檔案的原始版本:
gcloud storage cp $VERSION_NAME recovered.txt
  1. 執行下列指令,驗證復原作業:
ls -al setup.html ls -al recovered.txt 注意:透過備份版本將原始檔案復原後,您會發現原始版本的檔案大小比目前版本更大,這是因為您先前刪除了幾行程式碼。

工作 7:將目錄同步到 bucket

在這項工作中,您要使用 gsutil rsync 指令,將本機目錄及其子目錄同步到 Cloud Storage bucket。

建立巢狀結構目錄並同步到 bucket

請建立巢狀結構的目錄,方便觀察將目錄反覆複製到 bucket 的情況。

  1. 執行下列指令:
mkdir firstlevel mkdir ./firstlevel/secondlevel cp setup.html firstlevel cp setup.html firstlevel/secondlevel
  1. 執行下列指令,在 VM 和 bucket 中同步 firstlevel 目錄:
gcloud storage rsync ./firstlevel gs://$BUCKET_NAME_1/firstlevel --recursive

查看結果

  1. 前往 Google Cloud 控制台,依序點選「導覽選單」圖示 導覽選單圖示 >「Cloud Storage」>「Bucket」
  2. 點選「[BUCKET_NAME_1]」,找到 bucket 中的子資料夾。
  3. 依序點選「/firstlevel」>「/secondlevel」
  4. 比較 Cloud 控制台顯示的內容和下列指令的結果:
gcloud storage ls -r gs://$BUCKET_NAME_1/firstlevel
  1. 退出 Cloud Shell:
exit

工作 8:回顧

在本實驗室中,您學到如何建立和使用 bucket 與物件,並認識了下列 Cloud Storage 功能:

  • CSEK:客戶提供的加密金鑰
  • 使用自己的加密金鑰
  • 輪換金鑰
  • ACL:存取控管清單
  • 將 ACL 設為私人並改為公開
  • 生命週期管理
  • 設定政策以在 31 天後刪除物件
  • 版本管理
  • 建立版本及還原先前版本
  • 目錄同步處理
  • 反覆將 VM 目錄同步到 bucket

關閉研究室

如果您已完成實驗室,請點選「End Lab」。Google Skills 會清除您使用的資源和帳戶。

您可以為實驗室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」分頁提交。

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.