本頁面說明如何使用 Cloud Key Management Service (Cloud KMS) 建立包裝金鑰,然後使用該金鑰傳送 deidentify 和 reidentify 要求至 Sensitive Data Protection 的 Cloud Data Loss Prevention API。
使用加密編譯金鑰去識別化及重新識別內容的程序稱為「匿名化」 (或「代碼化」)。如要瞭解這項程序的概念資訊,請參閱「匿名化」。
如需範例,瞭解如何建立包裝金鑰、將內容權杖化,以及重新識別權杖化內容,請參閱將機密文字去識別化和重新識別。
完成本文中的步驟大約需要 5 到 10 分鐘,不包括「事前準備」步驟。
事前準備
- 登入 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 專案名稱。
-
如要使用現有專案進行本指南中的操作,請確認您具有完成本指南所需的權限。如果您建立新專案,則已具備必要權限。
啟用 Sensitive Data Protection 和 Cloud KMS API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
安裝 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 專案名稱。
-
如要使用現有專案進行本指南中的操作,請確認您具有完成本指南所需的權限。如果您建立新專案,則已具備必要權限。
啟用 Sensitive Data Protection 和 Cloud KMS API:
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com
必要的角色
如要取得建立包裝 AES 金鑰所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
Cloud KMS 管理員 (
roles/cloudkms.admin) -
Cloud KMS CryptoKey 加密者 (
roles/cloudkms.cryptoKeyEncrypter)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立金鑰環和金鑰
開始這項程序前,請先決定要讓 Sensitive Data Protection 在何處處理去識別化和重新識別化要求。建立 Cloud KMS 金鑰時,您必須將金鑰儲存在 global,或是儲存在您要用於 Sensitive Data Protection 要求的相同區域。否則 Sensitive Data Protection 要求會失敗。
如要查看支援的地點清單,請參閱「Sensitive Data Protection 地點」。記下所選區域的名稱 (例如 us-west1)。
這個程序會使用 global 做為所有 API 要求的所在地。如要使用其他區域,請將 global 替換為區域名稱。
建立金鑰環:
gcloud kms keyrings create "dlp-keyring" \ --location "global"建立金鑰:
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"列出金鑰環和金鑰:
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"您會看到下列輸出內容:
NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLED在這個輸出內容中,
PROJECT_ID是專案 ID。NAME的值是 Cloud KMS 金鑰的完整資源名稱。請記下這個值,因為去識別化和重新識別化要求需要這個值。
建立採用 Base64 編碼的 AES 金鑰
本節說明如何建立進階加密標準 (AES) 金鑰,並以 base64 格式編碼。
建立 128、192 或 256 位元的 AES 金鑰。下列指令會使用
openssl在目前目錄中建立 256 位元金鑰:openssl rand -out "./aes_key.bin" 32檔案
aes_key.bin會新增至目前目錄。將 AES 金鑰編碼為 Base64 字串:
base64 -i ./aes_key.bin輸出內容應該會類似下列內容:
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
使用 Cloud KMS 金鑰包裝 AES 金鑰
本節說明如何使用您在「建立金鑰環和金鑰」中建立的 Cloud KMS 金鑰,包裝您在「建立採用 Base64 編碼的 AES 金鑰」中建立的採用 Base64 編碼的 AES 金鑰。
如要包裝 AES 金鑰,請使用 curl 將下列要求傳送至 Cloud KMS API projects.locations.keyRings.cryptoKeys.encrypt 方法:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
更改下列內容:
PROJECT_ID:專案 ID。BASE64_ENCODED_AES_KEY:在「建立採用 Base64 編碼的 AES 金鑰」中傳回的 Base64 編碼字串。
您從 Cloud KMS 取得的回應類似於下列 JSON:
{
"name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
"ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
"ciphertextCrc32c": "901327763",
"protectionLevel": "SOFTWARE"
}
在這個輸出內容中,PROJECT_ID 是專案 ID。
請記下回應中的 ciphertext 值。這就是經過包裝的金鑰。
後續步驟
進一步瞭解如何透過加密金鑰將資料權杖化。
逐步完成範例,瞭解如何建立包裝金鑰、將內容權杖化,以及重新識別權杖化內容。
進一步瞭解使用這個包裝金鑰的去識別化方法,並查看程式碼範例。