Todos os produtos
Search
Central de documentação

Microservices Engine:Configuration encryption

Última atualização: Sep 02, 2026

O Microservices Registry do Microservices Engine (MSE) armazena dados de configuração em texto simples. O MSE integra-se ao Key Management Service (KMS) para criptografar e descriptografar esses dados, como fontes de dados, tokens, nomes de usuário e senhas. Essa integração reduz o risco de vazamento de dados sensíveis.

Pré-requisitos

Importante

Criar configurações criptografadas

Para criar configurações criptografadas no console do MSE, siga as etapas abaixo:

  1. Faça login no console do MSE e selecione uma região na barra de navegação superior.

  2. No painel de navegação à esquerda, escolha Microservices Registry > Instances.

  3. Na página Instances, clique em nome da instância.

  4. No painel de navegação à esquerda, escolha Configuration Management > Configurations.

  5. No canto superior esquerdo da página Configurations, selecione um namespace na lista suspensa Namespace e clique em Add Configuration.

  6. No painel Create Configuration, insira um Data ID e um Group. Em seguida, ative a opção Data Encryption e selecione uma KMS Key. Caso ainda não tenha criado uma KMS Key, clique em Create. É possível criar uma chave no console do Key Management Service. Após criar a chave, atualize o painel Create Configuration para exibir a nova chave do KMS.

    Importante
    • Se você ativar o Dedicated KMS após 31 de março de 2022, deverá selecionar o ID de uma chave para criptografia e associá-la à instância do MSE Nacos. Assim, todas as configurações subsequentes serão criptografadas com essa chave.

    • Caso tenha ativado o KMS antes de 31 de março de 2022, o prompt para vincular o ID da chave da instância do Dedicated KMS não será exibido, permitindo o uso do Shared KMS. Os métodos de configuração para acesso das aplicações ao Shared KMS são diferentes.

    • Para usuários do Dedicated KMS, a opção KMS AES-256 é exibida. Já para usuários do Shared KMS, os três métodos de criptografia aparecem visando compatibilidade de versões. Recomendamos não selecionar KMS ou KMS AES-128.

      • KMS AES-256: Método de criptografia e descriptografia de envelope do KMS. Utiliza uma chave de 256 bits com alta força de criptografia. O conteúdo criptografado da configuração não pode exceder 50 KB. Os dados de configuração em texto simples não são transmitidos ao KMS. Recomendamos esta opção para maior segurança. Escolha o método de criptografia conforme suas necessidades de negócio.

      • KMS AES-128: Método que utiliza uma chave de 128 bits com força de criptografia média. O tamanho do conteúdo criptografado da configuração não pode ultrapassar 50 KB.

      • KMS: Não recomendamos esta opção, pois caracteres especiais podem causar problemas de compatibilidade. Por exemplo, um ampersand (&) é escapado como \u0026. O tamanho do conteúdo criptografado da configuração não pode exceder 6 KB.

    • Após o vínculo, não é possível alterar a chave. Se você excluir a chave, perderá o acesso às configurações criptografadas.

  7. Na seção Configuration Format, selecione um formato de dados, insira o conteúdo da configuração no editor Configuration Content à direita e clique em Release.

Usar uma configuração criptografada no Nacos SDK for Java

  1. Adicione as seguintes dependências ao arquivo pom.xml do projeto:

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>{nacos-client-version}</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client-mse-extension</artifactId>
        <version>{nacos-client-mse-extension-version}</version>
    </dependency>

    Descrição das versões

    Versão principal do cliente Nacos

    Versão do cliente Nacos

    Versão recomendada do plug-in

    1.x

    V1.4.3 ou posterior

    V1.0.6 ou posterior

    2.x

    V2.1.1 ou posterior

    V1.0.6 ou posterior

    Importante

    Podem ocorrer problemas de estabilidade se a versão do plug-in de criptografia e descriptografia não corresponder à versão do cliente Nacos. Recomendamos utilizar as versões indicadas.

  2. Escolha o código válido que deseja configurar com base no tipo de framework utilizado.

    Usar o framework Nacos client

    Ao utilizar o framework Nacos client para obter configurações, configure o seguinte código de exemplo.

    try {
        Properties properties = new Properties();
        // The address of your Nacos server.
        properties.put("serverAddr", "{serverAddr}");
        // Configure the RAM role of the ECS instance as the access credential.
        properties.put("ramRoleName", "{ramRoleName}");
        // The endpoint of the KMS instance.
        properties.put("kmsEndpoint", "{kmsEndpoint}");
        ConfigService configService = NacosFactory.createConfigService(properties);
        System.out.println("content:::"+configService.getConfig("{dataId}", "{group}", 6000));
    } catch (Exception e) {
        e.printStackTrace();
    }

    O parâmetro kmsEndpoint indica o endpoint da instância do KMS. Se o ambiente de acesso e a instância do KMS estiverem na mesma VPC, o valor de kmsEndpoint será o endpoint de VPC da instância. Ao acessar a instância do KMS pela Internet, o valor de kmsEndpoint será o endpoint público ou o endpoint de VPC do gateway público. Para mais informações sobre como obter o endpoint, consulte How do I obtain the endpoint of a KMS instance?

    Caso utilize um par de AccessKey como credencial para acessar a instância do KMS, substitua a seguinte configuração:

    properties.put("ramRoleName", "{ramRoleName}");

    Utilize a seguinte configuração:

    properties.put("accessKey", "{accessKey}"); 
    properties.put("secretKey", "{secretKey}");

    O Nacos SDK for Java aceita configurações criptografadas por meio de múltiplas credenciais de acesso, como tokens do Security Token Service (STS) e o Alibaba Cloud Resource Name (ARN) de uma função do RAM. Para mais detalhes sobre as credenciais suportadas e métodos de configuração do cliente, consulte Supported access credentials for configuration encryption of the Nacos SDK for Java.

    Se o seu KMS foi ativado após 31 de março de 2022 e você deseja publicar configurações criptografadas via SDK, adicione o seguinte código:

    properties.put("keyId", "{keyId}");

    Substitua os parâmetros serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group e keyId no código pelos parâmetros reais do service.

    Usar o framework Spring Cloud Nacos Config

    Nota
    • Se utilizar o Spring Cloud Alibaba 2022.x ou 2023.x, atualize para a versão 2023.0.1.2.

    • Para usuários do Spring Cloud Alibaba 2021.x, recomenda-se a atualização para 2021.0.6.1.

    • Caso esteja no Spring Cloud Alibaba 2.x, atualize para a versão 2.2.10.

    • Certifique-se de que as versões do Spring Cloud Alibaba, Spring Cloud e Spring Boot sejam compatíveis. Para verificar a compatibilidade, consulte as notas de lançamento no site oficial do Spring Cloud Alibaba.

    Ao usar o framework Spring Cloud Nacos Config para obter configurações, adicione as seguintes definições:

    spring.cloud.nacos.config.server-addr={serverAddr}
    spring.config.import=nacos:{dataId}?group={group}&refreshEnabled=true
    # Use the RAM role of an ECS instance as the access credential.
    spring.cloud.nacos.config.ramRoleName={ramRoleName}
    spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

    O parâmetro kmsEndpoint indica o endpoint da instância do KMS. Se o ambiente de acesso e a instância do KMS estiverem na mesma VPC, o valor de kmsEndpoint será o endpoint de VPC da instância. Ao acessar a instância do KMS pela Internet, o valor de kmsEndpoint será o endpoint público ou o endpoint de VPC do gateway público. Para mais informações sobre como obter o endpoint, consulte How do I obtain the endpoint of a KMS instance?

    Caso utilize um par de AccessKey como credencial para acessar a instância do KMS, substitua a seguinte configuração:

    spring.cloud.nacos.config.ramRoleName={ramRoleName}

    Utilize as seguintes configurações:

    spring.cloud.nacos.config.accesskey={accessKey}
    spring.cloud.nacos.config.secretkey={secretKey}
    # If you use an AccessKey pair to access Nacos, we recommend specifying it
    # by using JVM parameters or environment variables due to its sensitive nature.
    # JVM parameters
    -Dspring.cloud.nacos.config.accessKey={accessKey}
    -Dspring.cloud.nacos.config.secretKey={secretKey}
    # Environment variables
    spring_cloud_nacos_config_accessKey={accessKey}
    spring_cloud_nacos_config_secretKey={secretKey}

    O Nacos SDK for Java aceita configurações criptografadas por meio de múltiplas credenciais de acesso, como tokens do Security Token Service (STS) e o Alibaba Cloud Resource Name (ARN) de uma função do RAM. Para mais detalhes sobre as credenciais suportadas e métodos de configuração do cliente, consulte Supported access credentials for configuration encryption of the Nacos SDK for Java.

    Se o seu KMS foi ativado após 31 de março de 2022 e você deseja publicar configurações criptografadas via SDK, adicione o seguinte código:

    spring.cloud.nacos.config.keyId={keyId}

    Substitua os parâmetros serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group e keyId no código pelos parâmetros reais do service.

    Descrição

    A tabela a seguir descreve os parâmetros. Certifique-se de que os valores configurados sejam válidos.

    Parâmetro

    Descrição

    serverAddr

    O endereço IP da sua instância do MSE. Exemplo: mse-*****.nacos-ans.mse.aliyuncs.com.

    ramRoleName

    A função do RAM atribuída à instância do ECS ou ao cluster ACK.

    accessKey e secretKey

    O AccessKey ID e o AccessKey secret da conta Alibaba Cloud atual.

    É necessário especificar os parâmetros accessKey e secretKey. Caso contrário, especifique o parâmetro ramRoleName.

    kmsEndpoint

    O endpoint da instância do KMS. Se o ambiente de acesso e a instância do KMS estiverem na mesma VPC, o valor de kmsEndpoint será o endpoint de VPC da instância. Ao acessar a instância do KMS pela Internet, o valor de kmsEndpoint será o endpoint público ou o endpoint de VPC do gateway público. Para mais informações sobre como obter o endpoint, consulte How do I obtain the endpoint of a KMS instance?

    dataId

    O ID de dados da configuração criptografada. Exemplo: cipher-kms-aes-256-****.properties.

    group

    O nome do grupo da configuração criptografada.

    keyId

    O ID da chave do KMS usada para criptografar configurações. Você pode criar e usar uma chave do KMS no console.

    Exemplo: alia/*** ou key-***.

Usar uma configuração criptografada no Nacos SDK for Go

  1. Execute o comando go get para baixar as dependências do Nacos client SDK for Go.

    go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8
  2. Modifique as configurações iniciais do cliente Nacos.

    No Nacos SDK for Go, apenas um par de AccessKey pode ser usado como credencial para acessar a instância do KMS. Substitua os parâmetros serverAddr, accessKey, secretKey e kmsEndpoint no código pelos parâmetros usados em seu negócio e certifique-se de que o parâmetro OpenKMS esteja definido como true para criptografia de configuração.

    sc := []constant.ServerConfig{
      {
        IpAddr: "{serverAddr}", // Replace with the endpoint of your MSE instance.
        Port:   8848,
      },
    }
    var accessKey = "{accessKey}" 
    var secretKey = "{secretKey}" 
    cc := constant.ClientConfig{
      NamespaceId:         "public", // The namespace ID.
      OpenKMS:              true, // Enable KMS for configuration encryption.
      AccessKey:            accessKey, 
      SecretKey:            secretKey,
      KMSConfig:            &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
      TimeoutMs:           5000,
      NotLoadCacheAtStart: true,
      LogDir:              "/tmp/nacos/log",
      CacheDir:            "/tmp/nacos/cache",
      RotateTime:          "1h",
      MaxAge:              3,
    }

    O parâmetro kmsEndpoint indica o endpoint da instância do KMS. Se o ambiente de acesso e a instância do KMS estiverem na mesma VPC, o valor de kmsEndpoint será o endpoint de VPC da instância. Ao acessar a instância do KMS pela Internet, o valor de kmsEndpoint será o endpoint público ou o endpoint de VPC do gateway público. Para mais informações sobre como obter o endpoint, consulte How do I obtain the endpoint of a KMS instance?

  3. Publique as configurações criptografadas.

    keyId: O ID da chave do KMS usada para criptografar configurações.

    configParam := vo.ConfigParam{
        DataId:   "{dataId}",
        Group:    "{group}",
        Content:  "content",
        KmsKeyId: "{keyId}",  // The ID of the KMS key for encryption. You can create and use a key in the KMS console.
    }
    published, err := client.PublishConfig(configParam)
    if published && err == nil {
    	fmt.Printf("successfully publish: group[%s], dataId[%s], data[%s]\n", configParam.Group, configParam.DataId, configParam.Content)
    } else {
      fmt.Printf("failed to publish: group[%s], dataId[%s], data[%s]\n with error: %s\n",
        configParam.Group, configParam.DataId, configParam.Content, err)
    }
Parâmetros

A tabela a seguir descreve os parâmetros. Certifique-se de que os valores configurados sejam válidos.

Parâmetro

Descrição

serverAddr

O endereço IP da sua instância do MSE. Exemplo: mse-*****.nacos-ans.mse.aliyuncs.com.

accessKey e secretKey

O AccessKey ID e o AccessKey secret do usuário do RAM.

kmsEndpoint

O endpoint da instância do KMS. Se o ambiente de acesso e a instância do KMS estiverem na mesma VPC, o valor de kmsEndpoint será o endpoint de VPC da instância. Ao acessar a instância do KMS pela Internet, o valor de kmsEndpoint será o endpoint público ou o endpoint de VPC do gateway público. Para mais informações sobre como obter o endpoint, consulte How do I obtain the endpoint of a KMS instance?

dataId

O ID de dados da configuração criptografada. Exemplo: cipher-kms-aes-256-****.properties.

group

O nome do grupo da configuração criptografada.

keyId

O ID da chave do KMS usada para criptografar configurações. Você pode criar e usar uma chave do KMS no console do KMS.

Exemplo: alia/*** ou key-***.

Credenciais de acesso suportadas para criptografia de configuração do Nacos SDK for Java

O Nacos SDK for Java suporta múltiplas credenciais de acesso para criptografar configurações. Selecione um método para inicializar o provedor de credenciais com base nos requisitos de autenticação e autorização do seu cenário de negócio.

Credenciais de acesso suportadas:

Para mais informações sobre como configurar credenciais de acesso no cliente, consulte a seção "Configure access credentials on the client" em Access authentication by the Nacos client. Selecione a seguinte política de sistema para conceder a permissão relacionada à credencial de acesso. Dessa forma, uma operação de autorização granular concede permissões de leitura e gravação em todas as instâncias do KMS.

Política

Observação

AliyunKMSFullAccess

A permissão necessária para gerenciar o KMS. É possível usar uma função do RAM à qual esta política está anexada para gerenciar todos os recursos da mesma forma que uma conta Alibaba Cloud gerencia o KMS.

Perguntas frequentes

Como configurar parâmetros ao usar o Shared KMS ativado antes de 31 de março de 2022?

Se você ativou o Shared KMS antes de 31 de março de 2022, basta substituir o parâmetro kmsEndpoint por kmsRegionId. O parâmetro kmsRegionId indica a região onde a instância do KMS reside, como cn-hangzhou. Siga as etapas abaixo para modificar a configuração do cliente com base no framework utilizado.

Usar uma configuração criptografada no Nacos client SDK for Java

Substitua a seguinte configuração no código:

properties.put("kmsEndpoint", "{kmsEndpoint}");

Utilize a seguinte configuração:

properties.put("kms_region_id", "{kmsRegionId}");

Usar uma configuração criptografada com o framework Spring Cloud Nacos Config no Nacos SDK for Java

Substitua a seguinte configuração no código:

spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

Utilize as seguintes configurações:

spring.cloud.nacos.config.kms_region_id={kmsRegionId}

Usar uma configuração criptografada no Nacos SDK for Go

Adicione o parâmetro RegionId no ClientConfig. Substitua as seguintes configurações no código:

cc := constant.ClientConfig{
  NamespaceId:         "public", 
  OpenKMS:              true, 
  AccessKey:            accessKey, 
  SecretKey:            secretKey,
  KMSConfig:            &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
  TimeoutMs:            5000,
  NotLoadCacheAtStart:  true,
  LogDir:               "/tmp/nacos/log",
  CacheDir:             "/tmp/nacos/cache",
  RotateTime:           "1h",
  MaxAge:               3,
}

Utilize as seguintes configurações:

cc := constant.ClientConfig{
  NamespaceId:         "public", 
  OpenKMS:              true, 
  AccessKey:            accessKey, 
  SecretKey:            secretKey,
  TimeoutMs:            5000,
  NotLoadCacheAtStart:  true,
  LogDir:               "/tmp/nacos/log",
  CacheDir:             "/tmp/nacos/cache",
  RotateTime:           "1h",
  MaxAge:                3,
  RegionId:             "{kmsRegionId}",	
}

Como obter o endpoint de uma instância do KMS?

  • Se o seu ambiente de acesso e a instância do KMS estiverem na mesma VPC, defina kmsEndpoint como o endpoint de VPC da instância. No console do KMS, acesse a página Instance Management, clique em instância desejada para visualizar seus detalhes e obtenha o VPC endpoint of the instance na seção Basic Information.

  • Para acessar a instância do KMS pela Internet, ative a opção Internet Access Status na página de detalhes da instância do KMS.

    Após habilitar o acesso público, o endpoint público do gateway público será kms.cn-hangzhou.aliyuncs.com, e o endpoint de VPC do gateway público será kms-vpc.cn-hangzhou.aliyuncs.com. O acesso público requer o KMS SDK, e o limite de desempenho para criptografia e descriptografia simétrica é de 750 operações por segundo. Recomendamos configurar políticas de controle de acesso refinadas para aumentar a segurança.

  • Ao acessar a instância do KMS por uma VPC, o valor de kmsEndpoint corresponde ao endpoint de VPC do gateway público.

Perguntas frequentes

Solução de problemas comuns

Siga as etapas abaixo:

  • Verifique se o ambiente de execução da aplicação consegue se conectar à VPC onde reside a instância do MSE e à VPC onde reside a instância do KMS.

    Nota

    Não é necessário garantir a conectividade entre a instância do MSE e a instância do KMS.

  • Confira se está sendo usado o KMS V1.0 ou V3.0. Caso utilize o KMS V1.0, certifique-se de que o KMS foi ativado antes de 31 de março de 2022.

    Nota

    Se você ativar o KMS após 31 de março de 2022, deverá adquirir o Dedicated KMS. O recurso de criptografia do KMS V1.0 não está mais disponível para novos usuários.

  • Valide se a versão do cliente Nacos corresponde à versão do plug-in de criptografia e descriptografia. Para mais detalhes, consulte as descrições de versão neste tópico.

Solução de problemas do Nacos SDK for Java

Palavras-chave de pilhas de exceção nos logs do Nacos

Causas

keyId is not set up yet

O parâmetro de inicialização keyId está vazio ou não foi especificado.

Forbidden.KeyNotFound : The specified Key is not found.

O ID da chave especificado pelo parâmetro de inicialização keyId não existe na instância do KMS.

kmsEndpoint is empty

O parâmetro de inicialização kmsEndpoint está vazio.

test-kst-xxxx.cryptoservice.kms.aliyuncs.com: unknown name or service

O endpoint especificado pelo parâmetro de inicialização kmsEndpoint está inacessível.

kmsPasswordKey is empty

O parâmetro de inicialização kmsPasswordKey está vazio.

keystore password was incorrect

O valor do parâmetro de inicialização kmsPasswordKey é inválido.

SDK.ServerUnreachable : Server unreachable: connection https://kst-xxx.cryptoservice.kms.aliyuncs.com

O parâmetro de inicialização kmsVersion não está definido como v3.0.

None of the TrustManagers trust this certificate chain

  1. O parâmetro de inicialização kmsVersion não está definido como v3.0.

  2. O parâmetro de inicialização kmsCaFilePath está vazio.

kmsClientKeyFilePath is empty

O parâmetro de inicialização kmsClientKeyFilePath está vazio.

unable to find valid certification path to requested target

O arquivo especificado pelo parâmetro de inicialização kmsCaFilePath não foi encontrado.

Referências