本頁面說明如何使用 Cloud KMS Autokey 建立的金鑰來建立受保護的資源,以便進行加密。如要進一步瞭解 Autokey,請參閱「Autokey 總覽」。
事前準備
如要使用 Autokey 建立受保護的資源,您必須先完成下列準備步驟:
- 如果 Autokey 資料夾中沒有資源專案,您必須建立專案,才能保留要建立的資源。
-
如要取得使用 Autokey 建立受保護資源所需的權限,請要求管理員授予您資料夾或專案的 Cloud KMS Autokey 使用者 (
roles/cloudkms.autokeyUser
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。 - 您也需要在 Autokey 資料夾或資料夾內的資源專案中,具備建立資源的權限。如要進一步瞭解建立各項資源所需的權限,請參閱特定服務的說明文件。您可以在 CMEK 整合服務表格中找到這項服務,然後點選您要建立的資源類型連結,即可找到這份說明文件。
搭配 Compute Engine 資源使用 Autokey
Autokey 會為每個磁碟、映像檔和機器映像檔建立新的金鑰,位置與建立的資源相同。
Autokey 不會為快照建立新金鑰。快照應使用用來加密磁碟的相同金鑰。如果您使用Google Cloud 主控台建立快照,系統會自動將磁碟使用的加密金鑰套用至快照。如果您使用 gcloud CLI、Terraform 或 Compute Engine API 建立快照,必須指定用於加密磁碟的金鑰,並使用該金鑰加密快照。
如要進一步瞭解如何搭配使用 CMEK 和快照,請參閱「從以 CMEK 加密的磁碟建立快照」。
建立受保護的 Compute Engine 資源
控制台
如要建立磁碟,請完成下列步驟:
在 Google Cloud 控制台中,前往「Disks」頁面。
按一下 [Create disk] (建立磁碟),然後輸入新磁碟的屬性。
在「Encryption」下方,選取「Cloud KMS key」。
在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「申請新的金鑰」。系統會顯示訊息,指出金鑰已成功建立並可供使用。
按一下「Create」即可完成磁碟建立作業。
您可以按照類似的程序建立受保護的 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 建立的金鑰會指派為值區的預設金鑰。
Autokey 不會為物件建立金鑰。根據預設,在值區中建立的物件會使用值區預設金鑰。如果您想使用值區預設金鑰以外的金鑰來加密物件,可以手動建立 CMEK,並在建立物件時使用該金鑰。
如要變更指派給值區的預設金鑰,您可以使用任何現有的 CMEK,包括 Autokey 建立的金鑰。
建立受保護的 Cloud Storage 資源
控制台
前往 Google Cloud 控制台的「Create a bucket」(建立 bucket) 頁面。
按照建立新值區的操作說明操作,直到看到「選擇保護物件資料的方式」為止。
在「Choose how to protect object data」(選擇保護物件資料的方式) 下方,展開「Data encryption」(資料加密) 專區,然後選取「Cloud KMS key」(Cloud KMS 金鑰)。
在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「申請新的金鑰」。系統會顯示訊息,指出金鑰已成功建立並可供使用。
按一下「Create」,完成值區建立程序。
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 = "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
:新值區的名稱。
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。您可以使用這個資源 ID,就像使用任何其他 Cloud KMS 資源的資源 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
:在先前步驟的輸出內容中傳回的鍵名稱。
搭配 BigQuery 資源使用 Autokey
多個 BigQuery 版本都支援 Cloud KMS。請先確認您使用的 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」。
在「金鑰類型」中,選取「使用 Autokey 的 Cloud KMS」,然後按一下「申請新的金鑰」。系統會顯示訊息,指出金鑰已成功建立並可供使用。
按一下「Create dataset」(建立資料集),即可完成資料集建立作業。
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。您可以使用這個資源 ID,就像使用任何其他 Cloud KMS 資源的資源 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 指令列工具」。
在 Secret Manager 資源中使用 Autokey
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。您可以使用這個資源 ID,就像使用任何其他 Cloud KMS 資源的資源 ID 一樣。使用
gcloud secrets create
指令和--kms-key-name
標記,建立可自動複製的加密 Secret。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。
- 進一步瞭解自動鍵盤的運作方式。