このページでは、暗号化用に 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 リソースを作成する
Console
ディスクを作成する手順は次のとおりです。
Google Cloud コンソールで、[ディスク] ページに移動します。
[ディスクを作成] をクリックし、新しいディスクのプロパティを入力します。
[暗号化] で、[Cloud KMS 鍵] を選択します。
[鍵のタイプ] で [Cloud KMS with Autokey] を選択し、[新しい鍵をリクエスト] をクリックします。鍵が正常に作成され、使用できるようになると、メッセージが表示されます。
ディスクの作成を終了するには、[作成] をクリックします。
同様の手順で、保護された 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 リソースを作成する
Console
Google Cloud コンソールで、[バケットの作成] ページに移動します。
[オブジェクト データを保護する方法を選択する] が表示されるまで、新しいバケットを作成する手順を行います。
[オブジェクト データを保護する方法を選択する] で、[データ暗号化] セクションを開き、[Cloud KMS 鍵] を選択します。
[鍵のタイプ] で [Cloud KMS with Autokey] を選択し、[新しい鍵をリクエスト] をクリックします。鍵が正常に作成され、使用できるようになると、メッセージが表示されます。
[作成] をクリックして、バケットの作成を終了します。
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 と同じように使用できます。--default-encryption-key
フラグを指定し、gcloud storage buckets create
コマンドを使用して暗号化されたバケットを作成します。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 の使用
Cloud KMS は、BigQuery の複数のエディションで利用できます。Autokey を使用して BigQuery リソースを保護する前に、使用している BigQuery のエディションが Cloud KMS と互換性があることを確認してください。BigQuery エディションの詳細については、BigQuery のエディションの概要をご覧ください。
新しいデータセットごとに、Autokey はリソース自体と同じ場所に新しい鍵を作成します。これがデータセットのデフォルト鍵になります。
Autokey は、テーブル、クエリ、一時テーブル、モデルの鍵を作成しません。デフォルトでは、これらのリソースはデータセットのデフォルト鍵によって保護されます。データセットのデフォルト鍵以外の鍵を使用してデータセット内のリソースを保護する場合は、CMEK を手動で作成し、リソースの作成時にその鍵を使用できます。
データセット内に存在しないクエリと一時テーブルの場合は、プロジェクトのデフォルト鍵を使用します。BigQuery リソースを含むプロジェクト内のロケーションごとに、異なるプロジェクトのデフォルト鍵を使用します。プロジェクトのデフォルト鍵の使用方法について詳しくは、プロジェクトのデフォルト鍵を設定するをご覧ください。
BigQuery で CMEK を使用する方法について詳しくは、顧客管理の Cloud KMS 鍵をご覧ください。
保護された BigQuery リソースを作成する
Console
Autokey を使用して BigQuery データセットを作成する前に、必要な権限があることを確認してください。データセット作成の詳細については、データセットの作成をご覧ください。
Google Cloud コンソールで [BigQuery] ページに移動します。
[詳細オプション] > [暗号化] が表示されるまで、データセットの作成の手順に従って操作します。
[暗号化] で、[Cloud KMS 鍵] を選択します。
[鍵のタイプ] で [Cloud KMS with Autokey] を選択し、[新しい鍵をリクエスト] をクリックします。鍵が正常に作成され、使用できるようになると、メッセージが表示されます。
データセットの作成を終了するには、[データセットの作成] をクリックします。
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 と同じように使用できます。--destination_kms_key
フラグを指定し、bq mk
コマンドを使用して暗号化されたデータセットを作成します。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 は、同じプロジェクトとロケーション内のすべての Secret を保護するための単一の鍵を作成します。鍵がローテーションされると、プロジェクトに追加された新しい Secret は鍵の新しいメイン バージョンを使用します。
Terraform または REST API を使用してリソースを作成する場合、Secret Manager と互換性があるのは Cloud KMS Autokey のみです。
保護された Secret Manager リソースを作成する
Terraform
次の Terraform サンプルは、鍵ハンドルを作成し、返された鍵を使用して、自動レプリケーションで新しい Secret を保護します。
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
: 新しい Secret に使用する ID。
鍵ハンドルがすでに存在する同じプロジェクトとロケーションで Secret の鍵ハンドルを作成しようとすると、エラー メッセージで既存の鍵ハンドルの詳細が返されます。その場合は、鍵ハンドルを作成するブロックが 1 つだけであることを確認してください。ID(KEY_HANDLE
)を使用して鍵ハンドルを再利用すると、鍵を共有する追加の Secret を作成できます。
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 を取得するには、この値が必要です。鍵ハンドルがすでに存在する同じプロジェクトとロケーションで Secret の鍵ハンドルを作成しようとすると、エラー メッセージで既存の鍵ハンドルの詳細が返されます。この場合は、次の手順をスキップして
existingKmsKey
フィールドの鍵のリソース ID を使用して新しい Secret を保護します。鍵ハンドルに関連付けられた 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 と同じように使用できます。--kms-key-name
フラグを指定してgcloud secrets create
コマンドを使用し、自動レプリケーションで暗号化された 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
: 新しい Secret に使用する ID。KEY_PROJECT_ID
: 鍵プロジェクトのプロジェクト ID。KEY_NAME
: 前の手順の出力で返された鍵の名前。RESOURCE_PROJECT_ID
: 保護されたリソースを作成する Autokey フォルダ内のリソース プロジェクトのプロジェクト 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 の仕組みをご覧ください。