使用 Cloud KMS 建立加密金鑰

本快速入門導覽課程說明如何在您擁有的專案中,使用 Cloud Key Management Service 建立及使用加密金鑰。這些操作說明會使用Google Cloud 控制台,在 Cloud KMS 中建立金鑰環、金鑰和金鑰版本。如需使用其他方法的操作說明,請參閱「Autokey 總覽」、「建立金鑰環」和「建立金鑰」。

本快速入門導覽課程使用指令列將要求傳送至 Cloud KMS API。如需使用用戶端程式庫將要求傳送至 Cloud KMS API 的程式設計範例,請參閱加密與解密一文。

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  6. 確認專案已啟用計費功能 Google Cloud

  7. 啟用 Cloud KMS API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable cloudkms.googleapis.com
  8. 將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令: roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    更改下列內容:

    • PROJECT_ID:專案 ID。
    • USER_IDENTIFIER:使用者帳戶的 ID。 例如:myemail@example.com
    • ROLE:授予使用者帳戶的 IAM 角色。
  9. 安裝 Google Cloud CLI。

  10. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  11. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  12. 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  13. 確認專案已啟用計費功能 Google Cloud

  14. 啟用 Cloud KMS API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable cloudkms.googleapis.com
  15. 將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令: roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    更改下列內容:

    • PROJECT_ID:專案 ID。
    • USER_IDENTIFIER:使用者帳戶的 ID。 例如:myemail@example.com
    • ROLE:授予使用者帳戶的 IAM 角色。

金鑰環與金鑰

如要加密及解密內容,您需要 Cloud KMS 金鑰,而該金鑰為金鑰環的一部分。

請建立名為 test 的金鑰環,以及名為 quickstart 的金鑰。如要進一步瞭解這些物件,以及這些物件彼此之間的關係,請參閱物件階層總覽

gcloud kms keyrings create "test" \
    --location "global"
gcloud kms keys create "quickstart" \
    --location "global" \
    --keyring "test" \
    --purpose "encryption"

您可以使用 list 選項,查看您剛建立的金鑰的名稱和中繼資料。

gcloud kms keys list \
    --location "global" \
    --keyring "test"

您應該會看到:

NAME                                                                      PURPOSE          PRIMARY_STATE
projects/PROJECT_ID/locations/global/keyRings/test/cryptoKeys/quickstart  ENCRYPT_DECRYPT  ENABLED

加密資料

您現在有了金鑰,就可以使用該金鑰來加密文字或二進位檔內容。

請將要加密的部分文字儲存在名為「mysecret.txt」的檔案中。

echo -n "Some text to be encrypted" > mysecret.txt

如要利用 gcloud kms encrypt 加密資料,請提供您的金鑰資訊、指定要加密的明文檔案名稱,然後指定將包含已加密內容的檔案名稱:

gcloud kms encrypt \
    --location "global" \
    --keyring "test" \
    --key "quickstart" \
    --plaintext-file ./mysecret.txt \
    --ciphertext-file ./mysecret.txt.encrypted

encrypt 方法會把已加密內容儲存在 --ciphertext-file 標記所指定的檔案中。

解密密文

如要利用 gcloud kms decrypt 解密資料,請提供您的金鑰資訊、指定要解密的已加密檔案 (密文檔案) 名稱,然後指定將包含已解密內容的檔案名稱:

gcloud kms decrypt \
    --location "global" \
    --keyring "test" \
    --key "quickstart" \
    --ciphertext-file ./mysecret.txt.encrypted \
    --plaintext-file ./mysecret.txt.decrypted

decrypt 方法會把已解密內容儲存在 --plaintext-file 標記所指定的檔案中。

如要為已加密內容解密,您必須使用之前用來為該內容加密的金鑰。

清除所用資源

為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。

列出適用於金鑰的版本:

gcloud kms keys versions list \
    --location "global" \
    --keyring "test" \
    --key "quickstart"

如要刪除版本,請執行下列指令,其中的 1 是要刪除的金鑰版本編號:

gcloud kms keys versions destroy 1 \
    --location "global" \
    --keyring "test" \
    --key "quickstart"

後續步驟