Membuat resource yang dilindungi menggunakan Kunci Otomatis Cloud KMS

Halaman ini menunjukkan cara membuat resource yang dilindungi menggunakan kunci yang dibuat oleh Kunci Otomatis Cloud KMS untuk enkripsi. Untuk mengetahui informasi selengkapnya tentang Autokey, lihat Ringkasan Autokey.

Sebelum memulai

Sebelum dapat membuat resource yang dilindungi menggunakan Autokey, Anda harus menyelesaikan langkah-langkah berikut untuk melakukan persiapan:

  1. Jika belum memiliki project resource dalam folder Autokey, Anda harus membuat project untuk menyimpan resource yang ingin Anda buat.
  2. Untuk mendapatkan izin yang diperlukan guna menggunakan Autokey untuk membuat kunci enkripsi yang dilindungi, minta administrator untuk memberi Anda peran IAM Cloud KMS Autokey User (roles/cloudkms.autokeyUser) di folder atau project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

  3. Anda juga memerlukan izin pembuatan resource di folder Autokey atau di project resource dalam folder. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk membuat setiap resource, lihat dokumentasi khusus layanan. Anda dapat menemukan dokumentasi ini dengan menemukan layanan di tabel integrasi CMEK dan membuka link untuk jenis resource yang ingin Anda buat.

Menggunakan Autokey dengan resource Compute Engine

Autokey membuat kunci baru untuk setiap disk, image, dan image mesin di lokasi yang sama dengan resource yang sedang dibuat.

Autokey tidak membuat kunci baru untuk snapshot. Snapshot harus menggunakan kunci yang sama dengan yang digunakan untuk mengenkripsi disk. Jika Anda membuat snapshot menggunakan konsol Google Cloud, kunci enkripsi yang digunakan oleh disk akan otomatis diterapkan ke snapshot. Jika membuat snapshot menggunakan gcloud CLI, Terraform, atau Compute Engine API, Anda harus mengidentifikasi kunci yang digunakan untuk mengenkripsi disk dan menggunakan kunci tersebut untuk mengenkripsi snapshot.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan CMEK dengan snapshot, lihat Membuat snapshot dari disk yang dienkripsi dengan CMEK.

Membuat resource Compute Engine yang dilindungi

Konsol

Untuk membuat disk, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Disk.

    Buka Disks

  2. Klik Create disk dan masukkan properti untuk disk baru.

  3. Di bagian Encryption, pilih Cloud KMS key.

  4. Untuk Key type, pilih Cloud KMS with Autokey, lalu klik Request a new key. Pesan akan menunjukkan kapan kunci Anda berhasil dibuat dan siap digunakan.

  5. Untuk menyelesaikan pembuatan disk, klik Buat.

Anda dapat mengikuti proses serupa untuk membuat resource instance VM, image, dan image mesin yang dilindungi.

Terraform

Contoh Terraform berikut membuat handle kunci dan menggunakan kunci yang ditampilkan untuk melindungi resource disk persisten baru:

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
  }
}

Ganti kode berikut:

  • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
  • KEY_HANDLE: ID yang akan digunakan untuk handle kunci.
  • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
  • DISK_NAME: nama disk baru.
  • ZONE: zona resource yang dilindungi. Zona ini harus merupakan zona dalam lokasi tempat Anda membuat resource. Misalnya, jika Anda membuat resource di lokasi us-central1, zonanya dapat berupa us-central1-a.

Cloud KMS tidak mengizinkan Anda menghapus resource KeyHandle. Jika Anda menggunakan pola buat dan hancurkan, upaya membuat ulang KeyHandle akan menghasilkan error ALREADY_EXISTS. Untuk menghindari masalah ini, Anda dapat mengimpor KeyHandle yang dibuat sebelumnya. Untuk informasi selengkapnya, lihat Membuat dan menghapus pola di Terraform di halaman ini.

API

  1. Minta kunci Cloud KMS baru dengan membuat KeyHandle:

    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"}'
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • RESOURCE_TYPE: jenis resource yang ingin Anda buat—misalnya, compute.googleapis.com/Disk.

    Outputnya mirip dengan hal berikut ini:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Catat OPERATION_ID dari output. Anda memerlukan nilai ini untuk mendapatkan ID resource kunci yang dibuat.

  2. Temukan kunci Cloud KMS yang terkait dengan handle kunci:

    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
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • OPERATION_ID: ID operasi permintaan handle kunci dari output langkah sebelumnya.

    Outputnya mirip dengan hal berikut ini:

    {
      "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"
      }
    }
    

    Nilai elemen kmsKey dalam output adalah ID resource lengkap kunci yang dibuat oleh Autokey untuk resource ini. Anda dapat menggunakan ID resource ini dengan cara yang sama seperti menggunakan ID resource untuk resource Cloud KMS lainnya.

  3. Buat disk terenkripsi menggunakan perintah gcloud compute disks create, dengan flag --kms-key:

    gcloud compute disks create DISK_NAME \
      --kms-key projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Ganti kode berikut:

    • DISK_NAME: nama disk baru.
    • KEY_PROJECT_ID: project ID dari project kunci.
    • LOCATION: lokasi tempat Anda ingin membuat resource.
    • KEY_NAME: nama kunci yang ditampilkan dalam output dari langkah sebelumnya.

Menggunakan Autokey dengan resource Cloud Storage

Autokey membuat kunci baru di lokasi yang sama dengan bucket. Kunci yang dibuat oleh Autokey ditetapkan sebagai kunci default bucket.

Autokey tidak membuat kunci untuk objek. Secara default, objek yang dibuat di bucket menggunakan kunci default bucket. Jika ingin mengenkripsi objek menggunakan kunci selain kunci default bucket, Anda dapat membuat CMEK secara manual dan menggunakan kunci tersebut saat membuat objek.

Jika ingin mengubah kunci default yang ditetapkan ke bucket, Anda dapat menggunakan CMEK yang ada, termasuk kunci yang dibuat oleh Autokey.

Membuat resource Cloud Storage yang dilindungi

Konsol

  1. Di konsol Google Cloud, buka halaman Create a bucket.

    Buka Membuat bucket

  2. Ikuti petunjuk untuk Membuat bucket baru hingga Anda sampai ke Pilih cara melindungi data objek.

  3. Di bagian Pilih cara melindungi data objek, luaskan bagian Enkripsi data, lalu pilih Kunci Cloud KMS.

  4. Untuk Key type, pilih Cloud KMS with Autokey, lalu klik Request a new key. Pesan akan menunjukkan kapan kunci Anda berhasil dibuat dan siap digunakan.

  5. Untuk menyelesaikan pembuatan bucket, klik Create.

Terraform

Contoh Terraform berikut membuat handle kunci dan menggunakan kunci yang ditampilkan untuk melindungi bucket penyimpanan baru:

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
  }
}

Ganti kode berikut:

  • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
  • KEY_HANDLE: ID yang akan digunakan untuk handle kunci.
  • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
  • BUCKET_NAME: nama bucket baru.

Cloud KMS tidak mengizinkan Anda menghapus resource KeyHandle. Jika Anda menggunakan pola buat dan hancurkan, upaya membuat ulang KeyHandle akan menghasilkan error ALREADY_EXISTS. Untuk menghindari masalah ini, Anda dapat mengimpor KeyHandle yang dibuat sebelumnya. Untuk informasi selengkapnya, lihat Membuat dan menghapus pola di Terraform di halaman ini.

API

  1. Minta kunci Cloud KMS baru dengan membuat KeyHandle:

    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"}'
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • RESOURCE_TYPE: jenis resource yang ingin Anda buat—misalnya, storage.googleapis.com/Bucket.

    Outputnya mirip dengan hal berikut ini:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Catat OPERATION_ID dari output. Anda memerlukan nilai ini untuk mendapatkan ID resource kunci yang dibuat.

  2. Temukan kunci Cloud KMS yang terkait dengan handle kunci:

    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
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • OPERATION_ID: ID operasi permintaan handle kunci dari output langkah sebelumnya.

    Outputnya mirip dengan hal berikut ini:

    {
      "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"
      }
    }
    

    Nilai elemen kmsKey dalam output adalah ID resource lengkap kunci yang dibuat oleh Autokey untuk resource ini. Anda dapat menggunakan ID resource ini dengan cara yang sama seperti menggunakan ID resource untuk resource Cloud KMS lainnya.

  3. Buat bucket terenkripsi menggunakan perintah gcloud storage buckets create, dengan flag --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
    

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket baru. Nama bucket harus mengikuti persyaratan penamaan bucket.
    • LOCATION: lokasi tempat Anda ingin membuat bucket.
    • KEY_PROJECT_ID: project ID dari project kunci.
    • LOCATION: lokasi tempat Anda ingin membuat resource.
    • KEY_NAME: nama kunci yang ditampilkan dalam output dari langkah sebelumnya.

Menggunakan Autokey dengan resource BigQuery

Cloud KMS tersedia di beberapa edisi BigQuery. Pastikan edisi BigQuery yang Anda gunakan kompatibel dengan Cloud KMS sebelum Anda mencoba menggunakan Autokey untuk melindungi resource BigQuery. Untuk mengetahui informasi selengkapnya tentang edisi BigQuery, lihat Memahami edisi BigQuery.

Untuk setiap set data baru, Autokey akan membuat kunci baru, di lokasi yang sama dengan resource itu sendiri, yang menjadi kunci default set data.

Kunci otomatis tidak membuat kunci untuk tabel, kueri, tabel sementara, atau model. Secara default, resource ini dilindungi oleh kunci default set data. Jika ingin melindungi resource dalam set data menggunakan kunci selain kunci default set data, Anda dapat membuat CMEK secara manual dan menggunakan kunci tersebut saat membuat resource.

Untuk kueri dan tabel sementara yang tidak berada di dalam set data, gunakan kunci default project. Gunakan kunci default project yang berbeda untuk setiap lokasi dalam project yang berisi resource BigQuery. Untuk informasi selengkapnya tentang penggunaan kunci default project, lihat Menetapkan kunci default project.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan CMEK dengan BigQuery, lihat Kunci Cloud KMS yang dikelola pelanggan.

Membuat resource BigQuery yang dilindungi

Konsol

Sebelum mencoba membuat set data BigQuery menggunakan Autokey, pastikan Anda memiliki izin yang diperlukan. Untuk mengetahui informasi selengkapnya tentang cara membuat set data, lihat Membuat set data.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Ikuti petunjuk untuk Membuat set data hingga Anda membuka Opsi lanjutan > Enkripsi.

  3. Di bagian Encryption, pilih Cloud KMS key.

  4. Untuk Key type, pilih Cloud KMS with Autokey, lalu klik Request a new key. Pesan akan menunjukkan kapan kunci Anda berhasil dibuat dan siap digunakan.

  5. Untuk menyelesaikan pembuatan set data, klik Create dataset.

Terraform

Contoh Terraform berikut membuat handle kunci dan menggunakan kunci yang ditampilkan untuk melindungi set data baru:

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
  }
}

Ganti kode berikut:

  • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
  • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
  • DATASET_ID: ID yang akan digunakan untuk set data baru.
  • DATASET_NAME: nama yang mudah dibaca manusia untuk set data baru.
  • DATASET_DESCRIPTION: deskripsi untuk set data baru.

Cloud KMS tidak mengizinkan Anda menghapus resource KeyHandle. Jika Anda menggunakan pola buat dan hancurkan, upaya membuat ulang KeyHandle akan menghasilkan error ALREADY_EXISTS. Untuk menghindari masalah ini, Anda dapat mengimpor KeyHandle yang dibuat sebelumnya. Untuk informasi selengkapnya, lihat Membuat dan menghapus pola di Terraform di halaman ini.

API

  1. Minta kunci Cloud KMS baru dengan membuat KeyHandle:

    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"}'
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • RESOURCE_TYPE: jenis resource yang ingin Anda buat—misalnya, bigquery.googleapis.com/Dataset.

    Outputnya mirip dengan hal berikut ini:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Catat OPERATION_ID dari output. Anda memerlukan nilai ini untuk mendapatkan ID resource kunci yang dibuat.

  2. Temukan kunci Cloud KMS yang terkait dengan handle kunci:

    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
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • OPERATION_ID: ID operasi permintaan handle kunci dari output langkah sebelumnya.

    Outputnya mirip dengan hal berikut ini:

    {
      "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"
      }
    }
    

    Nilai elemen kmsKey dalam output adalah ID resource lengkap kunci yang dibuat oleh Autokey untuk resource ini. Anda dapat menggunakan ID resource ini dengan cara yang sama seperti menggunakan ID resource untuk resource Cloud KMS lainnya.

  3. Buat set data terenkripsi menggunakan perintah bq mk, dengan flag --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
    

    Ganti kode berikut:

    • LOCATION: lokasi tempat Anda ingin membuat set data.
    • KEY_PROJECT_ID: project ID dari project kunci.
    • KEY_NAME: nama kunci yang ditampilkan dalam output dari langkah sebelumnya.
    • TABLE_EXPIRATION: masa aktif default untuk tabel baru dalam set data ini, dalam detik.
    • DATASET_DESCRIPTION: deskripsi untuk set data baru.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • DATASET_ID: ID set data yang Anda buat.

    Untuk informasi selengkapnya tentang alat bq, lihat Menjelajahi alat command line bq.

Menggunakan Autokey dengan resource Secret Manager

Autokey membuat satu kunci untuk melindungi semua secret dalam project dan lokasi yang sama. Saat kunci dirotasi, secret baru yang ditambahkan ke project akan menggunakan versi utama kunci yang baru.

Secret Manager hanya kompatibel dengan Autokey Cloud KMS saat membuat resource menggunakan Terraform atau REST API.

Membuat resource Secret Manager yang dilindungi

Terraform

Contoh Terraform berikut membuat handle kunci dan menggunakan kunci yang ditampilkan untuk melindungi secret baru dengan replikasi otomatis:

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
      }
    }
  }
}

Ganti kode berikut:

  • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
  • SECRET_ID: ID yang akan digunakan untuk secret baru.

Jika Anda mencoba membuat handle kunci untuk secret di project dan lokasi yang sama dengan handle kunci yang sudah ada, pesan error akan menampilkan detail handle kunci yang ada. Jika hal ini terjadi, pastikan Anda hanya memiliki satu blok yang membuat handle kunci. Anda dapat menggunakan kembali handle kunci menggunakan ID-nya (KEY_HANDLE) untuk membuat secret tambahan yang harus membagikan kunci.

Cloud KMS tidak mengizinkan Anda menghapus resource KeyHandle. Jika Anda menggunakan pola buat dan hancurkan, upaya membuat ulang KeyHandle akan menghasilkan error ALREADY_EXISTS. Untuk menghindari masalah ini, Anda dapat mengimpor KeyHandle yang dibuat sebelumnya. Untuk informasi selengkapnya, lihat Membuat dan menghapus pola di Terraform di halaman ini.

API

  1. Minta kunci Cloud KMS baru dengan membuat KeyHandle:

    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"}'
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • RESOURCE_TYPE: jenis resource yang ingin Anda buat—misalnya, secretmanager.googleapis.com/Secret.

    Outputnya mirip dengan hal berikut ini:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Catat OPERATION_ID dari output. Anda memerlukan nilai ini untuk mendapatkan ID resource kunci yang dibuat.

    Jika Anda mencoba membuat handle kunci untuk secret di project dan lokasi yang sama dengan handle kunci yang sudah ada, pesan error akan menampilkan detail handle kunci yang ada. Dalam hal ini, lewati langkah berikutnya dan gunakan ID resource kunci di kolom existingKmsKey untuk melindungi secret baru Anda.

  2. Temukan kunci Cloud KMS yang terkait dengan handle kunci:

    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
    

    Ganti kode berikut:

    • USER_PROJECT: project yang akan ditagih untuk tagihan yang terkait dengan permintaan ini.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.
    • LOCATION: lokasi tempat Anda ingin membuat resource yang dilindungi.
    • OPERATION_ID: ID operasi permintaan handle kunci dari output langkah sebelumnya.

    Outputnya mirip dengan hal berikut ini:

    {
      "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"
      }
    }
    

    Nilai elemen kmsKey dalam output adalah ID resource lengkap kunci yang dibuat oleh Autokey untuk resource ini. Anda dapat menggunakan ID resource ini dengan cara yang sama seperti menggunakan ID resource untuk resource Cloud KMS lainnya.

  3. Buat secret terenkripsi dengan replikasi otomatis menggunakan perintah gcloud secrets create, dengan flag --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"
    

    Ganti kode berikut:

    • SECRET_ID: ID yang akan digunakan untuk secret baru.
    • KEY_PROJECT_ID: project ID dari project kunci.
    • KEY_NAME: nama kunci yang ditampilkan dalam output dari langkah sebelumnya.
    • RESOURCE_PROJECT_ID: project ID project resource dalam folder Autokey tempat Anda ingin membuat resource yang dilindungi.

Membuat dan menghancurkan pola di Terraform

Cloud KMS tidak mengizinkan Anda menghapus resource KeyHandle. Jika Anda menggunakan Terraform dan pola pembuatan dan penghapusan, mencoba membuat ulang KeyHandle akan menghasilkan error ALREADY_EXISTS. Anda dapat menghindari masalah ini dengan menggunakan blok import. Sisipkan blok berikut sebelum blok resource untuk resource google_kms_key_handle:

import {
  to = google_kms_key_handle.KEY_HANDLE
  id = "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE"
}

Langkah selanjutnya