All Products
Search
Document Center

Key Management Service:Buat kunci KMS

Last Updated:Jun 05, 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.

Catatan

Anda dapat menjalankan kode contoh dengan satu klik. Jalankan dengan satu klik

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, lampirkan 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.

    Buat sumber daya dengan Terraform: 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 koneksi jaringan yang buruk 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

Buat kunci dalam instans KMS

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 memperoleh 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 jalankan 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 kredensial, 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 = "deskripsi default_key_encrypt_decrypt"
      # 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.

    Initializing the backend...
    
    Initializing provider plugins...
    - Reusing previous version of hashicorp/alicloud from the dependency lock file
    - Using previously-installed hashicorp/alicloud v1.231.0
    
    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  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.

    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    ...
    alicloud_kms_key.kms_software_key_encrypt_decrypt: Creating...
    alicloud_kms_key.kms_software_key_encrypt_decrypt: Creation complete after 0s [id=key-shh6715c21812y8i7z***]
    alicloud_kms_alias.kms_software_key_encrypt_decrypt_alias: Creating...
    alicloud_kms_alias.kms_software_key_encrypt_decrypt_alias: Creation complete after 0s [id=alias/kms_secret]
    ...
    
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  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

Jika 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

Catatan

Anda dapat menjalankan kode contoh dengan satu klik. Jalankan dengan satu klik

Kode contoh

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 memperoleh 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 jalankan 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 kredensial, 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 = "deskripsi default_key_encrypt_decrypt"
  # 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
}