本文介绍如何通过Terraform购买并启用KMS软件密钥管理实例。
概述
购买并启用软件密钥管理实例时,您需要为该KMS实例绑定VPC以及交换机,也支持为该KMS实例关联多个VPC。配置完成后生成CA实例证书,请您妥善保存,在应用访问KMS实例时需要配置该CA实例证书。
准备工作
-
准备 RAM 用户及授权
为安全起见,我们强烈建议您使用 RAM 用户而非阿里云账号(主账号)来进行操作。
-
创建 RAM 用户:具体操作方式请参见创建RAM用户。
-
创建 AccessKey:为该 RAM 用户创建并记录 AccessKey。具体操作请参见创建AccessKey。
-
为 RAM 用户授权:Terraform 需要获取AliyunKMSFullAccess(管理密钥管理服务)、AliyunVPCFullAccess(管理专有网络)和AliyunBSSFullAccess(管理费用中心BSS)才能创建和管理云资源。为了遵循最小权限原则,我们推荐使用以下自定义策略进行授权。具体操作方式请参见管理RAM用户的权限。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "vpc:CreateVpc", "vpc:CreateVSwitch", "vpc:DescribeNatGateways", "vpc:DeleteVpc", "vpc:DeleteVSwitch" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "vpc:DescribeVpcAttribute", "vpc:DescribeVSwitchAttributes", "vpc:DescribeRouteTableList" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "bss:*", "bssapi:*" ], "Resource": [ "*" ] } ] }
-
-
准备 Terraform 运行环境
可以选择以下任一方式来运行 Terraform:
重要请确保 Terraform 版本不低于
v0.12.28。您可以通过运行terraform --version命令来检查。-
Terraform Explorer:阿里云提供的在线运行环境,无需安装,登录后即可使用。适用于零成本、快速体验的场景。
-
使用Terraform快速创建资源:Cloud Shell 中已预装 Terraform 并配置好了身份凭证。适用于快速、便捷地在云端运行命令的场景。
-
在本地安装和配置Terraform:适用于网络连接较差或需要自定义开发环境的场景。
-
-
检查 Aliyun/Alicloud Provider 版本
部分功能对 Aliyun/Alicloud Provider 的版本有特定要求,具体说明如下:
-
创建时设置自动续费:如需在新建 KMS 实例时就设置自动续费,Provider 版本不能低于
1.245.0。 -
修改为自动续费:如需将一个已有的手动续费 KMS 实例修改为自动续费,Provider 不能低于
1.257.0
-
使用的资源
-
alicloud_vpc:创建专有网络VPC。
-
alicloud_vswitch:创建虚拟交换机(vSwitch)为VPC划分一个或多个子网。
-
alicloud_zones:查询可用区。
-
alicloud_kms_instance:购买并启用KMS软件密钥管理实例。
本教程示例包含的部分资源会产生一定费用,请在不需要时及时进行释放或退订。
通过Terraform购买并启用软件密钥管理实例
本示例将创建并启用一个KMS实例。
当通过 Terraform 启用软件密钥管理实例时,您只能配置一个 vSwitch。
-
创建一个工作目录,并且在工作目录中创建以下名为
main.tf的配置文件。main.tfTerraform主文件,定义了将要部署的资源。variable "region" { default = "ap-southeast-1" } provider "alicloud" { region = var.region } variable "instance_name" { default = "tf-kms-vpc-172-16" } variable "instance_type" { default = "ecs.e-c1m2.large" } # 使用数据源来获取可用的可用区信息。资源只能在指定的可用区内创建。 data "alicloud_zones" "default" { available_disk_category = "cloud_efficiency" available_resource_creation = "VSwitch" available_instance_type = var.instance_type } # 创建VPC resource "alicloud_vpc" "vpc" { vpc_name = var.instance_name cidr_block = "172.16.0.0/12" } # 创建一个Vswitch CIDR 块为 172.16.0.0/12 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" } # 创建KMS软件密钥管理实例,并使用网络参数启动 resource "alicloud_kms_instance" "default" { # 软件密钥管理实例 product_version = "3" vpc_id = alicloud_vpc.vpc.id # 规定 KMS 实例所在的可用区,使用前面获取的可用区 ID zone_ids = [ data.alicloud_zones.default.zones.0.id, data.alicloud_zones.default.zones.1.id ] # 交换机id vswitch_ids = [ alicloud_vswitch.vsw.id ] # 计算性能、密钥数量、凭据数量、访问管理数量 vpc_num = "1" key_num = "1000" secret_num = "100" spec = "1000" # 为KMS实例关联其他VPC,可选参数 # 如果VPC与KMS实例的VPC属于不同阿里云账号,您需要先共享交换机。 #bind_vpcs { #vpc_id = "vpc-j6cy0l32yz9ttxfy6****" #vswitch_id = "vsw-j6cv7rd1nz8x13ram****" #region_id = "ap-southeast-1" #vpc_owner_id = "119285303511****" #} #bind_vpcs { #vpc_id = "vpc-j6cy0l32yz9ttd7g3****" #vswitch_id = "vsw-3h4yrd1nz8x13ram****" #region_id = "ap-southeast-1" #vpc_owner_id = "119285303511****" #} } # 保存KMS实例CA证书到本地文件 resource "local_file" "ca_certificate_chain_pem" { content = alicloud_kms_instance.default.ca_certificate_chain_pem filename = "ca.pem" } -
执行以下命令,初始化
Terraform运行环境。terraform init返回如下信息,表示Terraform初始化成功。
... Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes... -
创建执行计划,并预览变更。
terraform plan -
执行以下命令,创建KMS实例。
terraform apply在执行过程中,根据提示输入
yes并按下Enter键,等待命令执行完成,若出现以下信息,则表示KMS实例创建成功。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 ... Apply complete! Resources: 4 added, 0 changed, 0 destroyed. -
验证结果。
执行terraform show命令
您可以使用以下命令查询Terraform已创建的资源详细信息:
terraform show登录密钥管理服务控制台
登录密钥管理服务控制台,查看已创建的KMS实例。在密钥管理服务控制台的实例管理页面,应用接入指南区域包含三个步骤:授权应用访问、获取实例CA证书和完成应用适配(其中后两步需重点关注)。下方软件密钥管理页签中列出已创建的KMS实例,可查看各实例的密钥数量、凭据数量、创建时间、付费方式及到期状态,并可执行详情、资源共享、续费等操作。
清理资源
当您不再需要上述通过Terraform创建或管理的资源时,请运行以下命令以释放资源。关于terraform destroy的更多信息,请参见Terraform常用命令。
terraform destroy
完整示例
当前示例代码支持一键运行,您可以直接运行代码。一键运行