Aktifkan Kunci Otomatis Cloud KMS

Halaman ini menunjukkan cara mengaktifkan dan mengonfigurasi Kunci Otomatis Cloud KMS pada folder resource. Untuk informasi selengkapnya tentang Kunci otomatis, lihat Ringkasan tombol otomatis. Langkah-langkah di halaman ini harus diselesaikan oleh administrator keamanan.

Sebelum memulai

Sebelum dapat mengaktifkan Kunci Otomatis Cloud KMS, Anda harus memiliki hal berikut:

  • Resource organisasi yang berisi folder tempat Anda ingin mengaktifkan Kunci otomatis. Jika Anda tidak memiliki folder tempat Anda ingin mengaktifkan Kunci otomatis, Anda dapat membuat resource baru folder. Mengaktifkan Kunci Otomatis di folder ini akan mengaktifkan Kunci Otomatis untuk semua project resource dalam folder.
  • Jika Anda memiliki project resource tempat Anda ingin menggunakan Autokey, tetapi mereka tidak ada di dalam folder tempat Anda akan mengaktifkan {i>Autokey<i}, Anda dapat memindahkan project resource yang ada ke folder baru.

Peran yang diperlukan

Untuk mendapatkan izin akses yang Anda butuhkan untuk mengaktifkan dan mengkonfigurasi {i>Autokey<i}, minta administrator untuk memberi Anda peran IAM berikut di organisasi atau folder:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengaktifkan dan mengkonfigurasi {i>Autokey<i}. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengaktifkan dan mengonfigurasi Kunci Otomatis:

  • cloudkms.autokeyConfigs.*
  • cloudkms.projects.showEffectiveAutokeyConfig
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.setIamPolicy
  • billing.resourceAssociations.create

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Tentukan cara mengaktifkan Kunci Otomatis

Anda dapat mengaktifkan Kunci otomatis sebagai bagian dari infrastruktur sebagai kode penting dengan menggunakan Terraform untuk membuat perubahan konfigurasi yang diperlukan. Jika Anda ingin menggunakan Terraform untuk mengaktifkan Autokey, lihat Mengaktifkan Autokey menggunakan Terraform di halaman ini. Jika Anda tidak ingin menggunakan Terraform, mulailah dengan mengikuti petunjuk di bagian berikutnya.

Menyiapkan project kunci

Sebaiknya buat project kunci baru untuk menampung resource Cloud KMS yang dibuat oleh Autokey. Anda harus membuat project kunci di dalam organisasi/pengaturan. Jika Anda sudah memiliki project kunci yang ingin digunakan untuk kunci yang dibuat oleh Kunci otomatis, Anda dapat melewati bagian Membuat project utama dan melanjutkan dari Configure the Autokey key project pada halaman ini.

Project kunci dapat dibuat di dalam folder yang sama tempat Anda berencana mengaktifkan Kunci otomatis. Anda tidak boleh membuat resource lain di dalam project kunci. Jika Anda mencoba membuat resource yang dilindungi oleh Autokey dalam project kunci, Autokey akan menolak permintaan kunci baru.

Jika Anda mungkin ingin bermigrasi ke Assured Workloads di masa mendatang, buat project kunci di dalam folder yang sama dengan resource dilindungi oleh kunci-kunci tersebut.

Jika organisasi Anda menggunakan constraints/gcp.restrictCmekCryptoKeyProjects batasan kebijakan organisasi untuk memastikan bahwa semua CMEK berasal dari kunci yang ditentukan project, Anda harus menambahkan project utama ke daftar project yang diizinkan. Sebagai informasi selengkapnya tentang kebijakan organisasi CMEK, lihat Organisasi CMEK kebijakan yang relevan.

Membuat project utama

Konsol

  1. Di Konsol Google Cloud, buka halaman Manage resources.

    Buka Kelola resource

  2. Untuk Pilih organisasi, pilih resource organisasi tempat Anda ingin membuat proyek.
  3. Klik Buat proyek.
  4. Di jendela New project yang muncul, masukkan nama project dan memilih akun penagihan. Nama project hanya boleh berisi huruf, angka, tanda kutip tunggal, tanda hubung, spasi, atau tanda seru, dan harus berisi antara 4 hingga 30 karakter.
  5. Untuk Location, pilih resource yang ingin Anda jadikan induk proyek utama Anda.
  6. Untuk menyelesaikan pembuatan project, klik Create.

gcloud

  • Membuat sebuah project baru.

    gcloud projects create PROJECT_ID \
        --PARENT_TYPE=PARENT_ID
    

    Ganti kode berikut:

    • PROJECT_ID: ID project yang berisi key ring.
    • PARENT_TYPE: jenis resource tempat Anda ingin membuat project kunci baru. Masuk ke organization untuk membuat proyek kunci baru di bawah organisasi tertentu, atau masukkan folder untuk membuat project kunci baru pada folder tertentu.
    • PARENT_ID: ID organisasi atau folder tempat Anda ingin membuat project kunci.

Menyiapkan project kunci Autokey

Konsol

  1. Aktifkan Cloud KMS API di project kunci Anda.

    Mengaktifkan API

  2. Jika Anda menggunakan project kunci baru, berikan Cloud KMS izin administrator pada project kunci ke Cloud KMS Anda pengguna administrator:

    1. Di konsol Google Cloud, buka halaman IAM.

      Mulai ke IAM

    2. Pilih project utama.

    3. Klik Berikan Akses, lalu masukkan alamat email pengguna.

    4. Pilih peran Cloud KMS Admin.

    5. Klik Simpan.

gcloud

  1. Aktifkan Cloud KMS API pada project kunci Anda:

    gcloud services enable cloudkms.googleapis.com
    
  2. Memberikan izin administrator Cloud KMS pada project kunci kepada pengguna administrator Cloud KMS Anda:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Ganti kode berikut:

    • PROJECT_NUMBER: nomor project kunci proyek.
    • KEY_ADMIN_EMAIL: alamat email pengguna yang bertanggung jawab untuk mengelola kunci Cloud KMS.

Mengaktifkan Kunci Otomatis Cloud KMS di folder resource

Konsol

  1. Di konsol Google Cloud, buka halaman KMS controls.

    Mulai ke kontrol KMS

  2. Dari pemilih konteks, pilih folder yang ingin Anda aktifkan Kunci otomatis.

  3. Klik Aktifkan.

  4. Pilih project kunci Anda, lalu klik Submit.

    Sebuah pesan mengonfirmasi bahwa Kunci Otomatis Cloud KMS diaktifkan pada folder tersebut.

API

Buat AutokeyConfig untuk folder tempat Anda ingin mengaktifkan Kunci otomatis:

curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"key_project": "projects/PROJECT_ID"}'

Ganti kode berikut:

  • FOLDER_ID: ID folder tempat Anda ingin mengaktifkan Autokey.
  • PROJECT_ID: ID project kunci.

Menyiapkan agen layanan Cloud KMS

Agen layanan Cloud KMS untuk project kunci membuat kunci dan menerapkan binding kebijakan IAM selama pembuatan resource, atas nama manusia administrator Cloud KMS. Agar dapat membuat dan menetapkan kunci, Agen layanan Cloud KMS memerlukan administrator Cloud KMS izin akses.

  1. Buat agen layanan Cloud KMS:

    gcloud beta services identity create --service=cloudkms.googleapis.com \
        --project=PROJECT_NUMBER
    

    Ganti PROJECT_NUMBER dengan nomor project kunci proyek.

  2. Berikan izin administrator Cloud KMS ke agen layanan:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ekms.
    

    Ganti PROJECT_NUMBER dengan nomor project project kunci.

Berikan peran pengguna Kunci otomatis

Sebelum developer dapat menggunakan Autokey, Anda harus memberi mereka izin peran yang diperlukan. Anda dapat memberikan peran di level folder atau di project level organisasi. Peran ini memungkinkan developer meminta kunci dari Cloud KMS agen layanan saat membuat resource dalam folder atau project tersebut.

Pilih salah satu atau kedua langkah berikut:

  • Berikan peran roles/cloudkms.autokeyUser di tingkat folder:

    gcloud resource-manager folders add-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ganti kode berikut:

    • FOLDER_ID: ID folder tempat Anda ingin mengaktifkan Autokey.
    • USER_EMAIL: alamat email pengguna yang ingin Anda beri izin untuk menggunakan Autokey.
  • Berikan peran roles/cloudkms.autokeyUser di level project:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ganti kode berikut:

    • PROJECT_ID: ID project resource.
    • USER_EMAIL: alamat email pengguna yang ingin Anda berikan izin untuk menggunakan {i>Autokey<i}.

Developer Kunci otomatis kini dapat membuat kunci secara on demand. Untuk mempelajari cara untuk membuat sumber daya yang dilindungi menggunakan kunci yang dibuat sesuai permintaan oleh {i>Autokey<i}, lihat Membuat resource yang dilindungi menggunakan Kunci otomatis.

Mengaktifkan Kunci Otomatis menggunakan Terraform

Contoh Terraform berikut mengotomatiskan langkah-langkah penyiapan berikut:

  • Membuat folder resource
  • Membuat project utama
  • Memberikan izin pengguna
  • Menyiapkan agen layanan Cloud KMS
  • Mengaktifkan Autokey

Anda harus membuat project resource secara terpisah dalam folder resource.

variable "organization_ID" {
  description = "Your Google Cloud Org ID"
  type        = string
  default     = "ORGANIZATION_ID"
}

variable "billing_account" {
  description = "Your Google Cloud Billing Account ID"
  type        = string
  default     = "BILLING_ACCOUNT_ID"
}

/* List the users who should have the authority to enable and configure
   Autokey at a folder level */
variable "autokey_folder_admins" {
  type    = list(string)
  default = [AUTOKEY_ADMIN_USER_IDS]
}

/* List the users who should have the authority to protect their resources
   with Autokey */
variable "autokey_folder_users" {
  type    = list(string)
  default = [AUTOKEY_DEVELOPER_USER_IDS]
}

/* List the users who should have the authority to manage crypto operations in
   the Autokey key project */
variable "autokey_project_kms_admins" {
  type    = list(string)
  default = [KEY_PROJECT_ADMIN_USER_IDS]
}

/* The project ID to use for the key project. The project ID must be 6 to 30
   characters with lowercase letters, digits, hyphens. The project ID must start
   with a letter. Trailing hyphens are prohibited */
variable "key_management_project_ID" {
  description = "Sets the project ID for the Key Management Project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
  type        = string
  default     = "KEY_PROJECT_ID"
}

# Create a new folder
resource "google_folder" "autokey_folder" {
  parent       = "organizations/${var.organization_ID}"
  display_name = "autokey_folder"
}

# Set permissions for key admins to use Autokey in this folder
resource "google_folder_iam_binding" "autokey_folder_admin" {
  folder  = google_folder.autokey_folder.name
  role    = "roles/cloudkms.autokeyAdmin"
  members = var.autokey_folder_admins
}

# Set permissions for users to protect resources with Autokey in this folder
resource "google_folder_iam_binding" "autokey_folder_users" {
  folder  = google_folder.autokey_folder.name
  role    = "roles/cloudkms.autokeyUser"
  members = var.autokey_folder_users
}

# Create a key project to store keys created by Autokey
 resource "google_project" "key_management_project" {
  project_id      = var.key_management_project_ID
  name            = var.key_management_project_ID
  billing_account = var.billing_account
  folder_id       = google_folder.autokey_folder.name
}

output "project_number" {
  value = google_project.key_management_project.number
}

# Grant role for Cloud KMS admins to use Autokey in the key project
resource "google_project_iam_binding" "autokey_project_admin" {
  project    = google_project.key_management_project.project_id
  role       = "roles/cloudkms.admin"
  members    = var.autokey_project_kms_admins
  depends_on = [ google_project.key_management_project ]
}

# Enable the Cloud KMS API in the key project
resource "google_project_service" "enable_api" {
  service                    = "cloudkms.googleapis.com"
  project                    = google_project.key_management_project.project_id
  disable_on_destroy         = false
  disable_dependent_services = false
  depends_on                 = [google_project.key_management_project]
}

# Create Cloud KMS service agent
resource "google_project_service_identity" "KMS_Service_Agent" {
  provider   = google-beta
  service    = "cloudkms.googleapis.com"
  project    = google_project.key_management_project.project_id
  depends_on = [google_project.key_management_project]
}

/* Grant role for the Cloud KMS service agent to use delegated
   Cloud KMS admin permissions */
resource "google_project_iam_member" "autokey_project_admin" {
  project = google_project.key_management_project.project_id
  role    = "roles/cloudkms.admin"
  member  = "serviceAccount:service-${google_project.key_management_project.number}@gcp-sa-ekms."
}

/* Enable AutokeyConfig in this folder */
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = google_project.key_management_project.project_id
}

Ganti kode berikut:

  • BILLING_ACCOUNT_ID: penagihan Google Cloud Anda ID akun. ID akun penagihan adalah nilai alfanumerik yang berisi 18 karakter dipisahkan dengan tanda hubung—misalnya, 010101-F0FFF0-10XX01.
  • AUTOKEY_ADMIN_USER_IDS: daftar alamat email untuk pengguna yang harus memiliki peran roles/cloudkms.autokeyAdmin—untuk contoh, "Ariel@example.com", "Charlie@example.com".
  • AUTOKEY_DEVELOPER_USER_IDS: daftar alamat email untuk pengguna yang harus memiliki peran roles/cloudkms.autokeyUser—untuk contoh, "Kalani@example.com", "Mahan@example.com".
  • KEY_PROJECT_ADMIN_USER_IDS: daftar alamat email untuk pengguna yang harus memiliki peran roles/cloudkms.admin—misalnya, "Sasha@example.com", "Nur@example.com".
  • KEY_PROJECT_ID: ID yang akan digunakan untuk project kunci—misalnya, autokey-key-project.

Terapkan penggunaan Kunci otomatis

Jika Anda ingin menerapkan penggunaan {i>Autokey<i} di dalam folder, Anda dapat melakukannya dengan menggabungkan kontrol akses IAM dengan kebijakan organisasi CMEK. Hal ini dilakukan dengan menghapus izin pembuatan kunci dari akun utama selain agen layanan Cloud KMS, lalu mewajibkan semua resource dilindungi oleh CMEK menggunakan project kunci Autokey.

Untuk menerapkan penggunaan Kunci otomatis dalam folder, selesaikan langkah-langkah berikut:

  1. Hapus akses untuk membuat kunci secara manual di project kunci. Jika kunci tidak dapat dibuat secara manual, maka hanya kunci yang dibuat oleh Kunci otomatis yang dapat dibuat dalam project ini. Untuk informasi selengkapnya tentang mengontrol akses, lihat Kontrol akses dengan IAM.

  2. Tetapkan kebijakan organisasi pada folder untuk mengharuskan resource harus dilindungi dengan CMEK menggunakan constraints/gcp.restrictNonCmekServices batasan data. Untuk informasi selengkapnya, lihat Memerlukan perlindungan CMEK.

  3. Menetapkan kebijakan organisasi pada folder untuk mewajibkan penggunaan kunci untuk CMEK harus berasal dari project kunci Autokey menggunakan Batasan constraints/gcp.restrictCmekCryptoKeyProjects. Untuk informasi selengkapnya, lihat Membatasi penggunaan kunci Cloud KMS untuk CMEK.

Nonaktifkan Kunci Otomatis

Kunci Otomatis Cloud KMS diaktifkan dan dinonaktifkan di level folder. Peran yang sama yang dapat mengaktifkan Kunci Otomatis untuk folder dapat menonaktifkan Kunci Otomatis untuk folder tersebut. Untuk menonaktifkan Autokey pada folder, Anda harus menghapus AutokeyConfig untuk menghapus pengaitan antara folder dan Project tombol otomatis.

Setelah konfigurasi Autokey pada folder dihapus, Agen layanan Cloud KMS tidak dapat lagi membuat kunci untuk developer saat mereka membuat resource dalam folder. Menghapus tautan antara folder dan project key menonaktifkan Autokey di folder; Namun, kita sebaiknya Anda juga menghapus binding IAM untuk Peran roles/cloudkms.autokeyAdmin dan roles/cloudkms.autokeyUser.

Menonaktifkan Kunci Otomatis tidak memengaruhi kunci yang ada di project kunci. Anda dapat terus menggunakan kunci ini untuk melindungi resource Anda.

Menghapus AutokeyConfig

Konsol

  1. Di konsol Google Cloud, buka halaman KMS controls.

    Mulai ke kontrol KMS

  2. Dari pemilih konteks, pilih folder yang ingin Anda nonaktifkan Kunci otomatis.

  3. Klik Disable.

    Sebuah pesan yang meminta Anda untuk mengonfirmasi bahwa Anda ingin menonaktifkan akan muncul Kunci otomatis.

  4. Untuk menonaktifkan Kunci Otomatis, klik Konfirmasi.

    Pesan akan mengonfirmasi bahwa Kunci Otomatis Cloud KMS dinonaktifkan di folder.

API

Hapus AutokeyConfig untuk folder yang ingin dinonaktifkan Kunci otomatis:

curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{}'

Ganti kode berikut:

  • FOLDER_ID: ID folder tempat Anda ingin menonaktifkan Autokey.

Cabut peran Kunci otomatis

  1. Opsional: Cabut peran roles/cloudkms.autokeyAdmin:

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyAdmin \
        --member=user:USER_EMAIL
    

    Ganti kode berikut:

    • FOLDER_ID: ID folder tempat Anda menonaktifkan Autokey.
    • USER_EMAIL: alamat email pengguna untuk siapa yang ingin Anda cabut izin untuk mengelola Kunci Otomatis.
  2. Opsional: Cabut peran roles/cloudkms.autokeyUser di tingkat folder:

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ganti kode berikut:

    • FOLDER_ID: ID folder tempat Anda menonaktifkan Autokey.
    • USER_EMAIL: alamat email pengguna yang izinnya ingin Anda cabut untuk menggunakan Autokey.
  3. Opsional: Mencabut peran roles/cloudkms.autokeyUser di level project:

    gcloud projects remove-iam-policy-binding RESOURCE_PROJECT_NUMBER \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ganti kode berikut:

    • RESOURCE_PROJECT_NUMBER: jumlah project project resource dalam folder tempat Anda menonaktifkan Autokey.
    • USER_EMAIL: alamat email pengguna yang izinnya ingin Anda cabut untuk menggunakan Autokey.
  4. Opsional: Jika Anda tidak berencana untuk terus menggunakan project kunci untuk Kunci otomatis untuk folder lain, cabut peran roles/cloudkms.admin untuk agen layanan Cloud KMS:

    gcloud projects remove-iam-policy-binding KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.
    

    Ganti KEY_PROJECT_NUMBER dengan ID numerik project utama.

  5. Opsional: Jika Anda tidak berencana untuk terus menggunakan kunci yang dibuat di dalam project kunci, cabut peran roles/cloudkms.admin untuk administrator Cloud KMS:

    gcloud projects remove-iam-policy-binding KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Ganti kode berikut:

    • KEY_PROJECT_NUMBER: nomor project project utama.
    • USER_EMAIL: alamat email pengguna untuk siapa Anda ingin mencabut izin untuk menggunakan {i>Autokey<i}.

Langkah selanjutnya