すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:Terraform を使用してソフトウェアキー管理インスタンスを購入して有効にする

最終更新日:Jan 22, 2026

このトピックでは、Terraform を使用して Key Management Service (KMS) でソフトウェアキー管理インスタンスを購入して有効にする方法について説明します。

概要

ソフトウェアキー管理インスタンスを購入して有効にするには、VPC と vSwitch をアタッチする必要があります。複数の VPC を KMS インスタンスに関連付けることもできます。構成が完了すると、CA インスタンス証明書が生成されます。この証明書は安全な場所に保管し、KMS インスタンスにアクセスする必要があるアプリケーションを構成するために使用する必要があります。

準備

  1. RAM ユーザーを準備し、権限を付与する

    セキュリティ上の理由から、Alibaba Cloud アカウントの代わりに Resource Access Management (RAM) ユーザーを使用することをお勧めします。

    1. RAM ユーザーの作成: 詳細については、「RAM ユーザーの作成」をご参照ください。

    2. AccessKey の作成: RAM ユーザーの AccessKey を作成して記録します。詳細については、「AccessKey の作成」をご参照ください。

    3. 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": [
              "*"
            ]
          }
        ]
      }
  2. Terraform ランタイム環境の準備

    Terraform は、次のいずれかの方法で実行できます。

    重要

    Terraform のバージョンが v0.12.28 以降であることを確認してください。terraform --version コマンドを実行してバージョンを確認できます。

    1. Terraform Explorer: Alibaba Cloud が提供するオンラインランタイム環境です。ログイン後すぐに使用でき、インストールは不要です。この方法は、Terraform を無料で迅速に試したいシナリオに適しています。

    2. Cloud Shell: Terraform は Cloud Shell にプリインストール済みであり、認証情報は自動的に構成されます。この方法は、クラウドでコマンドを迅速かつ簡単に実行したいシナリオに適しています。

    3. Terraform をローカルにインストールして構成する: この方法は、ネットワーク接続が悪い場合や、カスタム開発環境が必要なシナリオに適しています。

  3. Aliyun/Alicloud プロバイダーのバージョンを確認する

    一部の機能には、Aliyun/Alicloud プロバイダーに対する特定のバージョン要件があります。

    • 作成時の自動更新の設定: KMS インスタンスの作成時に自動更新を設定するには、プロバイダーのバージョンが 1.245.0 以降である必要があります。

    • 自動更新への変更: 既存の KMS インスタンスの更新方法を手動更新から自動更新に変更するには、プロバイダーのバージョンが 1.257.0 以降である必要があります。

使用されるリソース

重要

このチュートリアルで使用される一部のリソースには料金が発生します。不要になったら、速やかにリリースしてください。

Terraform を使用してソフトウェアキー管理インスタンスを購入して有効にする

この例では、KMS インスタンスを作成して有効にします。

説明

Terraform を使用してソフトウェアキー管理インスタンスを有効にする場合、構成できる vSwitch は 1 つだけです。

  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_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"
    }
  2. Terraform ランタイム環境を初期化するには、次のコマンドを実行します。

    terraform init

    次の出力は、Terraform が初期化されたことを示します。

    ...
    
    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see any changes...
  3. 実行計画を作成し、変更をプレビューします。

    terraform plan
  4. 次のコマンドを実行して 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.
  5. 結果の確認

    terraform show コマンドの実行

    次のコマンドを実行して、Terraform によって作成されたリソースの詳細をクエリできます。

    terraform show

    Key Management Service コンソールにログインする

    Key Management Service コンソールにログインし、作成した KMS インスタンスを表示します。

リソースのクリーンアップ

Terraform によって作成されたリソースが不要になったら、次のコマンドを実行してリリースします。terraform destroy の詳細については、「共通コマンド」をご参照ください。

terraform destroy

完全な例

説明

このトピックのサンプルコードは、ワンクリックで直接実行できます。ワンクリックで実行

サンプルコード

variable "region" {
  default = "ap-southeast-1"
}

provider "alicloud" {
  region = var.region
}
variable "instance_name" {
  default = "tff-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_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"
}