本頁面說明如何使用 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
如要執行這段程式碼,請先瞭解如何在 Trusted 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
:您要加密的明文資料。呼叫encrypt
方法前,必須先對明文進行 Base64 編碼。
以下是含有 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
如要執行這段程式碼,請先瞭解如何在 Trusted 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
欄位中指定要解密的已加密文字 (也稱為密文)。
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 加密及解密資料程式碼研究室。