All Products
Search
Document Center

Key Management Service:Buat titik akses aplikasi menggunakan Terraform

Last Updated:Apr 11, 2026

Anda dapat membuat dan mengelola titik akses aplikasi menggunakan Terraform. Topik ini menjelaskan cara membuat titik akses aplikasi.

Ikhtisar

Sebelum aplikasi yang Anda kelola sendiri dapat melakukan operasi kriptografi atau mengambil nilai rahasia, aplikasi tersebut harus menggunakan kunci klien dari titik akses aplikasi untuk mengakses instans KMS.

Catatan

Titik akses aplikasi hanya diperlukan saat menggunakan SDK instans KMS untuk mengakses kunci atau rahasia. Titik akses ini tidak diperlukan untuk enkripsi sisi server dengan layanan Alibaba Cloud lainnya atau untuk mengakses rahasia dengan SDK KMS utama.

Catatan

Anda dapat menjalankan kode contoh dalam topik ini secara langsung di Terraform Explorer.

Prasyarat

  • Akun root Anda memiliki izin penuh atas semua resource Anda. Akun root yang dikompromikan menimbulkan risiko keamanan signifikan. Kami menyarankan agar Anda menggunakan RAM user dan membuat Pasangan Kunci Akses untuknya. Untuk informasi selengkapnya, lihat Buat RAM user dan Buat Pasangan Kunci Akses.

  • Berikan izin AliyunKMSFullAccess kepada RAM user untuk mengelola Key Management Service (KMS). Untuk informasi selengkapnya, lihat Berikan izin kepada RAM user.

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

    Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan online untuk menggunakan Terraform tanpa instalasi lokal. Metode ini ideal untuk mencoba dan men-debug Terraform dengan cepat dan mudah tanpa biaya.

    Gunakan Terraform untuk membuat resource dengan cepat: Alibaba Cloud Cloud Shell telah memiliki Terraform pra-instal dan otentikasi yang telah dikonfigurasi sebelumnya. Anda dapat menjalankan perintah Terraform langsung di Cloud Shell. Metode ini memberikan akses yang nyaman dan berbiaya rendah ke Terraform.

    Instal dan konfigurasi Terraform di mesin on-premises Anda: Metode ini cocok untuk lingkungan dengan konektivitas jaringan yang buruk atau bagi pengguna yang perlu menyesuaikan pengaturan pengembangan mereka.

    Penting

    Pastikan Anda menggunakan Terraform versi 0.12.28 atau yang lebih baru. Untuk memeriksa versi Terraform Anda, jalankan perintah terraform --version.

Resource yang digunakan

Prosedur

Contoh ini menunjukkan cara membuat titik akses aplikasi di instans KMS.

  1. Buat direktori kerja dan buat file konfigurasi berikut dengan nama main.tf di dalamnya. File main.tf merupakan file utama Terraform yang mendefinisikan resource yang akan dideploy. Sebelum melanjutkan, pastikan Anda telah membuat instans KMS.

    variable "region" {
      # ID wilayah. Contoh ini menggunakan cn-heyuan, yang sesuai dengan wilayah China (Heyuan).
      default = "cn-heyuan"
    }
    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 menanyakan zona ketersediaan. Resource hanya dapat dibuat di zona ketersediaan tertentu.
    data "alicloud_zones" "default" {
      available_disk_category     = "cloud_efficiency"
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    # Buat Virtual Private Cloud (VPC).
    resource "alicloud_vpc" "vpc" {
      vpc_name   = var.instance_name
      cidr_block = "192.168.0.0/16"
    }
    # Buat VSwitch dengan Blok CIDR 192.168.10.0/24.
    resource "alicloud_vswitch" "vsw" {
      vpc_id     = alicloud_vpc.vpc.id
      cidr_block = "192.168.10.0/24"
      zone_id    = data.alicloud_zones.default.zones.0.id
      vswitch_name = "terraform-example-1"
    }
    # Buat VSwitch lain dengan Blok CIDR 192.168.20.0/24.
    resource "alicloud_vswitch" "vsw1" {
      vpc_id     = alicloud_vpc.vpc.id
      cidr_block = "192.168.20.0/24"
      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" {
      # Jenis instans KMS. Nilai 3 menentukan instans manajemen kunci perangkat lunak.
      product_version = "3"
      vpc_id          = alicloud_vpc.vpc.id
      # Zona ketersediaan instans KMS. Gunakan ID zona ketersediaan yang telah Anda tanyakan.
      zone_ids = [
        "cn-heyuan-a",
        "cn-heyuan-b",
      ]
      # ID VSwitch.
      vswitch_ids = [
        alicloud_vswitch.vsw.id,alicloud_vswitch.vsw1.id
      ]
      # Tingkat kinerja, serta jumlah maksimum kunci, rahasia, dan VPC.
      vpc_num    = "1"
      key_num    = "1000"
      secret_num = "100"
      spec       = "1000"
      # (Opsional) Asosiasikan instans KMS dengan VPC lain.
      # Jika VPC dan instans KMS dimiliki oleh Akun Alibaba Cloud yang berbeda, Anda harus berbagi VSwitch terlebih dahulu.
      #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 titik akses aplikasi:

    # Buat aturan jaringan.
    resource "alicloud_kms_network_rule" "network_rule_example" {
      # Nama aturan jaringan.
      network_rule_name = "sample_network_rule"
      # Deskripsi.
      description = "description_test_module"
      # Rentang Alamat IP pribadi sumber yang diizinkan.
      source_private_ip = ["172.16.0.0/12"]
    }
    # Buat kebijakan kontrol akses.
    resource "alicloud_kms_policy" "policy_example" {
      # Nama kebijakan.
      policy_name = "sample_policy"
      # Deskripsi.
      description = "description_test_module"
      # Daftar izin, termasuk akses ke kunci layanan kriptografi dan rahasia.
      permissions = ["RbacPermission/Template/CryptoServiceKeyUser", "RbacPermission/Template/CryptoServiceSecretUser"]
      # Daftar resource, yang berlaku untuk semua kunci dan rahasia.
      resources = ["key/*", "secret/*"]
      # ID instans KMS.
      kms_instance_id = alicloud_kms_instance.default.id
      # Aturan kontrol akses dalam format JSON, merujuk pada aturan jaringan yang telah didefinisikan sebelumnya.
      access_control_rules = <<EOF
      {
          "NetworkRules":[
              "alicloud_kms_network_rule.network_rule_example.network_rule_name"
          ]
      }
      EOF
    }
    
    # Definisikan resource titik akses aplikasi.
    resource "alicloud_kms_application_access_point" "application_access_point_example" {
      # Nama titik akses aplikasi.
      application_access_point_name = "sample_aap"
      # Daftar kebijakan terkait, merujuk pada nama kebijakan kontrol akses yang dibuat sebelumnya.
      policies = [alicloud_kms_policy.policy_example.policy_name]
      # Deskripsi titik akses aplikasi.
      description = "aap_description"
    }
    
    # Definisikan resource kunci klien.
    resource "alicloud_kms_client_key" "client_key" {
      # Nama titik akses aplikasi.
      aap_name = alicloud_kms_application_access_point.application_access_point_example.application_access_point_name
      # Kata sandi untuk kunci klien. Ganti dengan kata sandi Anda sendiri.
      password = "testPassword@"
      # Waktu mulai periode validitas untuk kunci klien.
      not_before = "2023-09-01T14:11:22Z"
      # Waktu akhir periode validitas untuk kunci klien.
      not_after  = "2032-09-01T14:11:22Z"
      # Jalur file lokal untuk menyimpan kunci klien.
      private_key_data_file = "./client_key.json"
    
    }
    Penting
    • Setelah titik akses aplikasi dibuat, ambil kunci klien dari jalur file lokal yang ditentukan dan simpan kerahasiaannya.

    • Sebagai praktik terbaik, atur password menggunakan variabel input sensitif di Terraform untuk menghindari pengeksposan dalam teks biasa.

  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. Jalankan perintah berikut untuk membuat rencana eksekusi dan melihat pratinjau perubahan:

    terraform plan
  4. Jalankan perintah berikut untuk membuat titik akses aplikasi:

    terraform apply

    Saat diminta, masukkan yes dan tekan Enter. Output berikut menunjukkan bahwa titik akses aplikasi berhasil 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_network_rule.network_rule_example: Creating...
    alicloud_kms_policy.policy_example: Creating...
    alicloud_kms_network_rule.network_rule_example: Creation complete after 0s [id=sample_network_***]
    alicloud_kms_policy.policy_example: Creation complete after 0s [id=sample_pol***]
    alicloud_kms_application_access_point.application_access_point_example: Creating...
    alicloud_kms_application_access_point.application_access_point_example: Creation complete after 0s [id=sample_***]
    alicloud_kms_client_key.client_key: Creation complete after 0s [id=KAAP.5093ea57-0b84-4455-a8e9-7679bdc****]
    ...
    
    Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
  5. Verifikasi hasilnya.

    Perintah terraform show

    Jalankan perintah berikut untuk melihat detail resource yang telah Anda buat menggunakan Terraform:

    terraform show

    image

    Konsol KMS

    Login ke Konsol Key Management Service (KMS) untuk melihat titik akses aplikasi.image

Bersihkan resource

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

terraform destroy

Contoh lengkap

Catatan

Anda dapat menjalankan kode contoh dalam topik ini secara langsung di Terraform Explorer.

Kode contoh

variable "region" {
  # ID wilayah. Contoh ini menggunakan cn-heyuan, yang sesuai dengan wilayah China (Heyuan).
  default = "cn-heyuan"
}
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 menanyakan zona ketersediaan. Resource hanya dapat dibuat di zona ketersediaan tertentu.
data "alicloud_zones" "default" {
  available_disk_category     = "cloud_efficiency"
  available_resource_creation = "VSwitch"
  available_instance_type     = var.instance_type
}
# Buat Virtual Private Cloud (VPC).
resource "alicloud_vpc" "vpc" {
  vpc_name   = var.instance_name
  cidr_block = "192.168.0.0/16"
}
# Buat VSwitch dengan Blok CIDR 192.168.10.0/24.
resource "alicloud_vswitch" "vsw" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "192.168.10.0/24"
  zone_id    = data.alicloud_zones.default.zones.0.id
  vswitch_name = "terraform-example-1"
}
# Buat VSwitch lain dengan Blok CIDR 192.168.20.0/24.
resource "alicloud_vswitch" "vsw1" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "192.168.20.0/24"
  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" {
  # Jenis instans KMS. Nilai 3 menentukan instans manajemen kunci perangkat lunak.
  product_version = "3"
  vpc_id          = alicloud_vpc.vpc.id
  # Zona ketersediaan instans KMS. Gunakan ID zona ketersediaan yang telah Anda tanyakan.
  zone_ids = [
    "cn-heyuan-a",
    "cn-heyuan-b",
  ]
  # ID VSwitch.
  vswitch_ids = [
    alicloud_vswitch.vsw.id,alicloud_vswitch.vsw1.id
  ]
  # Tingkat kinerja, serta jumlah maksimum kunci, rahasia, dan VPC.
  vpc_num    = "1"
  key_num    = "1000"
  secret_num = "100"
  spec       = "1000"
  # (Opsional) Asosiasikan instans KMS dengan VPC lain.
  # Jika VPC dan instans KMS dimiliki oleh Akun Alibaba Cloud yang berbeda, Anda harus berbagi VSwitch terlebih dahulu.
  #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 aturan jaringan.
resource "alicloud_kms_network_rule" "network_rule_example" {
  # Nama aturan jaringan.
  network_rule_name = "sample_network_rule"
  # Deskripsi.
  description = "description_test_module"
  # Rentang Alamat IP pribadi sumber yang diizinkan.
  source_private_ip = ["172.16.0.0/12"]
}

# Buat kebijakan kontrol akses.
resource "alicloud_kms_policy" "policy_example" {
  # Nama kebijakan.
  policy_name = "sample_policy"
  # Deskripsi.
  description = "description_test_module"
  # Daftar izin, termasuk akses ke kunci layanan kriptografi dan rahasia.
  permissions = ["RbacPermission/Template/CryptoServiceKeyUser", "RbacPermission/Template/CryptoServiceSecretUser"]
  # Daftar resource, yang berlaku untuk semua kunci dan rahasia.
  resources = ["key/*", "secret/*"]
  # ID instans KMS.
  kms_instance_id = alicloud_kms_instance.default.id
  # Aturan kontrol akses dalam format JSON, merujuk pada aturan jaringan yang telah didefinisikan sebelumnya.
  access_control_rules = <<EOF
  {
      "NetworkRules":[
          "alicloud_kms_network_rule.network_rule_example.network_rule_name"
      ]
  }
  EOF
}

# Definisikan resource titik akses aplikasi.
resource "alicloud_kms_application_access_point" "application_access_point_example" {
  # Nama titik akses aplikasi.
  application_access_point_name = "sample_aap"
  # Daftar kebijakan terkait, merujuk pada nama kebijakan kontrol akses yang dibuat sebelumnya.
  policies = [alicloud_kms_policy.policy_example.policy_name]
  # Deskripsi titik akses aplikasi.
  description = "aap_description"
}

# Definisikan resource kunci klien.
resource "alicloud_kms_client_key" "client_key" {
  # Nama titik akses aplikasi.
  aap_name = alicloud_kms_application_access_point.application_access_point_example.application_access_point_name
  # Kata sandi untuk kunci klien. Ganti dengan kata sandi Anda sendiri.
  password = "testPassword@"
  # Waktu mulai periode validitas untuk kunci klien.
  not_before = "2023-09-01T14:11:22Z"
  # Waktu akhir periode validitas untuk kunci klien.
  not_after  = "2032-09-01T14:11:22Z"
  # Jalur file lokal untuk menyimpan kunci klien.
  private_key_data_file = "./client_key.json"
}