本頁面說明如何使用 Cloud Key Management Service (Cloud KMS) 執行下列對稱金鑰作業:
- 使用 Cloud KMS 金鑰加密文字或二進位檔內容 (明文)。
- 解密使用 Cloud KMS 金鑰加密的密文。
如果您要使用非對稱金鑰進行加密,請參閱「透過非對稱金鑰加密及解密資料」一文。如要瞭解原始對稱加密,請參閱「原始對稱加密」。
事前準備
確保呼叫加密與解密方法的使用者具備金鑰的
cloudkms.cryptoKeyVersions.useToEncrypt
和cloudkms.cryptoKeyVersions.useToDecrypt
權限。允許使用者加密或解密的其中一種方法是,將使用者新增至該金鑰的
roles/cloudkms.cryptoKeyEncrypter
、roles/cloudkms.cryptoKeyDecrypter
或roles/cloudkms.cryptoKeyEncrypterDecrypter
身分與存取權管理角色。roles/cloudkms.admin
角色不提供這兩項權限。詳情請參閱「權限與角色」。
加密
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
更改下列內容:
KEY_NAME
:您要用於加密的金鑰名稱。KEY_RING
:金鑰所屬金鑰環的名稱。LOCATION
:包含金鑰環的 Cloud KMS 位置。FILE_TO_ENCRYPT
:要加密的檔案路徑。ENCRYPTED_OUTPUT
:您要儲存加密輸出內容的路徑。
如需所有旗標和可能值的相關資訊,請搭配 --help
旗標執行指令。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,然後安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,然後安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,然後安裝 Cloud KMS Ruby SDK。
API
這些範例會使用 curl 做為 HTTP 用戶端,以示範如何使用 API。如要進一步瞭解存取控制,請參閱「存取 Cloud KMS API」。
使用 JSON 和 REST API 時,內容必須先採用 base64 編碼,才能由 Cloud KMS 加密。
如要加密資料,請提出 POST
要求,並提供適當專案與金鑰資訊,然後在要求主體的 plaintext
欄位中指定待加密的 base64 編碼文字。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
更改下列內容:
PROJECT_ID
:包含金鑰環和要用於加密的金鑰的專案 ID。LOCATION
:包含金鑰環的 Cloud KMS 位置。KEY_RING
:包含要用於加密的金鑰的金鑰環。KEY_NAME
:您要用於加密的金鑰名稱。PLAINTEXT_TO_ENCRYPT
:您要加密的明文資料。您必須先將明文編碼為 base64,才能呼叫encrypt
方法。
以下是使用 Base64 編碼資料的承載範例:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
解密
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
更改下列內容:
KEY_NAME
:要用於解密的金鑰名稱。KEY_RING
:金鑰所屬金鑰環的名稱。LOCATION
:包含金鑰環的 Cloud KMS 位置。FILE_TO_DECRYPT
:要解密的檔案路徑。DECRYPTED_OUTPUT
:您要儲存解密輸出內容的路徑。
如需所有旗標和可能值的相關資訊,請搭配 --help
旗標執行指令。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,然後安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,然後安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,然後安裝 Cloud KMS Ruby SDK。
API
這些範例會使用 curl 做為 HTTP 用戶端,以示範如何使用 API。如要進一步瞭解存取控制,請參閱「存取 Cloud KMS API」。
以 JSON 格式從 Cloud KMS 傳回的解密文字採用 base64 編碼。
如要解密已加密資料,請提出 POST
要求,並提供適當專案與金鑰資訊,然後在要求主體的 ciphertext
欄位中指定要解密的加密文字 (也稱為 ciphertext)。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
更改下列內容:
PROJECT_ID
:專案 ID,其中包含您要用於解密的金鑰環和金鑰。LOCATION
:包含金鑰環的 Cloud KMS 位置。KEY_RING
:包含您要用於解密的金鑰的金鑰環。KEY_NAME
:要用於解密的金鑰名稱。ENCRYPTED_DATA
:您要解密的加密資料。
以下是使用 Base64 編碼資料的承載範例:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
後續步驟
- 進一步瞭解原始對稱式加密。
- 進一步瞭解信封式加密。
- 嘗試使用 Cloud KMS 程式碼研究室加密及解密資料。