Todos os produtos
Search
Central de documentação

Microservices Engine:Nacos client access authentication

Última atualização: Jul 10, 2026

Ative a autenticação em instâncias Nacos no Microservices Engine (MSE) para impedir acessos não autorizados ou modificações nos dados da instância. Este tópico descreve como ativar a autenticação e configurar as credenciais do cliente.

Pré-requisitos

Métodos de acesso

A autenticação utiliza o método de conexão direta ao mecanismo. Após a autorização, o cliente Nacos pode acessar a instância MSE Nacos com um usuário RAM ou uma função RAM.

  • Conexão direta ao mecanismo: Acesse o mecanismo Nacos diretamente com um SDK ou cliente. Este método destina-se a acesso programático.

  • Conexão ao mecanismo via console: Gerencie e monitore o mecanismo Nacos no console MSE. Para obter detalhes sobre como conceder acesso ao console MSE a um usuário RAM, consulte Autorização do registro e centro de configuração.

image

Ativar autenticação

Importante
  • Por padrão, a autenticação vem desativada em novos mecanismos Nacos, que respondem a todas as solicitações.

  • O recurso de login do console Nacos open source apenas registra informações do usuário, sem autenticar nem interceptar solicitações. Após ativar a autenticação para uma instância Nacos, você não poderá mais acessá-la pelo console Nacos open source; use o console MSE.

  • Para o Nacos 2.x e certas versões posteriores que não suportam modificação de senha no console: após ativar a autenticação, não é possível redefinir ou modificar a senha do Nacos pelo console MSE. Use AccessKey (AK) e SecretKey (SK) para configurar a autenticação do cliente. Para mais informações, consulte Método 6: Usar um AccessKey neste tópico.

  1. Faça login no console 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, clique em parameter settings. Na página de configurações de parâmetros, clique em Edit.

  5. Selecione o parâmetro ConfigAuthEnabled ou NamingAuthEnabled, clique em Yes na coluna Value do parâmetro e, em seguida, clique em Save and Restart Instance.

    Importante
    • Antes de ativar a autenticação para o centro de configuração ou registro, configure as credenciais de acesso no cliente. Caso contrário, o cliente não conseguirá obter configurações ou serviços. Para mais informações, consulte Configurar credenciais de acesso no cliente.

    • Esses dois parâmetros funcionam independentemente, e cada um controla seu respectivo módulo.

    Parâmetro

    Descrição

    ConfigAuthEnabled

    Ativa a autenticação para o centro de configuração. Suportado por instâncias Basic Edition V1.2.1 e posteriores, além de todas as versões Professional Edition e Developer Edition.

    NamingAuthEnabled

    Ativa a autenticação para o registro. Suportado por instâncias Professional Edition ou Developer Edition V2.0.4 e posteriores.

Configurar credenciais do cliente

O MSE Nacos suporta vários métodos de inicialização de credenciais. Escolha o mais adequado ao seu cenário.

Método de inicialização

Cenário

Pré-requisito

Credencial subjacente

Validade

Rotação e atualização

Método 1: Usar uma função RAM do ECS

Aplicações implantadas em recursos de computação da Alibaba Cloud, como instâncias Elastic Compute Service (ECS), instâncias Elastic Container Instance (ECI) ou nós de trabalho no Container Service for Kubernetes (ACK).

Não

Token STS

Temporária

Atualização automática

Método 2: Usar um ARN de função OIDC

Aplicações não confiáveis implantadas em nós de trabalho no Container Service for Kubernetes (ACK).

Não

Token STS

Temporária

Atualização automática

Método 3: Usar um token STS

Aplicações em ambientes não confiáveis que exigem controle sobre a validade das credenciais e permissões de acesso.

Sim

Token STS

Temporária

Atualização manual

Método 4: Usar um URI de credenciais

Aplicações que obtêm credenciais de um sistema externo.

Não

Token STS

Temporária

Atualização automática

Método 5: Usar um ARN de função RAM

Aplicações que requerem acesso delegado a serviços cloud, como acesso entre contas.

Sim

Token STS

Temporária

Atualização automática

Método 6: Usar um Access Key (AK)

Aplicações em ambientes seguros que exigem acesso de longo prazo a serviços cloud sem rotação frequente de credenciais.

Sim

Access Key (AK)

Longo prazo

Rotação manual

Método 7: Usar um Access Key com rotação automática

Aplicações em ambientes com risco de comprometimento do Access Key (AK), exigindo rotação frequente de credenciais para acesso de longo prazo a serviços cloud.

Não

Access Key (AK)

Longo prazo

Rotação automática

Método 1: Autenticar com uma função RAM

Associe uma função RAM a uma instância ECS ou a um cluster ACK para conceder acesso da sua aplicação ao MSE. A aplicação se autentica fornecendo o nome da função RAM ao cliente Nacos, eliminando a necessidade de credenciais AccessKey estáticas. Defina diferentes funções e políticas para um controle de acesso granular. Para mais informações, consulte Funções RAM para instâncias ECS, Visão geral da autorização e Visão geral das funções RAM.

Nota

Para usar uma função RAM na autenticação, implante sua aplicação em uma instância ECS da Alibaba Cloud ou em um cluster ACK dentro de uma VPC. Para mais informações, consulte O que é o ECS?, O que é o ACK? e O que é VPC?.

Etapa 1: Crie uma função RAM e configure políticas

Conceder acesso ao MSE para uma instância ECS
  1. (Opcional) Crie uma função RAM que utilize um service da Alibaba Cloud como entidade confiável. Para mais informações, consulte Crie uma função RAM para um service da Alibaba Cloud.

  2. Conceda permissões à função RAM anexando uma das seguintes políticas de sistema. Essas políticas fornecem acesso de leitura/gravação ou somente leitura de granularidade grossa para todas as configurações e serviços das instâncias Nacos. Para mais informações, consulte Conceder permissões a uma função RAM.

    Nome da política

    Descrição

    AliyunMSEFullAccess

    Concede permissões completas de gerenciamento do MSE. Um usuário RAM com esta política possui as mesmas permissões operacionais que uma conta Alibaba Cloud.

    AliyunMSEReadOnlyAccess

    Concede permissões de somente leitura para o MSE. Um usuário RAM com esta política pode visualizar todos os recursos do MSE sob a conta Alibaba Cloud.

    Nota
  3. Faça login no console ECS. No painel de navegação à esquerda, escolha Instances & Images > Instance.

  4. No canto superior esquerdo da página, selecione a região e o grupo de recursos desejados.

    Por exemplo, selecione um grupo de recursos na lista suspensa All Resources e uma região, como China (Hangzhou), no seletor de regiões.

  5. Localize a instância ECS que deseja gerenciar e escolha image.png > Instance Settings > Attach/Detach RAM Role.

  6. Na caixa de diálogo, selecione a função RAM da instância criada e clique em OK.

Conceder permissões a uma função RAM de trabalhador do ACK
Nota

Ao criar um cluster ACK, uma função RAM de trabalhador é criada automaticamente. Conceda permissões diretamente a essa função sem precisar criar uma nova.

  1. Crie uma política personalizada. Para mais informações, consulte Crie uma política personalizada.

    • Para conceder permissões completas de gerenciamento do MSE:

      {
          "Action": "mse:*",
          "Resource": "*",
          "Effect": "Allow"
      },
      {
          "Action": "ram:CreateServiceLinkedRole",
          "Resource": "*",
          "Effect": "Allow",
          "Condition": {
              "StringEquals": {
                  "ram:ServiceName": "mse.aliyuncs.com"
              }
          }
      }
    • Para conceder permissões de somente leitura para o MSE:

      {
          "Action": [
              "mse:Query*",
              "mse:List*",
              "mse:Get*"
          ],
          "Resource": "*",
          "Effect": "Allow"
      },
      {
          "Action": "ram:CreateServiceLinkedRole",
          "Resource": "*",
          "Effect": "Allow",
          "Condition": {
              "StringEquals": {
                  "ram:ServiceName": "mse.aliyuncs.com"
              }
          }
      }
    Nota

    Para conceder permissões refinadas para uma instância MSE específica, crie uma política personalizada. Para mais informações, consulte Autenticação refinada para registros, Autenticação refinada para centros de configuração e Exemplos de políticas personalizadas comuns para registros e centros de configuração.

  2. Anexe a política personalizada à função RAM de trabalhador do cluster. Para mais informações, consulte Conceder permissões à função RAM de trabalhador do cluster.

Etapa 2: Configure a autenticação do cliente

Cliente Nacos para Java

Se utilizar o cliente Nacos para Java, configure o código da aplicação conforme abaixo.

Nota

Para usar uma função RAM na autenticação, atualize seu cliente para uma versão suportada. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
properties.put(PropertyKeyConst.RAM_ROLE_NAME, "${roleName}");
// Registry
NamingService naming = NamingFactory.createNamingService(properties);
// Configuration center
ConfigService configService = ConfigFactory.createConfigService(properties);

Framework Spring Cloud Alibaba

Se utilizar o framework Spring Cloud Alibaba, adicione a seguinte configuração ao arquivo de configuração da sua aplicação.

Nota

Atualize o framework Spring Cloud Alibaba para a versão 2.2.9.RELEASE ou posterior.

Atualize o cliente Nacos para a versão 2.2.0 ou posterior.

## Registry
spring.cloud.nacos.discovery.ramRoleName=${roleName}
## Configuration center
spring.cloud.nacos.config.ramRoleName=${roleName}

Framework Dubbo

Se utilizar o framework Dubbo, adicione o seguinte parâmetro à URL do registro no arquivo de configuração do Dubbo.

Nota

Atualize o cliente Nacos para a versão 2.2.0 ou posterior.

dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?ramRoleName=${roleName}

Go SDK

Se utilizar o cliente Nacos para Go, configure o código da aplicação conforme abaixo.

Nota

Recomenda-se a versão 2.3.3 ou posterior.

	// Create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		RamRoleName: "${roleName}",
	}
	// Create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// Create a config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	// Create a naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Método 2: Usar OIDCRoleARN

Quando uma função RAM é configurada para um nó de trabalhador no Container Service for Kubernetes (ACK) (conforme descrito no Método 1), os pods nesse nó podem obter um token STS do servidor de metadados. No entanto, se o seu cluster hospeda aplicações não confiáveis, talvez você não queira que elas acessem o servidor de metadados e recuperem o token STS do nó de trabalhador.

Para impor permissões de menor privilégio no nível do pod, use o recurso RRSA (RAM Roles for Service Account). O cluster ACK monta um arquivo de token OIDC da conta de service para cada pod e injeta a configuração nas variáveis de ambiente. O cliente Nacos lê essas variáveis e chama a operação STS AssumeRoleWithOIDC, trocando o token OIDC por um token STS vinculado à função RAM especificada. Não é necessário nenhum par de AccessKey ou gerenciamento manual de tokens STS.

Etapa 1: Ative RRSA para o cluster ACK

Para ativar o recurso RRSA no seu cluster ACK, consulte Usar RRSA para conceder permissões RAM a contas de service para controle de acesso no nível do pod.

Etapa 2: Conceder permissões à função RAM

Conceda à função RAM da Etapa 1 (por exemplo, demo-role-for-rrsa em Usar RRSA para conceder permissões RAM a contas de service para controle de acesso no nível do pod) acesso ao MSE Nacos anexando uma das seguintes políticas de sistema. Essas políticas concedem à função RAM permissões de leitura/gravação ou somente leitura de granularidade grossa nas configurações e serviços de todas as instâncias Nacos. Para instruções detalhadas, consulte Gerencie permissões para uma função RAM.

Nome da política

Descrição

AliyunMSEFullAccess

Concede permissões completas de gerenciamento do MSE. Um usuário RAM com esta política possui as mesmas permissões que uma conta Alibaba Cloud para realizar todas as operações.

AliyunMSEReadOnlyAccess

Concede permissões de somente leitura para o MSE. Um usuário RAM com esta política pode visualizar todos os recursos do MSE sob a conta Alibaba Cloud.

Nota

Etapa 3: Configure a autenticação do cliente

Com este método, basta configurar o RoleSessionName. O recurso RRSA do ACK fornece outras credenciais temporárias por meio de variáveis de ambiente injetadas.

Cliente Nacos para Java

Se utilizar o cliente Nacos para Java, configure o código da aplicação conforme abaixo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${custom-role-session-name}");
## The following parameters are optional.
# This can be replaced by the ALIBABA_CLOUD_POLICY environment variable.
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${policy-with-limited-permissions}");
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${session-duration-in-seconds}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);

Framework Spring Cloud Alibaba

Se utilizar o framework Spring Cloud Alibaba, adicione a dependência necessária e a seguinte configuração ao arquivo de configuração da sua aplicação.

Nota
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## registry
spring.cloud.nacos.discovery.server-addr=${nacos-server-address}
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${custom-role-session-name}
## configuration center
spring.cloud.nacos.config.server-addr=${nacos-server-address}
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${custom-role-session-name}
## The following parameters are optional.
# This can be replaced by the ALIBABA_CLOUD_POLICY environment variable.
spring.cloud.nacos.discovery.alibabaCloudPolicy=${policy-with-limited-permissions}
spring.cloud.nacos.config.alibabaCloudPolicy=${policy-with-limited-permissions}
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}

Framework Dubbo

Se utilizar o framework Dubbo, adicione a dependência necessária e os seguintes parâmetros à URL do registro no arquivo de configuração do Dubbo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?alibabaCloudRoleSessionName=${custom-role-session-name}
## The following optional parameters are appended to the URL and can be replaced by the ALIBABA_CLOUD_POLICY and ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variables.
&alibabaCloudPolicy=${policy-with-limited-permissions}&alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}

Go SDK

Se utilizar o cliente Nacos para Go, configure o código da aplicação conforme abaixo.

Nota

Use a versão 2.3.3 ou posterior.

	// Create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		RoleSessionName: "${custom-role-session-name}",
	}
	// The following parameters are optional.
	ramConfig.Policy = "${policy-with-limited-permissions}"
	ramConfig.RoleSessionExpiration = ${session-duration-in-seconds}
	// Create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// Create a config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	// Create a naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Método 3: Usar um token STS

Se sua aplicação exigir acesso temporário a uma instância MSE Nacos, use credenciais temporárias do Security Token Service (STS). Essas credenciais consistem em um AccessKey ID, um AccessKey Secret e um token de segurança.

Importante

Este método exige manutenção manual de um token STS, o que aumenta a complexidade de manutenção. Se sua aplicação exigir acesso temporário repetido, atualize manualmente o token STS antes que ele expire.

Etapa 1 (Opcional): Crie um usuário RAM e uma função RAM

Etapa 2: Conceder permissões

Nome da política

Descrição

AliyunMSEFullAccess

Concede permissões completas para gerenciar o MSE. Um usuário RAM com esta política possui as mesmas permissões operacionais que uma conta Alibaba Cloud.

AliyunMSEReadOnlyAccess

Concede permissões de somente leitura para o MSE. Um usuário RAM com esta política tem acesso de somente leitura a todos os recursos sob a conta Alibaba Cloud.

Nota

Etapa 3: Obter um token STS

Obtenha as credenciais de acesso temporárias (token STS) para a função RAM da Etapa 1. Para mais informações, consulte AssumeRole - Obter credenciais de acesso temporárias para uma função.

Etapa 4: Configure a autenticação do cliente

As credenciais de acesso temporárias incluem um AccessKey ID, um AccessKey Secret e um token de segurança, que devem ser usados em conjunto.

Cliente Nacos para Java

Se utilizar o cliente Nacos para Java, adicione a dependência necessária e configure o código da aplicação conforme abaixo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "YOUR_MSE_NACOS_INSTANCE_DOMAIN");
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "YOUR_TEMP_ACCESSKEY_ID");
# You can use the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "YOUR_TEMP_ACCESSKEY_SECRET");
# You can use the ALIBABA_CLOUD_SECURITY_TOKEN environment variable instead.
properties.put(ExtensionAuthPropertyKey.SECURITY_TOKEN_KEY.getKey(), "YOUR_TEMP_SECURITY_TOKEN");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);

Framework Spring Cloud Alibaba

Se utilizar o framework Spring Cloud Alibaba, adicione a dependência necessária e a seguinte configuração ao arquivo de configuração da sua aplicação.

Nota
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=YOUR_TEMP_ACCESSKEY_ID
# You can use the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=YOUR_TEMP_ACCESSKEY_SECRET
# You can use the ALIBABA_CLOUD_SECURITY_TOKEN environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudSecurityToken=YOUR_TEMP_SECURITY_TOKEN
## Configuration center
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeyId=YOUR_TEMP_ACCESSKEY_ID
# You can use the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=YOUR_TEMP_ACCESSKEY_SECRET
# You can use the ALIBABA_CLOUD_SECURITY_TOKEN environment variable instead.
spring.cloud.nacos.config.alibabaCloudSecurityToken=YOUR_TEMP_SECURITY_TOKEN

Framework Dubbo

Se utilizar o framework Dubbo, adicione a dependência necessária e os seguintes parâmetros à URL do registro no arquivo de configuração do Dubbo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables instead.
dubbo.registry.address=nacos://YOUR_MSE_NACOS_INSTANCE_DOMAIN:8848?alibabaCloudAccessKeyId=YOUR_TEMP_ACCESSKEY_ID&alibabaCloudAccessKeySecret=YOUR_TEMP_ACCESSKEY_SECRET&alibabaCloudSecurityToken=YOUR_TEMP_SECURITY_TOKEN

Go SDK

Se utilizar o cliente Nacos para Go, configure o código da aplicação conforme abaixo.

Nota

Recomenda-se a versão 2.3.3 ou posterior.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("YOUR_MSE_NACOS_INSTANCE_DOMAIN", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		SecurityToken: "YOUR_TEMP_SECURITY_TOKEN",
	}
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithAccessKey("YOUR_TEMP_ACCESSKEY_ID"),
		constant.WithSecretKey("YOUR_TEMP_ACCESSKEY_SECRET"),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Método 4: Usar um URI de credenciais

Para obter credenciais de um sistema externo sem gerenciar chaves diretamente, use um URI de credenciais. O cliente Nacos recupera um token STS do URI especificado, eliminando a necessidade de manter manualmente um AccessKey ou token STS.

Importante

O service de backend para o URI de credenciais deve atualizar automaticamente o token STS para garantir que sua aplicação sempre use uma credencial válida.

Etapa 1: Verifique a resposta do URI de credenciais

O URI de credenciais deve retornar uma resposta no seguinte formato para que o cliente Nacos analise e use corretamente o token STS:

  • Código de status da resposta: 200

  • Estrutura do corpo da resposta:

    {
        "Code": "Success",
        "AccessKeySecret": "AccessKeySecret",
        "AccessKeyId": "AccessKeyId",
        "Expiration": "2021-09-26T03:46:38Z",
        "SecurityToken": "SecurityToken"
    }

Etapa 2: Conceder permissões à função RAM

Conceda à função RAM que gera tokens STS acesso ao MSE Nacos anexando uma das seguintes políticas de sistema. Essas políticas concedem à função RAM acesso de leitura/gravação ou somente leitura de granularidade grossa a todas as configurações e serviços das instâncias Nacos. Para instruções detalhadas, consulte Gerencie permissões para uma função RAM.

Política

Descrição

AliyunMSEFullAccess

Concede permissões completas de gerenciamento do MSE. Um usuário RAM com esta política possui as mesmas permissões operacionais que uma conta Alibaba Cloud.

AliyunMSEReadOnlyAccess

Concede permissões de somente leitura para o MSE. Um usuário RAM com esta política pode visualizar todos os recursos do MSE sob a conta Alibaba Cloud.

Nota

Etapa 3: Configure a autenticação do cliente

Cliente Nacos para Java

Se utilizar o cliente Nacos para Java, adicione a dependência necessária e configure sua aplicação conforme abaixo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação, criptografia e descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
properties.put(ExtensionAuthPropertyKey.CREDENTIALS_URI.getKey(), "${credentials-service-uri}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);

Framework Spring Cloud Alibaba

Se utilizar o framework Spring Cloud Alibaba, adicione a dependência necessária e as seguintes propriedades ao arquivo de configuração da sua aplicação.

Nota
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
spring.cloud.nacos.discovery.alibabaCloudCredentialsUri=${credentials-service-uri}
## Configuration center
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
spring.cloud.nacos.config.alibabaCloudCredentialsUri=${credentials-service-uri}

Framework Dubbo

Se utilizar o framework Dubbo, adicione a dependência necessária e o seguinte parâmetro à URL do registro no arquivo de configuração do Dubbo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação, criptografia e descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?alibabaCloudCredentialsUri=${credentials-service-uri}

Go SDK

Se utilizar o cliente Nacos para Go, configure sua aplicação conforme abaixo.

Nota

Recomenda-se a versão 2.3.3 ou posterior.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		CredentialsURI: "${credentials-service-uri}",
	}
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Método 5: Usar RAMRoleARN

Se sua aplicação exigir acesso delegado ao MSE Nacos, como para acesso entre contas, use um RAMRoleARN. O cliente Nacos busca um token STS do STS e o atualiza automaticamente antes da expiração. Também é possível usar o parâmetro policy para restringir ainda mais as permissões da função RAM.

Importante

Este método requer um AccessKey com permissão para assumir funções. Como prática recomendada, conceda a este AccessKey apenas a permissão AssumeRole e restrinja quais funções ele pode assumir. Para mais informações, consulte AssumeRole - Obter credenciais de segurança temporárias para uma função.

Etapa 1 (Opcional): Crie um usuário RAM e uma função RAM

Etapa 2: Conceder permissões RAM

Nome da política

Descrição

AliyunMSEFullAccess

Concede permissões completas de gerenciamento do MSE, equivalentes às permissões de uma conta Alibaba Cloud.

AliyunMSEReadOnlyAccess

Concede permissões de somente leitura para todos os recursos do MSE sob a conta Alibaba Cloud.

Nota

Etapa 3: Configure a autenticação do cliente

Para usar este método, configure o cliente com o AccessKey necessário e o RAMRoleARN da função alvo.

Cliente Nacos para Java

Se utilizar o cliente Nacos para Java, adicione a dependência necessária e configure o código da aplicação conforme abaixo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain-name}");
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "${access-key-id-with-assume-role-permission}");
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "${access-key-secret-with-assume-role-permission}");
# You can configure the ALIBABA_CLOUD_ROLE_ARN environment variable instead.
properties.put(ExtensionAuthPropertyKey.ROLE_ARN.getKey(), "${role-arn-to-assume}");
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable instead.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${custom-role-session-name}");
## The following parameters are optional.
# You can configure the ALIBABA_CLOUD_POLICY environment variable instead.
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${scoped-down-policy}");
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable instead.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${session-duration-in-seconds}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);

Spring Cloud Alibaba

Se utilizar o framework Spring Cloud Alibaba, adicione a dependência necessária e as seguintes configurações ao arquivo de configuração da sua aplicação.

Nota
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=${access-key-id-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=${access-key-secret-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ROLE_ARN environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudRoleArn=${role-arn-to-assume}
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${custom-role-session-name}
## Configuration center
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeyId=${access-key-id-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=${access-key-secret-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ROLE_ARN environment variable instead.
spring.cloud.nacos.config.alibabaCloudRoleArn=${role-arn-to-assume}
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable instead.
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${custom-role-session-name}
## The following parameters are optional.
# You can configure the ALIBABA_CLOUD_POLICY environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudPolicy=${scoped-down-policy}
spring.cloud.nacos.config.alibabaCloudPolicy=${scoped-down-policy}
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}

Dubbo

Se utilizar o framework Dubbo, adicione a dependência necessária e as seguintes configurações à URL do registro no arquivo de configuração do Dubbo.

Nota

O cliente Nacos deve ser da versão 2.1.0 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia/descriptografia.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, ALIBABA_CLOUD_ROLE_ARN, and ALIBABA_CLOUD_ROLE_SESSION_NAME environment variables instead.
dubbo.registry.address=nacos://${mse-nacos-instance-domain-name}:8848?alibabaCloudAccessKeyId=${access-key-id-with-assume-role-permission}&alibabaCloudAccessKeySecret=${access-key-secret-with-assume-role-permission}&alibabaCloudRoleArn=${role-arn-to-assume}&alibabaCloudRoleSessionName=${custom-role-session-name}
## The following parameters are optional and are appended to the URL. You can configure the ALIBABA_CLOUD_POLICY and ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variables instead.
&alibabaCloudPolicy=${scoped-down-policy}&alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}

Go SDK

Se utilizar o cliente Nacos para Go, configure o código da aplicação conforme abaixo.

Nota

Recomenda-se a versão 2.3.3 ou posterior.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain-name}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		RoleArn:         "${role-arn-to-assume}",
		RoleSessionName: "${custom-role-session-name}",
	}
	// The following parameters are optional.
	ramConfig.Policy = "${scoped-down-policy}"
	ramConfig.RoleSessionExpiration = "${session-duration-in-seconds}"
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithAccessKey("${access-key-id-with-assume-role-permission}"),
		constant.WithSecretKey("${access-key-secret-with-assume-role-permission}"),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Método 6: Usar um AccessKey

Etapa 1 (Opcional): Crie um usuário RAM

Se precisar criar um usuário RAM, consulte Crie um usuário RAM.

Etapa 2: Conceder permissões ao usuário RAM

Conceda permissões ao usuário RAM da Etapa 1 anexando uma das seguintes políticas de sistema. Essas políticas concedem ao usuário RAM permissões de leitura/gravação ou somente leitura de granularidade grossa nas configurações e serviços de todas as instâncias Nacos. Para instruções detalhadas, consulte Gerencie permissões de usuário RAM.

Política

Descrição

AliyunMSEFullAccess

Concede permissões completas para gerenciar o MSE. Um usuário RAM com esta política possui as mesmas permissões operacionais que uma conta Alibaba Cloud.

AliyunMSEReadOnlyAccess

Concede permissões de somente leitura para o MSE. Um usuário RAM com esta política tem acesso de somente leitura a todos os recursos do MSE sob a conta Alibaba Cloud.

Nota

Etapa 3: Configure a autenticação do cliente

Um par de AccessKey consiste em um AccessKey ID e um AccessKey Secret, que devem ser usados em conjunto. Após ativar a autenticação para uma instância Nacos, forneça o par de AccessKey do usuário RAM no cliente Nacos. Caso contrário, o cliente não poderá acessar a instância. Para obter um par de AccessKey, consulte Crie um AccessKey.

Cliente Nacos para Java

Se utilizar o cliente Nacos para Java, configure o código da aplicação conforme abaixo.

Nota

Para usar um AccessKey na autenticação, atualize seu cliente para uma versão suportada. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia.

properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-endpoint}");
properties.put(PropertyKeyConst.ACCESS_KEY, "${accessKey}");
properties.put(PropertyKeyConst.SECRET_KEY, "${secretKey}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);

Framework Spring Cloud Alibaba

Se utilizar o framework Spring Cloud Alibaba, adicione a seguinte configuração ao arquivo de configuração da sua aplicação.

Nota

O framework Spring Cloud Alibaba deve ser da versão 2.2.1.RELEASE ou posterior.

## registry
spring.cloud.nacos.discovery.accessKey=${accessKey}
spring.cloud.nacos.discovery.secretKey=${secretKey}
## configuration center
spring.cloud.nacos.config.accessKey=${accessKey}
spring.cloud.nacos.config.secretKey=${secretKey}

Framework Dubbo

Se utilizar o framework Dubbo, adicione os seguintes parâmetros à URL do registro no arquivo de configuração do Dubbo.

dubbo.registry.address=nacos://${mse-nacos-endpoint}:8848?accessKey=${accessKey}&secretKey=${secretKey}

Cliente Nacos para Go

Se utilizar o cliente Nacos para Go, configure o código da aplicação conforme abaixo.

Nota

Para usar um AccessKey na autenticação, atualize seu cliente para uma versão suportada. Use a versão 2.3.3 ou posterior. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia.

cc := constant.ClientConfig{
    AccessKey:   "${accessKey}",
    SecretKey:   "${secretKey}"
}
serverConfigs := []constant.ServerConfig{
    {
        IpAddr:      "${mse-nacos-endpoint}",
        Port:        8848
    }
}
namingClient, err := clients.NewNamingClient(
    vo.NacosClientParam{
        ClientConfig:  &clientConfig,
        ServerConfigs: serverConfigs,
    },
)
configClient, err := clients.NewConfigClient(
    vo.NacosClientParam{
        ClientConfig:  &clientConfig,
        ServerConfigs: serverConfigs,
    },
)

Cliente Nacos para Python

Se utilizar o cliente Nacos para Python, configure o código da aplicação conforme abaixo.

Nota

Para usar um AccessKey na autenticação, atualize seu cliente para uma versão suportada. Para mais informações, consulte Versões do cliente Nacos que suportam autenticação e criptografia.

client = nacos.NacosClient("${mse-nacos-endpoint}", ak=${accessKey}, sk=${secretKey})

Método 7: Usar um AccessKey com rotação automática

Se sua aplicação precisar de acesso de longo prazo, mas o par de AccessKey estiver em risco de comprometimento, use um ClientKey com o Key Management Service (KMS). O KMS rotaciona automaticamente o par de AccessKey do usuário RAM gerenciado em intervalos regulares, transformando uma credencial estática em dinâmica. O KMS também suporta rotação sob demanda para substituir rapidamente um par de AccessKey comprometido. Isso elimina a manutenção manual, reduzindo riscos de segurança e sobrecarga operacional. Para obter um ClientKey, consulte Crie um ponto de acesso de aplicação.

Etapa 1: Armazenar credenciais RAM no KMS

Armazene as credenciais de um usuário RAM existente como um segredo RAM em uma instância KMS. Para mais informações sobre como ativar e usar segredos RAM no KMS, consulte Gerencie e use segredos RAM.

Etapa 2: Conceder permissões ao usuário RAM

Conceda permissões ao usuário RAM da Etapa 1 anexando uma das seguintes políticas de sistema. Essas políticas concedem ao usuário RAM permissões de leitura/gravação ou somente leitura de granularidade grossa nas configurações e serviços de todas as instâncias Nacos. Para instruções detalhadas, consulte Gerencie permissões de usuário RAM.

Política

Descrição

AliyunMSEFullAccess

Concede permissões completas para gerenciar o MSE. Um usuário RAM com esta política possui as mesmas permissões operacionais que uma conta Alibaba Cloud.

AliyunMSEReadOnlyAccess

Concede permissões de somente leitura para o MSE. Um usuário RAM com esta política tem acesso de somente leitura a todos os recursos do MSE sob a conta Alibaba Cloud.

Nota

Etapa 3: Crie um arquivo de configuração do Secrets Manager

Crie um arquivo de configuração chamado secretsmanager.properties no diretório raiz do seu projeto ou no classpath. O arquivo deve conter o seguinte conteúdo:

cache_client_dkms_config_info=[{"regionId":"<your-dkms-region>","endpoint":"<your-dkms-endpoint>","passwordFromFilePath":"<your-password-file-path>","clientKeyFile":"<your-ClientKey-file-path>","ignoreSslCerts":false,"caFilePath":"<your-ca-certificate-file-path>"}]
Nota

Para uma descrição dos parâmetros no arquivo de configuração, consulte Cliente do Secrets Manager.

Etapa 4: Configure a autenticação do cliente

Cliente Nacos para Java

Se utilizar o Cliente Nacos para Java, adicione a dependência necessária e configure o código da aplicação conforme abaixo.

Nota

A versão do Cliente Nacos deve ser 2.1.0 ou posterior. Para mais informações, consulte Versões do Cliente Nacos que suportam autenticação e criptografia de dados.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
properties.put(ExtensionAuthPropertyKey.SECRET_NAME.getKey(), "${name-of-the-ram-secret}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);

Spring Cloud Alibaba

Se utilizar o Spring Cloud Alibaba, adicione a dependência necessária e a seguinte configuração ao arquivo de configuração da sua aplicação.

Nota
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
spring.cloud.nacos.discovery.alibabaCloudSecretName=${name-of-the-ram-secret}
## Configuration center
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
spring.cloud.nacos.config.alibabaCloudSecretName=${name-of-the-ram-secret}

Dubbo

Se utilizar o Dubbo, adicione a dependência necessária e o seguinte parâmetro à URL do registro no arquivo de configuração do Dubbo.

Nota

A versão do Cliente Nacos deve ser 2.1.0 ou posterior. Para mais informações, consulte Versões do Cliente Nacos que suportam autenticação e criptografia de dados.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?alibabaCloudSecretName=${name-of-the-ram-secret}

Go SDK

Se utilizar o Cliente Nacos para Go, configure o código da aplicação conforme abaixo.

Nota

Recomenda-se a versão 2.3.3 ou posterior.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		SecretName: "${name-of-the-ram-secret}",
	}
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Documentos relacionados

FAQ

P: O MSE Nacos suporta autenticação de cliente com nome de usuário e senha (por exemplo, nacos/nacos)?

Não. Após ativar a autenticação RAM para o MSE Nacos, a autenticação integrada por nome de usuário/senha deixa de ser suportada. Os dois mecanismos de autenticação são mutuamente exclusivos.

Se sua aplicação cliente tiver spring.cloud.nacos.username e spring.cloud.nacos.password configurados, o servidor Nacos descartará essas solicitações, causando erros de Read timed out ou falhas de conexão mesmo quando a rede estiver normal.

Abordagem correta: Remova ou deixe vazios os campos de nome de usuário e senha na configuração do seu cliente e mude para um dos métodos de credenciais RAM suportados, como AccessKey/SecretKey ou Função RAM do ECS. Para mais informações sobre como configurar credenciais, consulte Configure credenciais do cliente.

P: Meu cliente Nacos relata NacosException: Forbidden/no right ou accesskeyid can't be null. Como solucionar isso?

Solucione o problema com base no erro específico:

Cenário 1: Erro Forbidden/no right

Causa: A configuração de autenticação do cliente não atende aos requisitos. Esse erro aparece se a versão do SDK ou os parâmetros de autenticação estiverem incorretos, mesmo quando a conexão de rede estiver normal.

Resolução:

  1. Verifique se você atualizou o SDK do Cliente Nacos para uma versão compatível. Para a versão necessária do cliente, consulte os requisitos de versão no respectivo método de configuração de credenciais neste tópico.

  2. Confirme se você configurou corretamente todos os parâmetros de autenticação necessários (por exemplo, AccessKey ID, AccessKey secret ou nome da função RAM) de acordo com as instruções neste tópico.

Cenário 2: Erro accesskeyid can't be null em clusters ACK usando Função RAM do ECS

Esse erro indica que as credenciais da Função RAM do ECS não podem ser recuperadas. Solucione o problema na seguinte ordem:

  1. Verificar conectividade de rede VPC: Confirme se o Pod consegue alcançar a instância MSE na porta 8848. Execute o seguinte comando de dentro do Pod:

    telnet <MSE Nacos instance domain> 8848
  2. Verificar vínculo da função RAM: Execute o seguinte comando dentro do Pod para confirmar se o service de metadados retorna o nome da função (não um erro 404):

    curl http://100.100.100.200/latest/meta-data/ram/security-credentials/

    Se o comando retornar um erro 404 ou uma resposta vazia, a função RAM não está vinculada corretamente à instância ECS ou ao nó de trabalhador do cluster ACK.

  3. Verificar permissões da função RAM: Confirme se a função RAM recebeu as permissões de acesso necessárias ao MSE, como AliyunMSEFullAccess ou AliyunMSEReadOnlyAccess. Para informações sobre como conceder permissões, consulte as etapas de autorização em Método 1: Autenticar com uma função RAM neste tópico.

Nota

Verificação temporária: Se o método de Função RAM do ECS continuar relatando erros após concluir as etapas acima, mude temporariamente para o método AccessKey/SecretKey para verificar a conexão. Se o método AK/SK for bem-sucedido, o problema é específico da configuração da Função RAM (por exemplo, vínculo da função ou acessibilidade do service de metadados).