Mengaktifkan Kunci Otomatis Cloud KMS

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

Sebelum memulai

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

  • Resource organisasi yang berisi folder tempat Anda ingin mengaktifkan Autokey. Jika Anda tidak memiliki folder tempat Anda ingin mengaktifkan Autokey, Anda dapat membuat folder resource baru. Mengaktifkan Autokey di folder ini akan mengaktifkan Autokey untuk semua project resource dalam folder tersebut.
  • Jika Anda memiliki project resource yang ingin menggunakan Autokey, tetapi tidak berada di dalam folder tempat Anda akan mengaktifkan Autokey, Anda dapat memindahkan project resource yang ada ke folder baru.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengaktifkan dan mengonfigurasi Autokey, minta administrator Anda untuk memberikan peran IAM berikut pada 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 mengonfigurasi Autokey. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengaktifkan dan mengonfigurasi Autokey:

  • 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 Anda ingin mengaktifkan Autokey

Anda dapat mengaktifkan Autokey sebagai bagian dari strategi infrastruktur sebagai kode dengan menggunakan Terraform untuk melakukan 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 utama

Sebaiknya buat project kunci baru yang berisi resource Cloud KMS yang dibuat oleh Autokey. Anda harus membuat project utama di dalam resource organisasi Anda. Jika sudah memiliki project kunci yang ingin digunakan untuk kunci yang dibuat oleh Autokey, Anda dapat melewati bagian Buat project kunci dan melanjutkan dari Konfigurasi project kunci Autokey di halaman ini.

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

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

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

Membuat project utama

Konsol

  1. Di konsol Google Cloud , buka halaman Kelola resource.

    Buka Kelola resource

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

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. Masukkan organization untuk membuat project kunci baru di organisasi tertentu, atau masukkan folder untuk membuat project kunci baru di folder tertentu.
    • PARENT_ID: ID organisasi atau folder tempat Anda ingin membuat project utama.

Menyiapkan project kunci Autokey

Konsol

  1. Aktifkan Cloud KMS API di project kunci Anda.

    Mengaktifkan API

  2. Jika Anda menggunakan project kunci baru, berikan izin administrator Cloud KMS pada project kunci. Ulangi langkah-langkah berikut untuk memberikan peran Admin Cloud KMS kepada Anda dan setiap pengguna administrator Cloud KMS lainnya:

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM

    2. Pilih project utama.

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

    4. Pilih peran Admin Cloud KMS.

    5. Klik Simpan.

gcloud

  1. Aktifkan Cloud KMS API di project kunci Anda:

    gcloud services enable cloudkms.googleapis.com
    
  2. Berikan izin administrator Cloud KMS di project kunci. Ulangi perintah berikut untuk memberikan peran roles/cloudkms.admin kepada diri Anda dan setiap pengguna administrator Cloud KMS lainnya:

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

    Ganti kode berikut:

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

Mengaktifkan Autokey Cloud KMS di folder resource

Konsol

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

    Buka kontrol KMS

  2. Dari pemilih konteks, pilih folder tempat Anda ingin mengaktifkan Autokey.

  3. Klik Enable.

  4. Pilih project utama Anda, lalu klik Kirim.

    Pesan mengonfirmasi bahwa Autokey Cloud KMS diaktifkan di folder.

API

Buat AutokeyConfig untuk folder tempat Anda ingin mengaktifkan Autokey:

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 administrator Cloud KMS manusia. Agar dapat membuat dan menetapkan kunci, agen layanan Cloud KMS memerlukan izin administrator Cloud KMS.

  1. Buat agen layanan Cloud KMS:

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

    Ganti PROJECT_NUMBER dengan nomor project project kunci.

    Outputnya mirip dengan hal berikut ini:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

    Output perintah menunjukkan bahwa akun layanan Cloud EKM (dengan subdomain gcp-sa-ekms) telah dibuat. Namun, perintah ini juga membuat agen layanan Cloud KMS (dengan subdomain gcp-sa-cloudkms), yang merupakan agen layanan yang akan Anda gunakan nanti dalam petunjuk ini.

  2. Berikan izin administrator Cloud KMS kepada agen layanan:

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

    Ganti PROJECT_NUMBER dengan nomor project project kunci.

Memberikan peran pengguna Autokey

Sebelum developer Anda dapat menggunakan Autokey, Anda harus memberi mereka peran yang diperlukan. Anda dapat memberikan peran di tingkat folder atau di tingkat project. Peran ini memungkinkan developer meminta kunci dari agen layanan Cloud KMS saat membuat resource di 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 tingkat 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 beri izin untuk menggunakan Autokey.

Developer Autokey Anda kini dapat membuat kunci sesuai permintaan. Untuk mempelajari cara membuat resource yang dilindungi menggunakan kunci yang dibuat sesuai permintaan oleh Autokey, lihat Membuat resource yang dilindungi menggunakan Autokey.

Mengaktifkan Autokey menggunakan Terraform

Contoh Terraform berikut mengotomatiskan langkah-langkah penyiapan berikut:

  • Buat 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-cloudkms.iam.gserviceaccount.com"
}

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

Ganti kode berikut:

  • BILLING_ACCOUNT_ID: ID akun penagihan Anda. Google Cloud ID akun penagihan adalah nilai alfanumerik 18 karakter yang dipisahkan dengan tanda hubung—misalnya, 010101-F0FFF0-10XX01.
  • AUTOKEY_ADMIN_USER_IDS: daftar alamat email untuk pengguna yang harus memiliki peran roles/cloudkms.autokeyAdmin—misalnya, "Ariel@example.com", "Charlie@example.com".
  • AUTOKEY_DEVELOPER_USER_IDS: daftar alamat email untuk pengguna yang harus memiliki peran roles/cloudkms.autokeyUser—misalnya, "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.

Menerapkan penggunaan Autokey

Jika ingin menerapkan penggunaan Autokey dalam folder, Anda dapat melakukannya dengan menggabungkan kontrol akses IAM dengan kebijakan organisasi CMEK. Cara kerjanya adalah dengan menghapus izin pembuatan kunci dari prinsipal selain agen layanan Cloud KMS, lalu mewajibkan semua resource dilindungi oleh CMEK menggunakan project kunci Autokey.

Untuk menerapkan penggunaan Autokey 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 Autokey yang dapat dibuat di project ini. Untuk mengetahui informasi selengkapnya tentang cara mengontrol akses, lihat Kontrol akses dengan IAM.

  2. Tetapkan kebijakan organisasi di folder untuk mewajibkan agar resource dilindungi dengan CMEK menggunakan batasan constraints/gcp.restrictNonCmekServices. Untuk mengetahui informasi selengkapnya, lihat Mewajibkan perlindungan CMEK.

  3. Tetapkan kebijakan organisasi di folder untuk mewajibkan kunci yang digunakan untuk CMEK berasal dari project kunci Autokey menggunakan batasan constraints/gcp.restrictCmekCryptoKeyProjects. Untuk mengetahui informasi selengkapnya, lihat Membatasi penggunaan kunci Cloud KMS untuk CMEK.

Menonaktifkan Autokey

Autokey Cloud KMS diaktifkan dan dinonaktifkan di tingkat folder. Peran yang sama yang dapat mengaktifkan Autokey untuk folder dapat menonaktifkan Autokey untuk folder tersebut. Untuk menonaktifkan Autokey di folder, Anda harus menghapus AutokeyConfig untuk menghapus pengaitan antara folder dan project kunci Autokey.

Setelah konfigurasi Autokey di folder dihapus, agen layanan Cloud KMS tidak dapat lagi membuat kunci untuk developer saat mereka membuat resource di folder. Menghapus link antara folder dan project utama akan menonaktifkan Autokey di folder; namun, sebaiknya Anda juga menghapus binding IAM untuk peran roles/cloudkms.autokeyAdmin dan roles/cloudkms.autokeyUser.

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

Hapus AutokeyConfig

Konsol

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

    Buka kontrol KMS

  2. Dari pemilih konteks, pilih folder tempat Anda ingin menonaktifkan Kunci Otomatis.

  3. Klik Nonaktifkan.

    Pesan akan muncul untuk meminta Anda mengonfirmasi bahwa Anda ingin menonaktifkan Autokey.

  4. Untuk menonaktifkan Autokey, klik Konfirmasi.

    Pesan mengonfirmasi bahwa Autokey Cloud KMS dinonaktifkan di folder.

API

Hapus AutokeyConfig untuk folder tempat Anda ingin menonaktifkan Autokey:

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.

Mencabut peran Autokey

  1. Opsional: Mencabut 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 yang izinnya untuk mengelola Autokey ingin Anda batalkan.
  2. Opsional: Batalkan 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 ingin Anda batalkan izinnya untuk menggunakan Autokey.
  3. Opsional: Batalkan peran roles/cloudkms.autokeyUser di tingkat project:

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

    Ganti kode berikut:

    • RESOURCE_PROJECT_NUMBER: nomor project project resource dalam folder tempat Anda menonaktifkan Autokey.
    • USER_EMAIL: alamat email pengguna yang ingin Anda batalkan izinnya untuk menggunakan Autokey.
  4. Opsional: Jika Anda tidak berencana untuk terus menggunakan project kunci untuk Autokey bagi folder lain, batalkan 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-cloudkms.iam.gserviceaccount.com
    

    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, batalkan 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 dari project kunci.
    • USER_EMAIL: alamat email pengguna yang ingin Anda batalkan izinnya untuk menggunakan Autokey.

Langkah berikutnya