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.
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.
Pastikan versi Terraform Anda adalah 0.12.28 atau lebih baru. Untuk memeriksa versi saat ini, jalankan perintah terraform --version.
Sumber daya yang digunakan
-
alicloud_kms_key: Membuat dan mengelola kunci.
-
alicloud_kms_alias: Membuat dan mengelola alias.
Buat kunci dalam instans KMS
Contoh ini menunjukkan cara membuat kunci dalam instans KMS.
-
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 } -
Jalankan perintah berikut untuk menginisialisasi lingkungan
Terraform.terraform initOutput 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. -
Buat rencana eksekusi dan pratinjau perubahan.
terraform plan -
Jalankan perintah berikut untuk membuat kunci.
terraform applySaat diminta, masukkan
yesdan 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. -
Verifikasi hasilnya.
Jalankan perintah terraform show
Jalankan perintah berikut untuk melihat detail sumber daya yang dibuat oleh Terraform:
terraform show
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
Anda dapat menjalankan kode contoh dengan satu klik. Jalankan dengan satu klik