Todos os produtos
Search
Central de documentação

Key Management Service:Compre e ative uma instância de gerenciamento de chaves de software com o Terraform

Última atualização: Jun 27, 2026

Saiba como comprar e ativar uma instância de gerenciamento de chaves de software do KMS usando o Terraform.

Visão geral

Uma instância de gerenciamento de chaves de software requer uma VPC e um vSwitch. Você também pode associar várias VPCs à instância. Após a conclusão da configuração, o sistema gera um certificado de instância CA. Armazene esse certificado com segurança, pois as aplicações que acessam a instância do KMS exigem esse documento.

Preparação

  1. Prepare um usuário RAM e conceda permissões

    Por questões de segurança, use um usuário RAM em vez da sua conta Alibaba Cloud.

    1. Crie um usuário RAM: Criar um usuário RAM.

    2. Crie uma AccessKey: Crie e registre uma AccessKey para o usuário RAM. Criar uma AccessKey.

    3. Conceda permissões ao usuário RAM: O Terraform exige as permissões AliyunKMSFullAccess, AliyunVPCFullAccess e AliyunBSSFullAccess. Para seguir o princípio de menor privilégio, aplique a seguinte política personalizada. Conceder permissões a um usuário 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. Prepare o ambiente de execução do Terraform

    Execute o Terraform de uma das seguintes maneiras:

    Importante

    O Terraform v0.12.28 ou superior é obrigatório. Execute terraform --version para verificar.

    1. Terraform Explorer: Ambiente online da Alibaba Cloud. Faça login para uso imediato, sem necessidade de instalação. Ideal para testes rápidos e gratuitos.

    2. Cloud Shell: O Terraform vem pré-instalado e as credenciais são configuradas automaticamente. Recomendado para execuções rápidas na nuvem.

    3. Instalar e configurar o Terraform localmente: Indicado para ambientes com conectividade limitada ou requisitos de configuração personalizada.

  3. Verifique a versão do Aliyun/Alicloud Provider

    Alguns recursos exigem uma versão mínima do provider Aliyun/Alicloud:

    • Definir renovação automática na criação: Requer o provider 1.245.0 ou superior.

    • Alterar para renovação automática: Requer o provider 1.257.0 ou superior.

Recursos utilizados

Importante

Alguns recursos deste tutorial geram custos. Libere-os quando não forem mais necessários.

Comprar e ativar uma instância de gerenciamento de chaves de software usando o Terraform

Este exemplo cria e ativa uma instância do KMS.

Nota

Ao ativar uma instância de gerenciamento de chaves de software com o Terraform, você pode configurar apenas um vSwitch.

  1. Crie um diretório de trabalho e adicione um arquivo de configuração chamado main.tf nesse diretório. O arquivo main.tf é o arquivo principal do Terraform e define os recursos a serem implantados.

    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"
    }
    # Use a data source to obtain information about available zones. Resources can be created only in the specified zones.
    data "alicloud_zones" "default" {
      available_disk_category     = "cloud_efficiency"
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    # Create a VPC.
    resource "alicloud_vpc" "vpc" {
      vpc_name   = var.instance_name
      cidr_block = "172.16.0.0/12"
    }
    # Create a vSwitch with a CIDR block of 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"
    }
    # Create a KMS software key management instance and start it using network parameters.
    resource "alicloud_kms_instance" "default" {
      # Software key management instance.
      product_version = "3"
      vpc_id          = alicloud_vpc.vpc.id
      # Specify the zones where the KMS instance resides. Use the zone IDs that are obtained.
      zone_ids = [
        data.alicloud_zones.default.zones.0.id,
        data.alicloud_zones.default.zones.1.id
      ]
      # The vSwitch ID.
      vswitch_ids = [
        alicloud_vswitch.vsw.id
      ]
      # The computing performance, number of keys, number of secrets, and number of managed access requests.
      vpc_num    = "1"
      key_num    = "1000"
      secret_num = "100"
      spec       = "1000"
      # Optional. Associate other VPCs with the KMS instance.
      # If a VPC and the VPC of the KMS instance belong to different Alibaba Cloud accounts, you must first share the 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****"
      #}
    }
    
    # Save the CA certificate of the KMS instance to a local file.
    resource "local_file" "ca_certificate_chain_pem" {
      content  = alicloud_kms_instance.default.ca_certificate_chain_pem
      filename = "ca.pem"
    }
  2. Inicialize o ambiente de execução do Terraform.

    terraform init

    Uma inicialização bem-sucedida gera a seguinte saída:

    ...
    Terraform has been successfully initialized!
    You may now begin working with Terraform. Try running "terraform plan" to see any changes...
  3. Crie um plano de execução e visualize as alterações.

    terraform plan
  4. Crie a instância do KMS.

    terraform apply

    Insira yes quando solicitado e pressione Enter. A saída abaixo confirma a criação da instância do 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. Verifique o resultado.

    Executar o comando terraform show

    Consulte os detalhes dos recursos criados pelo Terraform:

    terraform show

    Fazer login no console do Key Management Service

    Faça login no console do Key Management Service. Na página Instance Management, siga o Application Integration Guide: Authorize Application Access, Obtain Instance CA Certificate e Complete Application Adaptation. Concentre-se nas duas últimas etapas. A aba Software Key Management lista suas instâncias do KMS com capacidade de chaves, capacidade de segredos, hora de criação, método de faturamento e status de expiração. Você pode visualizar Details, gerenciar Resource Sharing ou iniciar uma Renewal.

Limpar recursos

Para liberar recursos criados pelo Terraform que não são mais necessários, execute o comando a seguir. O uso do terraform destroy está detalhado em Comandos comuns.

terraform destroy

Exemplo completo

Nota

Execute o código de exemplo diretamente com um único clique. Executar com um clique

Código de exemplo

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"
}
# Use a data source to obtain information about available zones. Resources can be created only in the specified zones.
data "alicloud_zones" "default" {
  available_disk_category     = "cloud_efficiency"
  available_resource_creation = "VSwitch"
  available_instance_type     = var.instance_type
}
# Create a VPC.
resource "alicloud_vpc" "vpc" {
  vpc_name   = var.instance_name
  cidr_block = "172.16.0.0/12"
}
# Create a vSwitch with a CIDR block of 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"
}
# Create a KMS software key management instance and start it using network parameters.
resource "alicloud_kms_instance" "default" {
  # Software key management instance.
  product_version = "3"
  vpc_id          = alicloud_vpc.vpc.id
  # Specify the zones where the KMS instance resides. Use the zone IDs that are obtained.
  zone_ids = [
    data.alicloud_zones.default.zones.0.id,
    data.alicloud_zones.default.zones.1.id
  ]
  # The vSwitch ID.
  vswitch_ids = [
    alicloud_vswitch.vsw.id
  ]
  # The computing performance, number of keys, number of secrets, and number of managed access requests.
  vpc_num    = "1"
  key_num    = "1000"
  secret_num = "100"
  spec       = "1000"
  # Associate other VPCs with the KMS instance.
  # If a VPC and the VPC of the KMS instance belong to different Alibaba Cloud accounts, you must first share the 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****"
  #}
}
# Save the CA certificate of the KMS instance to a local file.
resource "local_file" "ca_certificate_chain_pem" {
  content  = alicloud_kms_instance.default.ca_certificate_chain_pem
  filename = "ca.pem"
}