Todos os produtos
Search
Central de documentação

Key Management Service:Key management quickstart

Última atualização: Sep 20, 2026

Use o Key Management Service (KMS) para criar chaves para criptografar e descriptografar dados de negócios. Este tópico descreve como criar e usar essas chaves.

Visão geral

O KMS oferece três tipos de gerenciamento de chaves — chave padrão, chave de software e chave de hardware — para atender a diferentes cenários de negócios e requisitos de segurança e conformidade. Para obter mais informações, consulte Visão geral do Key Management Service e tipos de gerenciamento de chaves e especificações de chaves.

  • O KMS fornece a chave padrão gratuitamente. Use-a para criptografia no lado do servidor em serviços em nuvem, como na integração com o ECS. A chave padrão suporta apenas criptografia simétrica e não permite a criptografia de dados no lado do cliente.

  • Assim como a chave padrão, a chave de software oferece criptografia no lado do servidor para serviços em nuvem. Além disso, use uma chave de software para desenvolver soluções criptográficas na camada de aplicação usando APIs para criptografia e descriptografia de dados no lado do cliente, geração e verificação de assinatura digital. A chave de software pode ser simétrica ou assimétrica e suporta rotação de chaves (atualizações automáticas) para reduzir o risco de vazamento.

  • Assim como a chave de software, a chave de hardware oferece criptografia no lado do servidor para serviços em nuvem e permite criar soluções criptográficas na camada de aplicação. Disponibiliza APIs para criptografia e descriptografia de dados no lado do cliente, geração e verificação de assinatura digital, além de suportar chaves simétricas e assimétricas. Comparada à chave de software, a chave de hardware suporta mais especificações de chave e armazena chaves em um módulo de segurança de hardware para atender a requisitos de conformidade, como a Lei de Criptografia da China e o FIPS. No entanto, a chave de hardware não suporta rotação de chaves.

Criptografar dados para serviços em nuvem

Use o gerenciamento de chaves para criptografia no lado do servidor em serviços em nuvem como o ECS, para evitar os riscos de segurança na transmissão de dados em texto claro. Os seguintes tipos de chave oferecem suporte a este recurso: chave padrão, chave de software e chave de hardware.

Exemplo

Este exemplo demonstra como integrar o ECS a uma chave mestra padrão do KMS. Para obter mais informações sobre como integrar serviços em nuvem ao KMS, consulte Visão geral da integração do KMS com serviços em nuvem e Serviços em nuvem que podem ser integrados ao KMS.

Etapa 1: Ativar uma chave mestra padrão

  1. Faça logon no console do Key Management Service. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Resources > Keys.

  2. Na página Key Management, clique em Default Keys e, em seguida, clique em Enable na coluna Actions da chave mestra. Defina o alias da chave mestra como alias/main.

Nota

A chave padrão pode ser usada apenas para criptografia no lado do servidor em serviços em nuvem, e nem para a criptografia de dados no lado do cliente. Caso precise de criptografia de dados no lado do cliente, crie uma instância e adquira uma chave mestra do cliente (software) ou uma chave mestra do cliente (hardware).

Etapa 2: Integrar o ECS à chave padrão do KMS

Ao comprar uma instância do ECS, na página de compra, selecione o alias da chave alias/main para criptografar os dados no lado do servidor.

Na seção System Disk das configurações de Storage, marque a caixa de seleção Encrypt e, em seguida, selecione a chave desejada na lista suspensa Encryption Key.

Etapa 3: Criptografar dados no ECS

Ao gravar ou ler dados no disco criptografado da instância do ECS, o ECS chama automaticamente as APIs do KMS para criptografar e descriptografar os dados. Não é necessária nenhuma intervenção manual. Os serviços em nuvem geralmente usam a criptografia de envelope para criptografar dados. Para obter mais informações, consulte Usar uma chave do KMS para criptografia de envelope.

Criar soluções criptográficas na camada de aplicação

Para criar soluções criptográficas na camada de aplicação, use as APIs fornecidas pelo KMS para criptografia e descriptografia de dados no lado do cliente, além de geração e verificação de assinatura digital. Os seguintes tipos de chave oferecem suporte a este recurso: chave de software e chave de hardware.

Pré-requisitos

Ter comprado e ativado uma instância do KMS que suporta chaves de software ou de hardware. Para obter mais informações, consulte Comprar e ativar uma instância do KMS.

Exemplo

Este exemplo demonstra como usar uma chave de software para Criptografar e Descriptografar dados da camada de aplicação. Para obter mais informações sobre outras operações, consulte Usar uma chave do KMS para criptografar e descriptografar dados on-line.

Etapa 1: Criar uma chave de software

  1. Faça logon no console do Key Management Service. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Resources > Keys.

  2. Acesse a guia Customer Master Keys, clique em Create Key e siga as instruções para concluir a configuração.

    • Em KMS Instance, selecione a KMS software key management instance adquirida.

    • Em Key Type, selecione Symmetric Encryption.

    • Em Key specification, selecione Aliyun_AES_256. Defina Key usage como ENCRYPT/DECRYPT. Insira um key alias com o prefixo alias/. Adicione pares de chave-valor de tag conforme necessário. Ative a automatic key rotation e defina um período de rotação, como 7 dias. Cada rotação consome uma chave da sua cota.

Etapa 2: Atualizar a imagem da instância do KMS

Este exemplo usa um gateway dedicado do KMS para chamar a OpenAPI para operações criptográficas. É necessária uma versão de imagem 3.0.0 ou superior.

Nota

Se a versão da imagem da sua instância do KMS for 3.0.0 ou superior, pule esta etapa.

Visualize a versão da imagem nos detalhes da instância na página Upgrade. Se a versão da imagem for inferior à 3.0.0, clique em Upgrade para atualizar a versão da imagem da instância do KMS. Para obter mais informações, consulte Atualizar a versão da imagem de uma instância do KMS.

Etapa 3: Instalar dependências

  1. Prepare o ambiente

    Requisitos

    Certifique-se de ter baixado e instalado o Java 8 ou superior.

    Verifique a versão

    Abra um terminal e execute o comando java -version para verificar a versão do Java Development Kit (JDK).

  2. Instale o SDK

    Adicione uma dependência do Maven ao seu projeto para baixar automaticamente o SDK do repositório Maven. Use o Alibaba Cloud SDK for Java V2.0.

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>kms20160120</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>tea</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>tea-openapi</artifactId>
        <version>0.3.6</version>
    </dependency>

Etapa 4: Criar credenciais de API

Os SDKs da Alibaba Cloud oferecem suporte a vários métodos de autenticação baseados no RAM. Este tópico usa o par de AccessKey de um usuário do RAM como exemplo. Para obter mais informações sobre os métodos de autenticação, consulte Gerenciar credenciais de acesso.

  1. Crie um par de AccessKey para um usuário do RAM no console do RAM. Para obter mais informações, consulte Criar um par de AccessKey.

    Caso já tenha um par de AccessKey, pule esta etapa.

  2. Conceda as permissões adequadas ao usuário do RAM.

    Por exemplo, para que o usuário do RAM execute apenas operações criptográficas, conceda a ele a política de sistema AliyunKMSCryptoUserAccess. Para obter mais informações, consulte Gerenciar permissões de usuário do RAM. No painel de navegação à esquerda do console do RAM, escolha Identities > Users. Na página aberta, localize o usuário do RAM desejado e clique em Add Permissions na coluna Actions.

    Nota

    O KMS oferece duas formas de conceder permissões:

    • Como mostrado no exemplo anterior, esse método controla o acesso associando permissões a uma identidade. Para obter mais informações, consulte Controlar o acesso usando o RAM.

    • Políticas baseadas em recursos: este tipo de política inclui políticas de chave e políticas de credencial. Essas políticas são associadas diretamente aos recursos e definem regras de acesso para os recursos. Para obter mais informações, consulte Políticas de chave e Políticas de credencial.

Etapa 5: Obter o certificado CA da instância do KMS

Na página de detalhes da instância, obtenha o certificado CA da instância.

Na seção Basic Information, clique em Download à direita de Instance CA certificate.

Etapa 6: Obter o endereço VPC da instância

Na página de detalhes da instância, obtenha o endereço VPC da instância.

Na seção Basic Information, localize e copie o instance VPC address.

Etapa 7: Fazer chamadas de cliente

  1. Inicialize o SDK da Alibaba Cloud.

    Importante

    Use o Alibaba Cloud SDK for Java V2.0. Defina o parâmetro Endpoint como o endereço VPC da instância e configure o certificado CA da instância.

        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Leaking the source code of your project may cause the leak of your AccessKey pair and threaten the security of all resources in your account. The following code is for reference only.
            // We recommend that you use a more secure method, such as by using STS, for authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Set Endpoint to the VPC address of the instance. Example: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Specify the content of the CA certificate of the instance.
            config.ca = "<your-instance-ca-certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
  2. Chame a operação Encrypt para criptografar dados.

    package com.aliyun.sample;
    import com.aliyun.tea.*;
    public class Sample {
      public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Leaking the source code of your project may cause the leak of your AccessKey pair and threaten the security of all resources in your account. The following code is for reference only.
            // We recommend that you use a more secure method, such as by using STS, for authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Set Endpoint to the VPC address of the instance. Example: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Specify the content of the CA certificate of the instance.
            config.ca = "<your-instance-ca-certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
         public static void main(String[] args_) throws Exception {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.kms20160120.Client client = Sample.createClient();
            com.aliyun.kms20160120.models.EncryptRequest encryptRequest = new com.aliyun.kms20160120.models.EncryptRequest()
                    .setKeyId("<your-key-id>")
                    .setPlaintext("<your-plaintext>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // If you copy and run this code, you must add your own code to print the API response.
                client.encryptWithOptions(encryptRequest, runtime);
            } catch (TeaException error) {
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }
  3. Chame a operação Decrypt para descriptografar dados.

    package com.aliyun.sample;
    import com.aliyun.tea.*;
    public class Sample {
        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // Leaking the source code of your project may cause the leak of your AccessKey pair and threaten the security of all resources in your account. The following code is for reference only.
            // We recommend that you use a more secure method, such as by using STS, for authentication. For more information, see https://www.alibabacloud.com/help/document_detail/378657.html.
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is configured in your runtime environment.
                    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                    // Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is configured in your runtime environment.
                    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Set Endpoint to the VPC address of the instance. Example: kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com.
            config.endpoint = "<your-instance-vpc-address>";
            // Specify the content of the CA certificate of the instance.
            config.ca = "<your-instance-ca-certificate>";
            return new com.aliyun.kms20160120.Client(config);
        }
        public static void main(String[] args_) throws Exception {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.kms20160120.Client client = Sample.createClient();
            com.aliyun.kms20160120.models.DecryptRequest decryptRequest = new com.aliyun.kms20160120.models.DecryptRequest()
                    .setCiphertextBlob("<your-ciphertext-blob>");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            try {
                // If you copy and run this code, you must add your own code to print the API response.
                client.decryptWithOptions(decryptRequest, runtime);
            } catch (TeaException error) {
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                // The following code is for demonstration only. Handle exceptions with care. Do not ignore exceptions in your project.
                // error message
                System.out.println(error.getMessage());
                // Troubleshooting recommendation.
                System.out.println(error.getData().get("Recommend"));
                com.aliyun.teautil.Common.assertAsString(error.message);
            }        
        }
    }

Tópicos relacionados