使用 Cloud KMS 建立加密金鑰
本快速入門導覽課程說明如何在您擁有的專案中,使用 Cloud Key Management Service 建立及使用加密金鑰。這些操作說明會使用Google Cloud 控制台,在 Cloud KMS 中建立金鑰環、金鑰和金鑰版本。如需使用其他方法的操作說明,請參閱「Autokey 總覽」、「建立金鑰環」和「建立金鑰」。
本快速入門導覽課程使用指令列將要求傳送至 Cloud KMS API。如需使用用戶端程式庫將要求傳送至 Cloud KMS API 的程式設計範例,請參閱加密與解密一文。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 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 專案名稱。
啟用 Cloud KMS API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable cloudkms.googleapis.com
-
將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令:
roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecryptergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
更改下列內容:
PROJECT_ID:專案 ID。USER_IDENTIFIER:使用者帳戶的 ID。 例如:myemail@example.com。ROLE:授予使用者帳戶的 IAM 角色。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 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 專案名稱。
啟用 Cloud KMS API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable cloudkms.googleapis.com
-
將角色授予使用者帳戶。針對下列每個 IAM 角色,執行一次下列指令:
roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecryptergcloud 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.encryptedencrypt 方法會把已加密內容儲存在 --ciphertext-file 標記所指定的檔案中。
解密密文
如要利用 gcloud kms decrypt 解密資料,請提供您的金鑰資訊、指定要解密的已加密檔案 (密文檔案) 名稱,然後指定將包含已解密內容的檔案名稱:
gcloud kms decrypt \
--location "global" \
--keyring "test" \
--key "quickstart" \
--ciphertext-file ./mysecret.txt.encrypted \
--plaintext-file ./mysecret.txt.decrypteddecrypt 方法會把已解密內容儲存在 --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"