本頁面說明如何使用 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:資源專案的專案 ID,位於 Autokey 資料夾中,您要在該資料夾中建立受保護的資源。
- 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 建立的金鑰會指派為值區預設金鑰。
Autokey 不會為物件建立金鑰。根據預設,在值區中建立的物件會使用值區預設金鑰。如要使用非 Bucket 預設金鑰的金鑰加密物件,可以手動建立 CMEK,並在建立物件時使用該金鑰。
如要變更指派給 bucket 的預設金鑰,可以使用任何現有的 CMEK,包括 Autokey 建立的金鑰。
建立受保護的 Cloud Storage 資源
控制台
- 前往 Google Cloud 控制台的「建立 bucket」頁面。 
- 按照操作說明建立新 bucket,直到看到「選擇保護物件資料的方式」為止。 
- 在「選擇保護物件資料的方式」下方,展開「資料加密」部分,然後選取「Cloud KMS 金鑰」。 
- 在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「要求新金鑰」。訊息會顯示金鑰已成功建立,且可供使用。 
- 按一下「建立」,完成值區建立程序。 
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:資源專案的專案 ID,位於 Autokey 資料夾中,您要在該資料夾中建立受保護的資源。
- KEY_HANDLE:用於金鑰控制代碼的 ID。
- LOCATION:您要建立受保護資源的位置。
- BUCKET_NAME:新值區的名稱。
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:新值區的名稱。值區名稱必須符合值區命名規定。
- LOCATION:要建立值區的位置。
- KEY_PROJECT_ID:金鑰專案的專案 ID。
- LOCATION:您要建立資源的位置。
- KEY_NAME:上一步輸出內容中傳回的鍵名稱。
 
搭配使用 Autokey 與 BigQuery 資源
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:資源專案的專案 ID,位於 Autokey 資料夾中,您要在該資料夾中建立受保護的資源。
- 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:資源專案的專案 ID,位於 Autokey 資料夾中,您要在該資料夾中建立受保護的資源。
- 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 的運作方式。