Anda dapat menggunakan Terraform untuk membuat dan mengelola titik akses aplikasi (AAP). Topik ini menjelaskan cara membuat AAP.
Ikhtisar
Sebelum aplikasi yang dikelola sendiri melakukan operasi kriptografi atau mengambil rahasia, aplikasi tersebut harus menggunakan kunci klien dari AAP yang diperlukan untuk mengakses instance Key Management Service (KMS) Anda.
Jika Anda menggunakan kunci dalam instance KMS untuk enkripsi sisi server di layanan Alibaba Cloud atau memanggil SDK KMS untuk menggunakan rahasia, Anda tidak perlu membuat AAP. Namun, jika Anda ingin memanggil SDK Instance KMS untuk menggunakan kunci atau rahasia dalam instance KMS, Anda harus membuat AAP.
Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik. Untuk informasi lebih lanjut, kunjungi Terraform Explorer.
Prasyarat
Akun Alibaba Cloud memiliki izin penuh pada semua sumber daya yang dimiliki akun tersebut. Jika kredensial akun Alibaba Cloud bocor, risiko keamanan mungkin muncul. Kami menyarankan Anda menggunakan Pengguna Resource Access Management (RAM) dan membuat pasangan AccessKey untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Buat pengguna RAM dan Buat pasangan AccessKey.
Kode berikut memberikan contoh tentang cara memberikan izin kepada pengguna RAM. Pastikan bahwa kebijakan AliyunKMSFullAccess dilampirkan ke pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": [ "*" ], "Condition": {} } ] }Lingkungan runtime untuk Terraform disiapkan dengan menggunakan salah satu metode berikut:
Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat masuk ke lingkungan Terraform Explorer untuk menggunakan Terraform tanpa perlu menginstal Terraform. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan nyaman tanpa biaya tambahan.
Gunakan Terraform di Cloud Shell: Terraform sudah diinstal sebelumnya di Cloud Shell, dan kredensial identitas telah dikonfigurasi. Anda dapat menjalankan perintah Terraform di Cloud Shell. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan nyaman dengan biaya rendah.
Instal dan konfigurasikan Terraform di mesin lokal Anda: Metode ini cocok untuk skenario di mana koneksi jaringan tidak stabil atau lingkungan pengembangan kustom diperlukan.
PentingAnda harus menginstal Terraform versi 0.12.28 atau yang lebih baru. Anda dapat menjalankan perintah
terraform --versionuntuk memeriksa versi Terraform.
Sumber daya yang Diperlukan
alicloud_kms_network_rule: Membuat aturan jaringan.
alicloud_kms_application_access_point: Membuat AAP.
alicloud_kms_client_key: Membuat kunci klien.
alicloud_kms_policy: Membuat kebijakan kontrol akses.
Buat AAP dengan Terraform
Dalam contoh berikut, sebuah AAP dibuat dalam instance KMS.
Buat direktori kerja dan file konfigurasi bernama
main.tfdi direktori kerja. File main.tf adalah file utama Terraform dan mendefinisikan sumber daya yang ingin Anda deploy. Pastikan instance KMS telah dibuat terlebih dahulu.variable "region" { 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 mendapatkan informasi tentang zona yang tersedia. Anda hanya dapat membuat sumber daya di zona 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 instance tipe manajemen kunci perangkat lunak dan konfigurasikan parameter jaringan untuk mengaktifkan instance. resource "alicloud_kms_instance" "default" { # Instance tipe manajemen kunci perangkat lunak. product_version = "3" vpc_id = alicloud_vpc.vpc.id # Tentukan zona untuk instance KMS dengan menggunakan ID zona yang diperoleh. zone_ids = [ "cn-heyuan-a", "cn-heyuan-b", ] # ID vSwitch. vswitch_ids = [ alicloud_vswitch.vsw.id,alicloud_vswitch.vsw1.id ] # Performa komputasi, jumlah kunci, jumlah rahasia, dan kuota manajemen akses. vpc_num = "1" key_num = "1000" secret_num = "100" spec = "1000" # Asosiasikan VPC lain dengan instance. Parameter ini opsional. # Jika dua VPC milik akun Alibaba Cloud yang berbeda, Anda harus terlebih dahulu membagikan vSwitch di VPC kedua dengan VPC pertama. #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 otoritas sertifikat (CA) instance ke file lokal. resource "local_file" "ca_certificate_chain_pem" { content = alicloud_kms_instance.default.ca_certificate_chain_pem filename = "ca.pem" }Buat AAP:
# Buat aturan jaringan. resource "alicloud_kms_network_rule" "network_rule_example" { # Nama aturan jaringan. network_rule_name = "sample_network_rule" # Deskripsi aturan jaringan. 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 kebijakan. description = "description_test_module" # Daftar izin yang ditentukan, termasuk izin untuk menggunakan kunci dan izin untuk mengakses kunci. permissions = ["RbacPermission/Template/CryptoServiceKeyUser", "RbacPermission/Template/CryptoServiceSecretUser"] # Daftar sumber daya, yang menunjukkan semua kunci dan rahasia. resources = ["key/*", "secret/*"] # ID instance KMS. kms_instance_id = alicloud_kms_instance.default.id # Aturan kontrol akses dalam format JSON. Aturan jaringan yang ditentukan di bagian sebelumnya digunakan. access_control_rules = <<EOF { "NetworkRules":[ "alicloud_kms_network_rule.network_rule_example.network_rule_name" ] } EOF } # Buat AAP. resource "alicloud_kms_application_access_point" "application_access_point_example" { # Nama AAP. application_access_point_name = "sample_aap" # Daftar kebijakan yang terkait. Kebijakan kontrol akses yang ditentukan di bagian sebelumnya digunakan. policies = [alicloud_kms_policy.policy_example.policy_name] # Deskripsi AAP. description = "aap_description" } # Buat kunci klien. resource "alicloud_kms_client_key" "client_key" { # Nama AAP yang ditentukan. aap_name = alicloud_kms_application_access_point.application_access_point_example.application_access_point_name # Kata sandi kunci klien. Tentukan kata sandi kustom. password = "testPassword@" # Waktu mulai periode validitas kunci klien. not_before = "2023-09-01T14:11:22Z" not_after = "2032-09-01T14:11:22Z" # Jalur file lokal yang menyimpan kunci klien. private_key_data_file = "./client_key.json" }PentingSetelah AAP dibuat, Anda harus mendapatkan kunci klien melalui jalur file lokal dan menyimpan kunci klien di lokasi yang aman.
Anda dapat mengonfigurasi parameter kata sandi menggunakan input sensitif Terraform.
Jalankan perintah berikut untuk menginisialisasi lingkungan runtime untuk
Terraform:terraform initJika informasi berikut dikembalikan, Terraform telah diinisialisasi:
Menginisialisasi backend... Menginisialisasi plugin penyedia... - Menggunakan kembali 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 mengatur 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.Buat rencana eksekusi dan pratinjau perubahan.
terraform planJalankan perintah berikut untuk membuat AAP:
terraform applySelama eksekusi, masukkan
yessesuai prompt dan tekan tombol Enter. Tunggu hingga perintah dieksekusi. Jika informasi berikut dikembalikan, AAP 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_network_rule.network_rule_example: Membuat... alicloud_kms_policy.policy_example: Membuat... alicloud_kms_network_rule.network_rule_example: Pembuatan selesai setelah 0s [id=sample_network_***] alicloud_kms_policy.policy_example: Pembuatan selesai setelah 0s [id=sample_pol***] alicloud_kms_application_access_point.application_access_point_example: Membuat... alicloud_kms_application_access_point.application_access_point_example: Pembuatan selesai setelah 0s [id=sample_***] alicloud_kms_client_key.client_key: Pembuatan selesai setelah 0s [id=KAAP.5093ea57-0b84-4455-a8e9-7679bdc****] ... Penerapan selesai! Sumber daya: 4 ditambahkan, 0 diubah, 0 dihapus.Verifikasi hasilnya.
Jalankan perintah terraform show
Anda dapat menjalankan perintah berikut untuk memeriksa sumber daya yang dibuat menggunakan Terraform:
terraform show
Masuk ke konsol KMS
Masuk ke KMS console untuk melihat AAP yang telah dibuat.

Rilis sumber daya
Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola menggunakan Terraform, jalankan perintah berikut untuk melepaskan sumber daya. Untuk informasi lebih lanjut tentang terraform destroy, lihat Perintah umum.
terraform destroyKode contoh lengkap
Anda dapat menjalankan kode contoh dengan beberapa klik. Untuk informasi lebih lanjut, kunjungi Terraform Explorer.