全部产品
Search
文档中心

Key Management Service:Buat kunci menggunakan Terraform

更新时间:Feb 27, 2026

Anda dapat menggunakan Terraform untuk membuat dan mengelola kunci. Topik ini menjelaskan cara membuat kunci.

Ikhtisar

Key Management Service (KMS) memungkinkan Anda membuat kunci master default tanpa perlu membeli instans KMS. Anda juga dapat membuat kunci dalam instans KMS. Untuk informasi selengkapnya tentang kunci, lihat Ikhtisar layanan kunci.

Prasyarat

  • Menggunakan Akun Alibaba Cloud dengan izin penuh atas semua sumber dayanya menimbulkan ancaman keamanan tinggi jika kredensialnya bocor. Kami menyarankan agar Anda menggunakan pengguna Resource Access Management (RAM) dan membuat AccessKey untuk pengguna tersebut. Untuk informasi selengkapnya, lihat Buat pengguna RAM dan Buat AccessKey.

  • Untuk memberikan izin kepada pengguna RAM, sambungkan kebijakan AliyunKMSFullAccess. Kebijakan ini memberikan izin untuk mengelola Key Management Service (KMS). Untuk informasi selengkapnya, lihat Kelola izin pengguna RAM.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:*"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {}
        }
      ]
    }
  • Persiapkan lingkungan Terraform. Anda dapat memilih salah satu metode berikut untuk menggunakan Terraform:

    Gunakan Terraform di Explorer: Alibaba Cloud menyediakan lingkungan online untuk Terraform. Anda tidak perlu menginstal Terraform dan dapat langsung masuk untuk menggunakannya serta mengujinya secara online. Metode ini cocok untuk skenario pengujian dan debugging Terraform yang cepat, nyaman, dan tanpa biaya.

    Cloud Shell: Komponen Terraform telah dipra-instal di Alibaba Cloud Cloud Shell, dan kredensial identitas Anda dikonfigurasi secara otomatis. Anda dapat langsung menjalankan perintah Terraform di Cloud Shell. Metode ini cocok untuk skenario akses dan penggunaan Terraform yang cepat, nyaman, dan berbiaya rendah.

    Instal dan konfigurasi Terraform secara lokal: Metode ini cocok untuk skenario dengan konektivitas jaringan terbatas atau ketika diperlukan lingkungan pengembangan kustom.

Penting

Pastikan versi Terraform Anda adalah 0.12.28 atau lebih baru. Untuk memeriksa versi saat ini, jalankan perintah terraform --version.

Sumber daya yang digunakan

Prosedur

Contoh ini menunjukkan cara membuat kunci dalam instans KMS.

  1. Buat direktori kerja. Di dalam direktori tersebut, buat file konfigurasi bernama main.tf. File main.tf merupakan file utama Terraform yang mendefinisikan sumber daya yang akan dideploy. Pastikan Anda telah membuat instans KMS sebelum memulai.

    variable "region" {
      default = "cn-shanghai"
    }
    
    provider "alicloud" {
      region = var.region
    }
    variable "instance_name" {
      default = "tf-kms-vpc-172-16"
    }
    
    variable "instance_type" {
      default = "ecs.n1.tiny"
    }
    # Gunakan sumber data untuk mendapatkan informasi tentang zona yang tersedia. Sumber daya hanya dapat dibuat di zona yang ditentukan.
    data "alicloud_zones" "default" {
      available_disk_category     = "cloud_efficiency"
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    # Buat VPC.
    resource "alicloud_vpc" "vpc" {
      vpc_name   = var.instance_name
      cidr_block = "172.16.0.0/12"
    }
    # Buat vSwitch dengan blok CIDR 172.16.0.0/21.
    resource "alicloud_vswitch" "vsw" {
      vpc_id     = alicloud_vpc.vpc.id
      cidr_block = "172.16.0.0/21"
      zone_id    = data.alicloud_zones.default.zones.0.id
      vswitch_name = "terraform-example-1"
    }
    # Buat vSwitch lain dengan blok CIDR 172.16.128.0/17.
    resource "alicloud_vswitch" "vsw1" {
      vpc_id     = alicloud_vpc.vpc.id
      cidr_block = "172.16.128.0/17"
      zone_id    = data.alicloud_zones.default.zones.1.id
      vswitch_name = "terraform-example-2"
    }
    # Buat instans manajemen kunci perangkat lunak dan mulai dengan parameter jaringan.
    resource "alicloud_kms_instance" "default" {
      timeouts {
        delete = "20m" # Tetapkan periode timeout untuk penghapusan.
      }
      # Instans manajemen kunci perangkat lunak.
      product_version = "3"
      vpc_id          = alicloud_vpc.vpc.id
      # Tentukan zona untuk instans KMS menggunakan ID zona yang diperoleh.
      zone_ids = [
        data.alicloud_zones.default.zones.0.id,
        data.alicloud_zones.default.zones.1.id
      ]
      # ID vSwitch.
      vswitch_ids = [
        alicloud_vswitch.vsw.id,alicloud_vswitch.vsw1.id
      ]
      # Performa komputasi, jumlah kunci, jumlah rahasia, dan jumlah operasi manajemen akses.
      vpc_num    = "1"
      key_num    = "1000"
      secret_num = "100"
      spec       = "1000"
      # Asosiasikan instans KMS dengan VPC lain. Parameter ini opsional.
      # Jika VPC dan VPC instans KMS berada di bawah akun Alibaba Cloud yang berbeda, Anda harus terlebih dahulu berbagi vSwitch.
      #bind_vpcs {
      #vpc_id = "vpc-j6cy0l32yz9ttxfy6****"
      #vswitch_id = "vsw-j6cv7rd1nz8x13ram****"
      #region_id = "cn-shanghai"
      #vpc_owner_id = "119285303511****"
      #}
      #bind_vpcs {
      #vpc_id = "vpc-j6cy0l32yz9ttd7g3****"
      #vswitch_id = "vsw-3h4yrd1nz8x13ram****"
      #region_id = "cn-shanghai"
      #vpc_owner_id = "119285303511****"
      #}
    }
    
    # Simpan sertifikat CA instans KMS ke file lokal.
     resource "local_file" "ca_certificate_chain_pem" {
     content  = alicloud_kms_instance.default.ca_certificate_chain_pem
     filename = "ca.pem"
    }

    Buat kunci dalam instans KMS:

    # Spesifikasi kunci adalah Aliyun_AES_256, dan kunci digunakan untuk enkripsi dan dekripsi (ENCRYPT/DECRYPT).
    resource "alicloud_kms_key" "kms_software_key_encrypt_decrypt" {
      timeouts {
        delete = "20m" # Tetapkan periode timeout untuk penghapusan.
      }
      description = "default_key_encrypt_decrypt description"
      # Penggunaan kunci. Nilai default: ENCRYPT/DECRYPT. Nilai valid: ENCRYPT/DECRYPT, yang menunjukkan bahwa kunci digunakan untuk mengenkripsi atau mendekripsi data.
      key_usage = "ENCRYPT/DECRYPT"
      # Spesifikasi kunci. Nilai default: Aliyun_AES_256.
      key_spec = "Aliyun_AES_256"
      # Sumber bahan kunci. Nilai default: Aliyun_KMS. Nilai valid: Aliyun_KMS dan EXTERNAL.
      origin = "Aliyun_KMS"
      # ID instans KMS.
      # Jika Anda menambahkan parameter ini, kunci akan dibuat dalam instans KMS. Jika tidak, kunci master default akan dibuat.
      dkms_instance_id = alicloud_kms_instance.default.id
      # Jumlah hari sebelum CMK dihapus.
      pending_window_in_days = 7
      # Pemetaan tag yang akan ditetapkan ke sumber daya. Ini opsional.
      #tags = {
          #"Environment" = "Production"
          #"Name" = "KMS-01"
          #"SupportTeam" = "PlatformEngineering"
          #"Contact" = "aliyun@test.com"
        #}
    }
    # Alias kunci adalah alias/kms_software_key_encrypt_decrypt, yang harus unik dalam satu Akun Alibaba Cloud.
    resource "alicloud_kms_alias" "kms_software_key_encrypt_decrypt_alias" {
      # Alias.
      alias_name = "alias/kms_software_key_encrypt_decrypt"
      # ID kunci.
      key_id = alicloud_kms_key.kms_software_key_encrypt_decrypt.id
    }
  2. Jalankan perintah berikut untuk menginisialisasi lingkungan Terraform.

    terraform init

    Output berikut menunjukkan bahwa inisialisasi berhasil.

    Menginisialisasi backend...
    
    Menginisialisasi plugin penyedia...
    - Menggunakan versi sebelumnya dari hashicorp/alicloud dari file kunci dependensi
    - Menggunakan hashicorp/alicloud v1.231.0 yang diinstal sebelumnya
    
    Terraform berhasil diinisialisasi!
    
    Anda sekarang dapat mulai bekerja dengan Terraform. Coba jalankan "terraform plan" untuk melihat
    perubahan apa pun yang diperlukan untuk infrastruktur Anda. Semua perintah Terraform
    seharusnya sekarang berfungsi.
    
    Jika Anda pernah menyetel atau mengubah modul atau konfigurasi backend untuk Terraform,
    jalankan ulang perintah ini untuk menginisialisasi ulang direktori kerja Anda. Jika Anda lupa, perintah lain
    akan mendeteksinya dan mengingatkan Anda untuk melakukannya jika perlu.
  3. Buat rencana eksekusi dan pratinjau perubahan.

    terraform plan
  4. Jalankan perintah berikut untuk membuat kunci.

    terraform apply

    Saat diminta, masukkan yes dan tekan tombol Enter. Tunggu hingga perintah selesai. Output berikut menunjukkan bahwa kunci telah dibuat.

    Apakah Anda ingin melakukan tindakan ini?
      Terraform akan melakukan tindakan yang dijelaskan di atas.
      Hanya 'yes' yang akan diterima untuk menyetujui.
    
      Masukkan nilai: yes
    
    ...
    alicloud_kms_key.kms_software_key_encrypt_decrypt: Membuat...
    alicloud_kms_key.kms_software_key_encrypt_decrypt: Pembuatan selesai setelah 0 detik [id=key-shh6715c21812y8i7z***]
    alicloud_kms_alias.kms_software_key_encrypt_decrypt_alias: Membuat...
    alicloud_kms_alias.kms_software_key_encrypt_decrypt_alias: Pembuatan selesai setelah 0 detik [id=alias/kms_secret]
    ...
    
    Penerapan selesai! Sumber daya: 2 ditambahkan, 0 diubah, 0 dihapus.
  5. Verifikasi hasilnya.

    Jalankan perintah terraform show

    Jalankan perintah berikut untuk melihat detail sumber daya yang dibuat oleh Terraform:

    terraform show

    image

    Login ke Konsol Key Management Service

    Login ke Konsol Key Management Service untuk melihat kunci yang telah dibuat.

Bersihkan sumber daya

Ketika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola oleh Terraform, jalankan perintah berikut untuk melepaskannya. Untuk informasi selengkapnya tentang terraform destroy, lihat Perintah umum.

terraform destroy

Contoh lengkap

Kode sampel

variable "region" {
  default = "cn-shanghai"
}

provider "alicloud" {
  region = var.region
}
variable "instance_name" {
  default = "tf-kms-vpc-172-16"
}

variable "instance_type" {
  default = "ecs.n1.tiny"
}
# Gunakan sumber data untuk mendapatkan informasi tentang zona yang tersedia. Sumber daya hanya dapat dibuat di zona yang ditentukan.
data "alicloud_zones" "default" {
  available_disk_category     = "cloud_efficiency"
  available_resource_creation = "VSwitch"
  available_instance_type     = var.instance_type
}
# Buat VPC.
resource "alicloud_vpc" "vpc" {
  vpc_name   = var.instance_name
  cidr_block = "172.16.0.0/12"
}
# Buat vSwitch dengan blok CIDR 172.16.0.0/21.
resource "alicloud_vswitch" "vsw" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "172.16.0.0/21"
  zone_id    = data.alicloud_zones.default.zones.0.id
  vswitch_name = "terraform-example-1"
}
# Buat vSwitch lain dengan blok CIDR 172.16.128.0/17.
resource "alicloud_vswitch" "vsw1" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "172.16.128.0/17"
  zone_id    = data.alicloud_zones.default.zones.0.id
  vswitch_name = "terraform-example-2"
}
# Buat instans manajemen kunci perangkat lunak dan mulai dengan parameter jaringan.
resource "alicloud_kms_instance" "default" {
  timeouts {
    delete = "20m" # Tetapkan periode timeout untuk penghapusan.
  }
  # Instans manajemen kunci perangkat lunak.
  product_version = "3"
  vpc_id          = alicloud_vpc.vpc.id
  # Tentukan zona untuk instans KMS menggunakan ID zona yang diperoleh.
  zone_ids = [
    data.alicloud_zones.default.zones.0.id,
    data.alicloud_zones.default.zones.1.id
  ]
  # ID vSwitch.
  vswitch_ids = [
    alicloud_vswitch.vsw.id,alicloud_vswitch.vsw1.id
  ]
  # Performa komputasi, jumlah kunci, jumlah rahasia, dan jumlah operasi manajemen akses.
  vpc_num    = "1"
  key_num    = "1000"
  secret_num = "100"
  spec       = "1000"
  # Asosiasikan instans KMS dengan VPC lain. Parameter ini opsional.
  # Jika VPC dan VPC instans KMS berada di bawah akun Alibaba Cloud yang berbeda, Anda harus terlebih dahulu berbagi vSwitch.
  #bind_vpcs {
  #vpc_id = "vpc-j6cy0l32yz9ttxfy6****"
  #vswitch_id = "vsw-j6cv7rd1nz8x13ram****"
  #region_id = "cn-shanghai"
  #vpc_owner_id = "119285303511****"
  #}
  #bind_vpcs {
  #vpc_id = "vpc-j6cy0l32yz9ttd7g3****"
  #vswitch_id = "vsw-3h4yrd1nz8x13ram****"
  #region_id = "cn-shanghai"
  #vpc_owner_id = "119285303511****"
  #}
}

# Simpan sertifikat CA instans KMS ke file lokal.
 resource "local_file" "ca_certificate_chain_pem" {
 content  = alicloud_kms_instance.default.ca_certificate_chain_pem
 filename = "ca.pem"
}

# Spesifikasi kunci adalah Aliyun_AES_256, dan kunci digunakan untuk enkripsi dan dekripsi (ENCRYPT/DECRYPT).
resource "alicloud_kms_key" "kms_software_key_encrypt_decrypt" {
  timeouts {
    delete = "20m" # Tetapkan periode timeout untuk penghapusan.
  }
  description = "default_key_encrypt_decrypt description"
  # Penggunaan kunci. Nilai default: ENCRYPT/DECRYPT. Nilai valid: ENCRYPT/DECRYPT, yang menunjukkan bahwa kunci digunakan untuk mengenkripsi atau mendekripsi data.
  key_usage = "ENCRYPT/DECRYPT"
  # Spesifikasi kunci. Nilai default: Aliyun_AES_256.
  key_spec = "Aliyun_AES_256"
  # ID instans KMS.
  # Jika Anda menambahkan parameter ini, kunci akan dibuat dalam instans KMS. Jika tidak, kunci master default akan dibuat.
  dkms_instance_id = alicloud_kms_instance.default.id
  # Jumlah hari sebelum CMK dihapus.
  pending_window_in_days = 7
  # Pemetaan tag yang akan ditetapkan ke sumber daya. Ini opsional.
  #tags = {
      #"Environment" = "Production"
      #"Name" = "KMS-01"
      #"SupportTeam" = "PlatformEngineering"
      #"Contact" = "aliyun@test.com"
    #}
}
# Alias kunci adalah alias/kms_software_key_encrypt_decrypt, yang harus unik dalam satu Akun Alibaba Cloud.
resource "alicloud_kms_alias" "kms_software_key_encrypt_decrypt_alias" {
  # Alias.
  alias_name = "alias/kms_software_key_encrypt_decrypt"
  # ID kunci.
  key_id = alicloud_kms_key.kms_software_key_encrypt_decrypt.id
}