本頁面說明如何使用 Cloud KMS Autokey 建立的金鑰進行加密,藉此建立受保護的資源。如要進一步瞭解 Autokey,請參閱「Autokey 總覽」。
事前準備
如要使用 Autokey 建立受保護的資源,請先完成下列準備步驟:
- 如果 Autokey 資料夾中沒有資源專案,您必須建立專案,存放您打算建立的資源。
-
如要取得使用 Autokey 建立受保護資源所需的權限,請要求管理員在資料夾或專案中授予您「Cloud KMS Autokey 使用者 」(
roles/cloudkms.autokeyUser) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。 - 此外,您還需要 Autokey 資料夾或資料夾內資源專案的資源建立權限。如要進一步瞭解建立各項資源所需的權限,請參閱服務專屬說明文件。如要查看這份說明文件,請在 CMEK 整合表格中找出服務,然後前往要建立的資源類型連結。
搭配使用 Autokey 與 Compute Engine 資源
Autokey 會為每個磁碟、映像檔和機器映像檔建立新金鑰,並存放在與所建立資源相同的位置。
Autokey 不會為快照建立新金鑰。快照應使用與磁碟加密相同的金鑰。如果您使用Google Cloud 控制台建立快照,系統會自動將磁碟使用的加密金鑰套用至快照。如果您使用 gcloud CLI、Terraform 或 Compute Engine API 建立快照,必須找出用於加密磁碟的金鑰,並使用該金鑰加密快照。
如要進一步瞭解如何搭配使用 CMEK 與快照,請參閱「從以 CMEK 加密的磁碟建立快照」。
建立受保護的 Compute Engine 資源
控制台
如要建立磁碟,請完成下列步驟:
前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
按一下 [Create disk] (建立磁碟),然後輸入新磁碟的屬性。
在「Encryption」(加密) 底下,選取「Cloud KMS key」(Cloud KMS 金鑰)。
在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「要求新金鑰」。畫面上會顯示訊息,指出金鑰已成功建立,可以開始使用。
如要完成磁碟建立程序,請按一下「建立」。
您可以按照類似程序建立受保護的 VM 執行個體、映像檔和機器映像檔資源。
Terraform
下列 Terraform 範例會建立金鑰控制代碼,並使用傳回的金鑰保護新的永久磁碟資源:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "KEY_HANDLE"
location = "LOCATION"
resource_type_selector = "compute.googleapis.com/Disk"
}
resource "google_compute_disk" "persistent_disk" {
project = "RESOURCE_PROJECT_ID"
name = "DISK_NAME"
type = "pd-ssd"
zone = "ZONE"
size = 30
physical_block_size_bytes = 4096
disk_encryption_key {
kms_key_self_link = google_kms_key_handle.my_key_handle.kms_key
}
}
更改下列內容:
RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在該資料夾中建立受保護的資源。KEY_HANDLE:用於金鑰控制代碼的 ID。LOCATION:您要建立受保護資源的位置。DISK_NAME:新磁碟的名稱。ZONE:受保護資源的可用區。這必須是您建立資源所在位置的可用區。舉例來說,如果您在us-central1位置建立資源,可用區可能是us-central1-a。
Cloud KMS 不允許刪除 KeyHandle 資源。如果您使用建立和銷毀模式,嘗試重新建立 KeyHandle 會產生 ALREADY_EXISTS 錯誤。如要避免這個問題,可以匯入先前建立的 KeyHandle。詳情請參閱本頁的「在 Terraform 中建立及銷毀模式」。
API
建立
KeyHandle,要求新的 Cloud KMS 金鑰:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。RESOURCE_TYPE:您要建立的資源類型,例如compute.googleapis.com/Disk。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }記下輸出內容中的
OPERATION_ID。您需要這個值,才能取得所建立金鑰的資源 ID。找出與金鑰控制代碼相關聯的 Cloud KMS 金鑰:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。OPERATION_ID:上一個步驟輸出內容中的金鑰控制代碼要求作業 ID。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }輸出內容中
kmsKey元素的價值,是 Autokey 為這項資源建立的金鑰完整資源 ID。您可以使用這個資源 ID,就像使用任何其他 Cloud KMS 資源的資源 ID 一樣。使用
gcloud compute disks create指令並加上--kms-key標記,建立加密磁碟:gcloud compute disks create DISK_NAME \ --kms-key projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME更改下列內容:
DISK_NAME:新磁碟的名稱。KEY_PROJECT_ID:金鑰專案的專案 ID。LOCATION:要建立資源的位置。KEY_NAME:上一個步驟輸出中傳回的金鑰名稱。
搭配 Cloud Storage 資源使用 Autokey
Autokey 會在與值區相同的位置建立新金鑰。Autokey 建立的金鑰會指派為 bucket 預設金鑰。
Autokey 不會為物件建立金鑰。根據預設,在值區中建立的物件會使用值區預設金鑰。如要使用非值區預設金鑰的金鑰加密物件,可以建立 CMEK,並在建立物件時使用該金鑰。
如要變更指派給值區的預設金鑰,可以使用現有的 CMEK,包括 Autokey 建立的金鑰。
建立受保護的 Cloud Storage 資源
控制台
前往 Google Cloud 控制台的「建立 bucket」頁面。
按照操作說明建立新 bucket,直到「選擇保護物件資料的方式」為止。
在「選擇保護物件資料的方式」下方,展開「資料加密」部分,然後選取「Cloud KMS 金鑰」。
在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「要求新金鑰」。畫面上會顯示訊息,指出金鑰已成功建立,可以開始使用。
按一下「Create」(建立),完成值區建立程序。
Terraform
下列 Terraform 範例會建立金鑰控制代碼,並使用傳回的金鑰保護新的儲存空間 bucket:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "KEY_HANDLE"
location = "LOCATION"
resource_type_selector = "storage.googleapis.com/Bucket"
}
resource "google_storage_bucket" "simple_bucket_name" {
name = "BUCKET_NAME"
location = "LOCATION"
force_destroy = true
project = "RESOURCE_PROJECT_ID"
uniform_bucket_level_access = true
encryption {
default_kms_key_name = google_kms_key_handle.my_key_handle.kms_key
}
}
更改下列內容:
RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在該資料夾中建立受保護的資源。KEY_HANDLE:用於金鑰控制代碼的 ID。LOCATION:您要建立受保護資源的位置。BUCKET_NAME:新 bucket 的名稱。
Cloud KMS 不允許刪除 KeyHandle 資源。如果您使用建立和銷毀模式,嘗試重新建立 KeyHandle 會產生 ALREADY_EXISTS 錯誤。如要避免這個問題,可以匯入先前建立的 KeyHandle。詳情請參閱本頁的「在 Terraform 中建立及銷毀模式」。
API
建立
KeyHandle,要求新的 Cloud KMS 金鑰:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。RESOURCE_TYPE:您要建立的資源類型,例如storage.googleapis.com/Bucket。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }記下輸出內容中的
OPERATION_ID。您需要這個值才能取得所建立金鑰的資源 ID。找出與金鑰控制代碼相關聯的 Cloud KMS 金鑰:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。OPERATION_ID:上一個步驟輸出內容中的金鑰控制代碼要求作業 ID。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }輸出內容中
kmsKey元素的值,是 Autokey 為這項資源建立的金鑰完整資源 ID。您可以像使用任何其他 Cloud KMS 資源的資源 ID 一樣,使用這個資源 ID。使用
gcloud storage buckets create指令並加上--default-encryption-key旗標,建立加密值區:gcloud storage buckets create gs://BUCKET_NAME \ --location=LOCATION \ --default-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME更改下列內容:
BUCKET_NAME:新 bucket 的名稱。值區名稱必須符合值區命名規定。LOCATION:要建立 bucket 的位置。KEY_PROJECT_ID:金鑰專案的專案 ID。LOCATION:要建立資源的位置。KEY_NAME:上一個步驟輸出中傳回的金鑰名稱。
搭配 BigQuery 資源使用 Autokey
Cloud KMS 適用於多個版本的 BigQuery。請先確認您使用的 BigQuery 版本與 Cloud KMS 相容,再嘗試使用 Autokey 保護 BigQuery 資源。如要進一步瞭解 BigQuery 版本,請參閱「瞭解 BigQuery 版本」。
針對每個新資料集,Autokey 會在與資源本身相同的位置建立新金鑰,做為資料集的預設金鑰。
Autokey 不會為資料表、查詢、暫時資料表或模型建立金鑰。根據預設,這些資源會受到資料集預設金鑰保護。如要使用資料集預設金鑰以外的金鑰保護資料集中的資源,可以手動建立 CMEK,並在建立資源時使用該金鑰。
如果查詢和臨時資料表不在資料集中,請使用專案預設金鑰。請為含有 BigQuery 資源的專案中每個位置,使用不同的專案預設金鑰。如要進一步瞭解如何使用專案預設金鑰,請參閱「設定專案預設金鑰」。
如要進一步瞭解如何將 CMEK 與 BigQuery 搭配使用,請參閱客戶管理的 Cloud KMS 金鑰一文。
建立受保護的 BigQuery 資源
控制台
嘗試使用 Autokey 建立 BigQuery 資料集前,請確認您具備必要權限。如要進一步瞭解如何建立資料集,請參閱「建立資料集」。
前往 Google Cloud 控制台的「BigQuery」頁面。BigQuery
按照建立資料集的說明操作,直到看到「進階選項」>「加密」。
在「Encryption」(加密) 底下,選取「Cloud KMS key」(Cloud KMS 金鑰)。
在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「要求新金鑰」。畫面上會顯示訊息,指出金鑰已成功建立,可以開始使用。
按一下「建立資料集」,即可完成資料集建立作業。
Terraform
下列 Terraform 範例會建立金鑰控制代碼,並使用傳回的金鑰保護新資料集:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "test-key-handle"
location = "LOCATION"
resource_type_selector = "bigquery.googleapis.com/Dataset"
}
resource "google_bigquery_dataset" "dataset" {
project = "RESOURCE_PROJECT_ID"
dataset_id = "DATASET_ID"
friendly_name = "DATASET_NAME"
description = "DATASET_DESCRIPTION"
location = "LOCATION"
default_table_expiration_ms = 3600000
default_encryption_configuration {
kms_key_name = google_kms_key_handle.my_key_handle.kms_key
}
}
更改下列內容:
RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在該資料夾中建立受保護的資源。LOCATION:您要建立受保護資源的位置。DATASET_ID:新資料集的 ID。DATASET_NAME:容易記得的新資料集名稱。DATASET_DESCRIPTION:新資料集的說明。
Cloud KMS 不允許刪除 KeyHandle 資源。如果您使用建立和銷毀模式,嘗試重新建立 KeyHandle 會產生 ALREADY_EXISTS 錯誤。如要避免這個問題,可以匯入先前建立的 KeyHandle。詳情請參閱本頁的「在 Terraform 中建立及銷毀模式」。
API
建立
KeyHandle,要求新的 Cloud KMS 金鑰:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。RESOURCE_TYPE:您要建立的資源類型,例如bigquery.googleapis.com/Dataset。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }記下輸出內容中的
OPERATION_ID。您需要這個值才能取得所建立金鑰的資源 ID。找出與金鑰控制代碼相關聯的 Cloud KMS 金鑰:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。OPERATION_ID:上一個步驟輸出內容中的金鑰控制代碼要求作業 ID。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }輸出內容中
kmsKey元素的值,是 Autokey 為這項資源建立的金鑰完整資源 ID。您可以像使用任何其他 Cloud KMS 資源的資源 ID 一樣,使用這個資源 ID。使用
bq mk指令搭配--destination_kms_key旗標,建立加密資料集。bq --location=LOCATION mk \ --dataset \ --default_kms_key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME \ --default_table_expiration=TABLE_EXPIRATION \ --description="DATASET_DESCRIPTION" \ RESOURCE_PROJECT_ID:DATASET_ID更改下列內容:
LOCATION:要建立資料集的位置。KEY_PROJECT_ID:金鑰專案的專案 ID。KEY_NAME:上一個步驟輸出中傳回的金鑰名稱。TABLE_EXPIRATION:這個資料集中新資料表的預設生命週期 (以秒為單位)。DATASET_DESCRIPTION:新資料集的說明。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。DATASET_ID:您要建立的資料集 ID。
如要進一步瞭解
bq工具,請參閱「探索 bq 指令列工具」。
搭配使用 Autokey 與 Secret Manager 資源
Autokey 會建立單一金鑰,保護相同專案和位置的所有密碼。金鑰輪替後,新增至專案的密鑰會使用新的主要金鑰版本。
使用 Terraform 或 REST API 建立資源時,Secret Manager 僅與 Cloud KMS Autokey 相容。
建立受保護的 Secret Manager 資源
Terraform
下列 Terraform 範例會建立金鑰控制代碼,並使用傳回的金鑰保護新密鑰,同時自動複製:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "test-key-handle"
location = "global"
resource_type_selector = "secretmanager.googleapis.com/Secret"
}
resource "google_secret_manager_secret" "my_secret" {
project = "RESOURCE_PROJECT_ID"
secret_id = "SECRET_ID"
replication {
auto {
customer_managed_encryption {
kms_key_name = google_kms_key_handle.my_key_handle.kms_key
}
}
}
}
更改下列內容:
RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在該資料夾中建立受保護的資源。SECRET_ID:新密鑰使用的 ID。
如果您嘗試為同一個專案和位置的密鑰建立金鑰控制代碼,但該密鑰控制代碼已存在,系統會傳回錯誤訊息,其中包含現有金鑰控制代碼的詳細資料。如果發生這種情況,請確認您只建立一個建立金鑰控制代碼的區塊。您可以使用金鑰控制代碼的 ID (KEY_HANDLE) 重複使用該控制代碼,建立應共用金鑰的其他密鑰。
Cloud KMS 不允許刪除 KeyHandle 資源。如果您使用建立和銷毀模式,嘗試重新建立 KeyHandle 會產生 ALREADY_EXISTS 錯誤。如要避免這個問題,可以匯入先前建立的 KeyHandle。詳情請參閱本頁的「在 Terraform 中建立及銷毀模式」。
API
建立
KeyHandle,要求新的 Cloud KMS 金鑰:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。RESOURCE_TYPE:您要建立的資源類型,例如secretmanager.googleapis.com/Secret。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }記下輸出內容中的
OPERATION_ID。您需要這個值才能取得所建立金鑰的資源 ID。如果您嘗試在同一個專案和位置建立密鑰控制代碼,但該專案和位置已有密鑰控制代碼,系統會傳回錯誤訊息,其中包含現有密鑰控制代碼的詳細資料。在這種情況下,請略過下一個步驟,並在
existingKmsKey欄位中使用金鑰資源 ID,保護新密鑰。找出與金鑰控制代碼相關聯的 Cloud KMS 金鑰:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。OPERATION_ID:上一個步驟輸出內容中的金鑰控制代碼要求作業 ID。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }輸出內容中
kmsKey元素的值,是 Autokey 為這項資源建立的金鑰完整資源 ID。您可以像使用任何其他 Cloud KMS 資源的資源 ID 一樣,使用這個資源 ID。使用
gcloud secrets create指令搭配--kms-key-name旗標,建立加密密鑰並自動複製。gcloud secrets create "SECRET_ID" \ --replication-policy "automatic" \ --kms-key-name "projects/KEY_PROJECT_ID/locations/global/keyRings/autokey/cryptoKeys/KEY_NAME" \ --project "RESOURCE_PROJECT_ID"更改下列內容:
SECRET_ID:新密鑰使用的 ID。KEY_PROJECT_ID:金鑰專案的專案 ID。KEY_NAME:上一個步驟輸出中傳回的金鑰名稱。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。
搭配 Dataflow 資源使用 Autokey
Autokey 可用於為每項 Dataflow 工作建立單一金鑰。
API
建立
KeyHandle,要求新的 Cloud KMS 金鑰:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "dataflow.googleapis.com/Job"}'更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }記下輸出內容中的
OPERATION_ID。您需要這個值,才能取得所建立金鑰的資源 ID。找出與金鑰控制代碼相關聯的 Cloud KMS 金鑰:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID更改下列內容:
USER_PROJECT:要為與這項要求相關聯的費用計費的專案。RESOURCE_PROJECT_ID:Autokey 資料夾中資源專案的專案 ID,您要在其中建立受保護的資源。LOCATION:您要在其中建立受保護資源的位置。OPERATION_ID:上一個步驟輸出內容中的金鑰控制代碼要求作業 ID。
輸出結果會與下列內容相似:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }輸出內容中
kmsKey元素的價值,是 Autokey 為這項資源建立的金鑰完整資源 ID。您可以使用這個資源 ID,就像使用任何其他 Cloud KMS 資源的資源 ID 一樣。
Terraform 中的建立和刪除模式
Cloud KMS 不允許刪除 KeyHandle 資源。如果您使用 Terraform 和建立及毀損模式,嘗試重新建立 KeyHandle 會產生 ALREADY_EXISTS 錯誤。如要避免這個問題,請使用 import 區塊。在 google_kms_key_handle 資源的 resource 區塊之前插入下列區塊:
import {
to = google_kms_key_handle.KEY_HANDLE
id = "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE"
}
後續步驟
- 進一步瞭解使用 Autokey 的時機。
- 進一步瞭解 Autokey 的運作方式。