Terraform を使用して Key Management Service (KMS) のソフトウェアキー管理インスタンスを購入および有効化する方法について説明します。
概要
ソフトウェアキー管理インスタンスには、Virtual Private Cloud (VPC) と vSwitch が必要です。また、複数の VPC をインスタンスに関連付けることも可能です。設定が完了すると、CA インスタンス証明書が生成されます。この証明書は安全に保管してください。KMS インスタンスにアクセスするアプリケーションで必要になります。
事前準備
-
RAM ユーザーの準備と権限の付与
セキュリティのため、Alibaba Cloud アカウントの代わりに RAM ユーザーを使用してください。
-
RAM ユーザーの作成: RAM ユーザーを作成します。
-
AccessKey の作成: RAM ユーザーの AccessKey を作成し、記録します。AccessKey を作成します。
-
RAM ユーザーへの権限付与: Terraform には AliyunKMSFullAccess、AliyunVPCFullAccess、および AliyunBSSFullAccess が必要です。最小権限の原則に基づき、以下のカスタムポリシーを適用してください。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: Alibaba Cloud が提供するオンライン環境です。ログインするだけですぐに使用でき、インストールは不要です。迅速かつ無料で試すのに最適です。
-
Cloud Shell: Terraform がプリインストールされており、認証情報が自動設定されます。クラウドベースでの迅速な実行に最適です。
-
Terraform をローカルにインストールして構成する: 接続が制限された環境やカスタムセットアップが必要な環境に最適です。
-
-
Alicloud プロバイダーのバージョン確認
一部の機能には、最小限の Alicloud プロバイダーバージョンが必要です。
-
作成時の自動更新設定: プロバイダー
1.245.0以降が必要です。 -
自動更新への変更: プロバイダー
1.257.0以降が必要です。
-
使用するリソース
-
alicloud_vpc: Virtual Private Cloud (VPC) を作成します。
-
alicloud_vswitch: VPC を 1 つ以上のサブネットに分割する vSwitch を作成します。
-
alicloud_zones: 利用可能なゾーンを照会します。
-
alicloud_kms_instance: ソフトウェアキー管理インスタンスを購入および有効化します。
このチュートリアルの一部のリソースには料金が発生します。不要になったらリリースしてください。
Terraform を使用したソフトウェアキー管理インスタンスの購入と有効化
この例では、KMS インスタンスを作成して有効化します。
Terraform を使用してソフトウェアキー管理インスタンスを有効化する場合、設定できる vSwitch は 1 つのみです。
-
作業ディレクトリを作成し、そのディレクトリ内に
main.tfという名前の設定ファイルを作成します。 main.tf は、デプロイするリソースを定義するメインの Terraform ファイルです。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" } # CIDR ブロック 172.16.0.0/21 の vSwitch を作成します。 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 ] # vSwitch ID。 vswitch_ids = [ alicloud_vswitch.vsw.id ] # コンピューティングパフォーマンス、キー数、シークレット数、および VPC の数を指定します。 vpc_num = "1" key_num = "1000" secret_num = "100" spec = "1000" # オプション。他の VPC を KMS インスタンスに関連付けます。 # VPC と KMS インスタンスの VPC が異なる Alibaba Cloud アカウントに属している場合、まず vSwitch を共有する必要があります。 #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 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 showKey Management Service コンソールへのログイン
Key Management Service コンソールにログインします。 [Instance Management] ページで、[Application Integration Guide] に従います。[Authorize Application Access]、[Obtain Instance CA Certificate]、および [Complete Application Adaptation] の手順を実行してください。最後の 2 つの手順に特に注意してください。[Software Key Management] タブには、キー容量、シークレット容量、作成時刻、課金方法、および有効期限ステータスを含む KMS インスタンスが一覧表示されます。[Details] の表示、[Resource Sharing] の管理、または [Renewal] の開始が可能です。
リソースのクリーンアップ
不要になった Terraform で作成したリソースをリリースするには、次のコマンドを実行します。 terraform destroy の使用方法については、一般的なコマンドをご参照ください。
terraform destroy
完全な例
サンプルコードをワンクリックで直接実行できます。 ワンクリックで実行