全部產品
Search
文件中心

Microservices Engine:Nacos Client訪問鑒權

更新時間:Nov 26, 2025

MSE中的Nacos註冊配置中心可以開啟鑒權功能,以降低某個執行個體被惡意使用者非法擷取或修改的風險。本文介紹如何在MSE上為Nacos執行個體配置鑒權訪問以及如何使用Nacos Client進行鑒權訪問。

前提條件

訪問方式

本文使用引擎直連鏈路的方式配置鑒權訪問。授權成功後,Nacos Client可以通過RAM使用者或RAM角色訪問MSE的Nacos。

  • 引擎直連鏈路:通過SDK/Client直接存取Nacos引擎,主要用於程式應用對Nacos引擎的訪問。

  • 引擎管控鏈路:通過管控控制台對Nacos引擎進行操作、查看和營運,適用於各類人員使用Nacos引擎。關於引擎管控鏈路的訪問鑒權配置和使用,即為RAM使用者授予使用MSE控制台許可權的具體操作,請參見註冊配置中心授權

開啟鑒權

重要
  • 建立的Nacos引擎預設不啟用鑒權,Nacos引擎會響應所有請求。

  • Nacos開源控制台的登入功能僅用於記錄使用者,並沒有鑒權攔截請求的能力,您可以參照本文開啟鑒權。開啟Nacos鑒權功能之後,無法通過Nacos開源控制台訪問Nacos執行個體,僅支援使用MSE控制台訪問該執行個體。

  1. 登入MSE註冊配置中心控制台,並在頂部功能表列選擇地區。

  2. 在左側導覽列,選擇注册配置中心 > 实例列表

  3. 实例列表頁面,單擊目標執行個體名稱。

  4. 在左側功能表列,單擊參數設定,然後在參數設定頁面單擊編輯

  5. 選擇ConfigAuthEnabledNamingAuthEnabled參數,在列,單擊ConfigAuthEnabledNamingAuthEnabled對應的,然後單擊儲存並重啟執行個體

    重要
    • 開啟配置中心鑒權或註冊中心鑒權開關前,您需要在用戶端配置訪問憑證,否則將無法擷取配置或服務,如何配置訪問憑證請參見用戶端配置訪問憑證

    • 兩個開關分別控制對應模組,互不影響。

    參數

    說明

    ConfigAuthEnabled

    配置中心鑒權開關。支援基礎版1.2.1及以上版本的執行個體,以及專業版及開發版全版本的執行個體。

    NamingAuthEnabled

    註冊中心鑒權開關。支援專業版或開發版2.0.4及以上版本的執行個體。

用戶端配置訪問憑證

MSE Nacos支援多種方式初始化憑證提供者,您可以根據使用情境對認證和授權的要求,選擇對應的方式初始化憑證提供者。

憑證提供者初始化方式

適用情境

是否需要提供前置的AK或STS Token

底層實現基於的憑證

憑證有效期間

憑證輪轉或重新整理方式

方式一:使用ECSRAMRole

部署運行在阿里雲的ECS執行個體、ECI執行個體、Container ServiceKubernetes版的Worker節點中的應用程式。

STS Token

臨時

自動重新整理

方式二:使用OIDCRoleARN

部署運行在阿里雲的Container ServiceKubernetes版的Worker節點中的不可信應用程式。

STS Token

臨時

自動重新整理

方式三:使用STS Token

部署運行在不可信的環境的應用程式,希望能控制訪問的有效期間、許可權。

STS Token

臨時

手動重新整理

方式四:使用CredentialsURI

需要通過外部系統擷取訪問憑證的應用程式。

STS Token

臨時

自動重新整理

方式五:使用RAMRoleARN

需要授權訪問雲端服務,例如跨阿里雲帳號訪問雲端服務的應用程式。

STS Token

臨時

自動重新整理

方式六:使用AccessKey

部署運行在安全、穩定且不易受外部攻擊的環境的應用程式,無需頻繁輪轉憑證就可以長期訪問雲端服務。

AK

長期

手動輪轉

方式七:使用自動輪轉的AccessKey

部署運行在面臨AK泄露風險的環境的應用程式,需要頻繁輪轉憑證才長期能訪問雲端服務。

AK

長期

自動輪轉

方式一:使用ECSRAMRole

藉助ECS執行個體或ACK執行個體的RAM角色,您可以將RAM角色與ECS執行個體或ACK執行個體關聯起來,然後將RAM角色名稱告知Nacos Client,無需配置AccessKey即可訪問MSE。基於RAM角色,您可以為不同執行個體設定不同的角色和授權策略,控制存取權限粒度或範圍。請參見ECS執行個體RAM角色授權概述RAM角色概覽

說明

使用ECSRAMRole方式進行鑒權,需要將應用部署到阿里雲ECS執行個體或ACK叢集,且ECS執行個體或ACK叢集的網路環境為專用網路VPC。更多資訊,請參見什麼是Elastic Compute Service什麼是Container Service Kubernetes 版什麼是Virtual Private Cloud

步驟一:建立RAM角色並配置授權策略

為ECS執行個體授予可訪問MSE Nacos的角色
  1. 可選:建立可信實體為阿里雲服務的RAM角色。具體操作,請參見建立可信實體為阿里雲服務的RAM角色

  2. 為已有或者建立的RAM角色授權,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權

    權限原則名稱

    說明

    AliyunMSEFullAccess

    管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

    AliyunMSEReadOnlyAccess

    微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

    說明
  3. 登入ECS管理主控台,在左側導覽列,選擇執行個體與鏡像 > 執行個體

  4. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。

    image

  5. 找到要操作的ECS執行個體,選擇image.png > 執行個體設定 > 授予/收回RAM角色

  6. 在對話方塊中,選擇建立好的執行個體RAM角色,單擊確定

為ACK叢集Worker RAM角色授予許可權
說明

ACK叢集在建立時會自動建立Worker RAM角色,因此無需再次建立角色,直接使用此角色進行授權。

  1. 建立自訂權限原則,具體操作,請參見建立自訂權限原則

    • 為執行個體授予微服務引擎MSE的系統管理權限。

      {
          "Action": "mse:*",
          "Resource": "*",
          "Effect": "Allow"
      },
      {
          "Action": "ram:CreateServiceLinkedRole",
          "Resource": "*",
          "Effect": "Allow",
          "Condition": {
              "StringEquals": {
                  "ram:ServiceName": "mse.aliyuncs.com"
              }
          }
      }
    • 為執行個體授予微服務引擎MSE的唯讀許可權。

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

    如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權配置中心細粒度鑒權配置註冊中心常用自訂授權範例

  2. 為叢集的Worker RAM角色授權。具體操作,請參見為叢集的Worker RAM角色授權

步驟二:用戶端(SDK)配置鑒權

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式配置程式碼。

說明

使用RAM角色進行鑒權需要用戶端升級至對應版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
properties.put(PropertyKeyConst.RAM_ROLE_NAME, "${roleName}");
// 註冊中心
NamingService naming = NamingFactory.createNamingService(properties);
// 配置中心
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請在應用設定檔中添加下列配置。

說明

需要將Spring Cloud Alibaba架構版本升級至2.2.9.RELEASE及以上版本。

需要將 Nacos Client 升級至2.2.0及以上版本。

## 註冊中心
spring.cloud.nacos.discovery.ramRoleName=${roleName}

## 配置中心
spring.cloud.nacos.config.ramRoleName=${roleName}
Dubbo架構

若您使用的是Dubbo架構,請在dubbo設定檔的註冊中心連結URL中加入下列配置。

說明

需要將 Nacos Client 升級至2.2.0及以上版本。

dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?ramRoleName=${roleName}
Go SDK

如果您使用的是Go 版本的 Nacos Client,請按照如下方式配置程式碼。

說明

建議使用2.3.3及以上版本。

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mseNacos執行個體網域名稱}", 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 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,
		},
	)

方式二:使用OIDCRoleARN

在Container ServiceKubernetes版中設定了Worker節點RAM角色(方式一)後,對應節點內的Pod中的應用也就可以像ECS上部署的應用一樣,通過中繼資料服務(Meta Data Server)擷取關聯角色的STS Token。但如果容器叢集上部署的是不可信的應用(比如部署您的客戶提交的應用,代碼也沒有對您開放),您可能並不希望它們能通過中繼資料服務擷取Worker節點關聯執行個體RAM角色的STS Token。

為了避免影響雲上資源的安全,同時又能讓這些不可信的應用安全地擷取所需的STS Token,實現應用層級的許可權最小化,您可以使用RRSA(RAM Roles for Service Account)功能。該方式底層實現是STS Token。阿里雲容器叢集會為不同的應用Pod建立和掛載相應的服務賬戶OIDC Token檔案,並將相關配置資訊注入到環境變數中,Nacos Client會通過擷取環境變數的配置資訊,調用STS服務的AssumeRoleWithOIDC介面換取綁定角色的STS Token。該方式無需您提供一個AK或STS Token,消除了手動維護AK或STS Token的風險。

步驟一:開啟ACK叢集的RRSA功能

開啟ACK叢集的RRSA功能,請參見基於RRSA的Pod許可權隔離

步驟二:為RAM角色授權

為步驟一所涉及的RAM角色(如基於RRSA的Pod許可權隔離中的demo-role-for-rrsa)授予MSE Nacos的存取權限,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請為RAM角色授權

權限原則名稱

說明

AliyunMSEFullAccess

管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

AliyunMSEReadOnlyAccess

微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

說明

步驟三:用戶端(SDK)配置鑒權

此方式您只需要配置RoleSessionName,其他臨時憑據將根據ACK的RRSA功能所傳入的環境變數提供。

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式配置程式碼。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${角色扮演會話名稱,自訂}");
## 以下為選擇性參數
# 可通過配置環境變數ALIBABA_CLOUD_POLICY替代
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${設定更小的權限原則}");
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION替代
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${角色扮演的有效期間,單位秒}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。

說明
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
## 註冊中心
spring.cloud.nacos.discovery.server-addr=${nacos 服務串連地址}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${角色扮演會話名稱,自訂}

## 配置中心
spring.cloud.nacos.config.server-addr==${nacos 服務串連地址}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${角色扮演會話名稱,自訂}

## 以下為選擇性參數
# 可通過配置環境變數ALIBABA_CLOUD_POLICY替代
spring.cloud.nacos.discovery.alibabaCloudPolicy=${設定更小的權限原則}
spring.cloud.nacos.config.alibabaCloudPolicy=${設定更小的權限原則}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION替代
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${角色扮演的有效期間,單位秒}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${角色扮演的有效期間,單位秒}
Dubbo架構

若您使用的是Dubbo架構,請按照下列方式引入依賴並在dubbo設定檔的註冊中心連結URL中加入下列配置。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?alibabaCloudRoleSessionName=${角色扮演會話名稱,自訂}

## 以下為選擇性參數,補充在URL之後;可通過配置環境變數ALIBABA_CLOUD_POLICY,ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION替代
&alibabaCloudPolicy=${設定更小的權限原則}&alibabaCloudRoleSessionExpiration=${角色扮演的有效期間,單位秒}
Go SDK

如果您使用的是Go 版本的 Nacos Client, 請按照如下方式配置程式碼。

說明

建議使用2.3.3及以上版本。

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mseNacos執行個體網域名稱}", 8848, constant.WithContextPath("/nacos")),
	}

	ramConfig := constant.RamConfig{
		RoleSessionName: "${角色扮演會話名稱,自訂}",
	}
	//以下為選擇性參數
	ramConfig.Policy = "${設定更小的權限原則}"
	ramConfig.RoleSessionExpiration = ${角色扮演的有效期間,單位秒}
	//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,
		},
	)

方式三:使用STS Token

如果您的應用程式需要臨時訪問MSE Nacos,您可以使用通過STS服務擷取的臨時身份憑證(Access Key ID、Access Key Secret和Security Token)初始化憑證提供者。

重要

該方式需要您手動維護一個STS Token,存在穩定性風險和維護複雜度增加的風險。此外,如果您需要多次臨時訪問MSE Nacos,您需要手動重新整理STS Token。

步驟一:建立RAM使用者和RAM角色(可選)

步驟二:為RAM使用者及RAM角色添加許可權

  • 為步驟一所涉及的RAM使用者授權STS的系統管理權限,具體請參見AssumeRole - 擷取扮演角色的臨時身份憑證

  • 為步驟一所涉及的RAM角色授權,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權

權限原則名稱

說明

AliyunMSEFullAccess

管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

AliyunMSEReadOnlyAccess

微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

說明

步驟三:擷取STS Token

需要擷取步驟一所對應的RAM角色的臨時訪問憑據STS Token,關於如何擷取STS Token,請參見AssumeRole - 擷取扮演角色的臨時身份憑證

步驟四:用戶端(SDK)配置鑒權

臨時憑據包括Access Key ID、Access Key Secret和Security Token,需一起使用。

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式引入依賴及配置程式碼。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID替代
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "${臨時憑據的AccessKeyID}");
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_SECRET替代
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "${臨時憑據的AccessKeySecret}");
# 可通過配置環境變數ALIBABA_CLOUD_SECURITY_TOKEN替代
properties.put(ExtensionAuthPropertyKey.SECURITY_TOKEN_KEY.getKey(), "${臨時憑據的SecurityToken}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。

說明
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
## 註冊中心
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID替代
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=${臨時憑據的AccessKeyID}
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_SECRET替代
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=${臨時憑據的AccessKeySecret}
# 可通過配置環境變數ALIBABA_CLOUD_SECURITY_TOKEN替代
spring.cloud.nacos.discovery.alibabaCloudSecurityToken=${臨時憑據的SecurityToken}

## 配置中心
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID替代
spring.cloud.nacos.config.alibabaCloudAccessKeyId=${臨時憑據的AccessKeyID}
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_SECRET替代
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=${臨時憑據的AccessKeySecret}
# 可通過配置環境變數ALIBABA_CLOUD_SECURITY_TOKEN替代
spring.cloud.nacos.config.alibabaCloudSecurityToken=${臨時憑據的SecurityToken}
Dubbo架構

若您使用的是Dubbo架構,請按照下列方式引入依賴並在dubbo設定檔的註冊中心連結URL中加入下列配置。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID,ALIBABA_CLOUD_ACCESS_KEY_SECRET,ALIBABA_CLOUD_SECURITY_TOKEN替代
dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?alibabaCloudAccessKeyId=${臨時憑據的AccessKeyID}&alibabaCloudAccessKeySecret=${臨時憑據的AccessKeySecret}&alibabaCloudSecurityToken=${臨時憑據的SecurityToken}
Go SDK

如果您使用的是Go 版本的 Nacos Client, 請按照如下方式配置程式碼。

說明

建議使用2.3.3及以上版本。

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mseNacos執行個體網域名稱}", 8848, constant.WithContextPath("/nacos")),
	}

	ramConfig := constant.RamConfig{
		SecurityToken: "${臨時憑據的SecurityToken}",
	}
	//create ClientConfig

	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithAccessKey("${臨時憑據的AccessKeyID}"),
		constant.WithSecretKey("${臨時憑據的AccessKeySecret}"),
		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,
		},
	)

方式四:使用CredentialsURI

如果您的應用程式需要通過外部系統擷取阿里雲憑證,從而實現靈活的憑證管理和無密鑰訪問,您可以使用CredentialsURI初始化憑證提供者。該方式底層實現是STS Token。Nacos Client通過您提供的URI擷取STS Token,完成憑證用戶端初始化。該方式無需您提供一個AccessKey或STS Token,消除了手動維護AccessKey或STS Token的風險。

重要

提供CredentialsURI響應的後端服務需要實現STS Token的自動重新整理邏輯,確保您的應用程式始終能擷取到有效憑證。

步驟一:確認CredentialsURI服務的響應正確

為了使Nacos Client正確解析和使用STS Token,CredentialsURI必須遵循以下響應協議:

  • 響應狀態代碼:200

  • 響應體結構:

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

步驟二:為RAM角色授權

為步驟一所涉及的RAM角色授予MSE Nacos的存取權限,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權

權限原則名稱

說明

AliyunMSEFullAccess

管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

AliyunMSEReadOnlyAccess

微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

說明

步驟三:用戶端(SDK)配置鑒權

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式引入依賴及配置程式碼。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
# 可通過配置環境變數ALIBABA_CLOUD_CREDENTIALS_URI替代
properties.put(ExtensionAuthPropertyKey.CREDENTIALS_URI.getKey(), "${Credentials服務的URI,例如:https://$host:$port/$path....");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。

說明
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
## 註冊中心
# 可通過配置環境變數ALIBABA_CLOUD_CREDENTIALS_URI替代
spring.cloud.nacos.discovery.alibabaCloudCredentialsUri=${Credentials服務的URI,例如:https://$host:$port/$path....}

## 配置中心
# 可通過配置環境變數ALIBABA_CLOUD_CREDENTIALS_URI替代
spring.cloud.nacos.config.alibabaCloudCredentialsUri=${Credentials服務的URI,例如:https://$host:$port/$path....}
Dubbo架構

若您使用的是Dubbo架構,請按照下列方式引入依賴並在dubbo設定檔的註冊中心連結URL中加入下列配置。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
# 可通過配置環境變數ALIBABA_CLOUD_CREDENTIALS_URI替代
dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?alibabaCloudCredentialsUri=${Credentials服務的URI,例如:https://$host:$port/$path....}
Go SDK

如果您使用的是Go 版本的 Nacos Client, 請按照如下方式配置程式碼。

說明

建議使用2.3.3及以上版本。

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mseNacos執行個體網域名稱}", 8848, constant.WithContextPath("/nacos")),
	}

	ramConfig := constant.RamConfig{
		CredentialsURI: "${Credentials服務的URI,例如:https://$host:$port/$path....}",
	}
	//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,
		},
	)

方式五:使用RAMRoleARN

如果您的應用程式需要授權訪問MSE Nacos,例如跨阿里雲帳號訪問MSE Nacos,您可以使用RAMRoleARN初始化憑證提供者。該方式底層實現是STS Token。通過指定RAM角色的ARN(Alibabacloud Resource Name),Nacos Client會前往STS服務擷取STS Token,並在會話到期前自動重新整理STS Token。此外,您還可以通過為policy賦值來限制RAM角色到一個更小的許可權集合。

重要

該方式需要您提供一個AccessKey,且此AccessKey具有扮演角色的許可權。建議限制此AccessKey僅有扮演角色的許可權,且限制此AccessKey可扮演的角色,具體內容請參見AssumeRole - 擷取扮演角色的臨時身份憑證

步驟一:建立RAM使用者和RAM角色(可選)

步驟二:為RAM使用者及RAM角色添加許可權

  • 為步驟一所涉及的RAM使用者授權STS的系統管理權限,具體請參見AssumeRole - 擷取扮演角色的臨時身份憑證

  • 為步驟一所涉及的RAM角色授權,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權

權限原則名稱

說明

AliyunMSEFullAccess

管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

AliyunMSEReadOnlyAccess

微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

說明

步驟三:用戶端(SDK)配置鑒權

此方式需要您配置AccessKey及對應角色的RAMRoleArn作為憑據。

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式引入依賴及配置程式碼。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID替代
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "${具有扮演角色許可權的AccessKeyID}");
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_SECRET替代
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "${具有扮演角色許可權的AccessKeySecret}");
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_ARN替代
properties.put(ExtensionAuthPropertyKey.ROLE_ARN.getKey(), "${被扮演的角色的RoleArn}");
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${角色扮演會話名稱,自訂}");
## 以下為選擇性參數
# 可通過配置環境變數ALIBABA_CLOUD_POLICY替代
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${設定更小的權限原則}");
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION替代
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${角色扮演的有效期間,單位秒}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。

說明
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
## 註冊中心
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID替代
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=${具有扮演角色許可權的AccessKeyID}
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_SECRET替代
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=${具有扮演角色許可權的AccessKeySecret}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_ARN替代
spring.cloud.nacos.discovery.alibabaCloudRoleArn=${被扮演的角色的RoleArn}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${角色扮演會話名稱,自訂}

## 配置中心
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID替代
spring.cloud.nacos.config.alibabaCloudAccessKeyId=${具有扮演角色許可權的AccessKeyID}
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_SECRET替代
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=${具有扮演角色許可權的AccessKeySecret}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_ARN替代
spring.cloud.nacos.config.alibabaCloudRoleArn=${被扮演的角色的RoleArn}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_NAME替代
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${角色扮演會話名稱,自訂}

## 以下為選擇性參數
# 可通過配置環境變數ALIBABA_CLOUD_POLICY替代
spring.cloud.nacos.discovery.alibabaCloudPolicy=${設定更小的權限原則}
spring.cloud.nacos.config.alibabaCloudPolicy=${設定更小的權限原則}
# 可通過配置環境變數ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION替代
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${角色扮演的有效期間,單位秒}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${角色扮演的有效期間,單位秒}
Dubbo架構

若您使用的是Dubbo架構,請按照下列方式引入依賴並在dubbo設定檔的註冊中心連結URL中加入下列配置。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
# 可通過配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID,ALIBABA_CLOUD_ACCESS_KEY_SECRET,ALIBABA_CLOUD_ROLE_ARN,ALIBABA_CLOUD_ROLE_SESSION_NAME替代
dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?alibabaCloudAccessKeyId=${具有扮演角色許可權的AccessKeyID}&alibabaCloudAccessKeySecret=${具有扮演角色許可權的AccessKeySecret}&alibabaCloudRoleArn=${被扮演的角色的RoleArn}&alibabaCloudRoleSessionName=${角色扮演會話名稱,自訂}

## 以下為選擇性參數,補充在URL之後;可通過配置環境變數ALIBABA_CLOUD_POLICY,ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION替代
&alibabaCloudPolicy=${設定更小的權限原則}&alibabaCloudRoleSessionExpiration=${角色扮演的有效期間,單位秒}
Go SDK

如果您使用的是Go 版本的 Nacos Client, 請按照如下方式配置程式碼。

說明

建議使用2.3.3及以上版本。

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mseNacos執行個體網域名稱}", 8848, constant.WithContextPath("/nacos")),
	}

	ramConfig := constant.RamConfig{
		RoleArn:         "${被扮演的角色的RoleArn}",
		RoleSessionName: "${角色扮演會話名稱,自訂}",
	}

	//以下為選擇性參數
	ramConfig.Policy = "${設定更小的權限原則}"
	ramConfig.RoleSessionExpiration = "${角色扮演的有效期間,單位秒}"
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithAccessKey("${具有扮演角色許可權的AccessKeyID}"),
		constant.WithSecretKey("${具有扮演角色許可權的AccessKeySecret}"),
		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,
		},
	)

方式六:使用AccessKey

步驟一:建立RAM使用者(可選)

如果您沒有RAM使用者或需要建立新的RAM使用者,請參見建立RAM使用者

步驟二:為RAM使用者添加許可權

為步驟一所涉及的RAM使用者授權,並選擇以下系統策略。此操作將為RAM使用者授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM使用者授權

權限原則名稱

說明

AliyunMSEFullAccess

管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

AliyunMSEReadOnlyAccess

微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

說明

步驟三:用戶端(SDK)配置鑒權

AccessKey包括AccessKey ID和AccessKey Secret,需一起使用。Nacos執行個體開啟鑒權後,在使用Nacos用戶端時,需要添加對應RAM使用者的AccessKey ID和AccessKey Secret,否則無法訪問Nacos執行個體。關於擷取AccessKey,請參見建立AccessKey

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式配置程式碼。

說明

使用AccessKey進行鑒權需要用戶端升級至對應版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
properties.put(PropertyKeyConst.ACCESS_KEY, "${accessKey}");
properties.put(PropertyKeyConst.SECRET_KEY, "${secretKey}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請在應用設定檔添加下列配置。

說明

需要將Spring Cloud Alibaba架構版本升級至2.2.1.RELEASE及以上版本。

## 註冊中心
spring.cloud.nacos.discovery.accessKey=${accessKey}
spring.cloud.nacos.discovery.secretKey=${secretKey}

## 配置中心
spring.cloud.nacos.config.accessKey=${accessKey}
spring.cloud.nacos.config.secretKey=${secretKey}
Dubbo架構

若您使用的是Dubbo架構,請在dubbo設定檔的註冊中心連結URL中加入下列配置。

dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?accessKey=${accessKey}&secretKey=${secretKey}
Go版本的Nacos Client

若您使用的是Go版本的Nacos Client,請按照下列方式配置程式碼。

說明

使用AccessKey進行鑒權需要用戶端升級至對應版本。建議使用2.3.3及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

cc := constant.ClientConfig{
    AccessKey:   "${accessKey}",
    SecretKey:   "${secretKey}"
}

serverConfigs := []constant.ServerConfig{
    {
        IpAddr:      "${mseNacos執行個體網域名稱}",
        Port:        8848
    }
}

namingClient, err := clients.NewNamingClient(
    vo.NacosClientParam{
        ClientConfig:  &clientConfig,
        ServerConfigs: serverConfigs,
    },
)

configClient, err := clients.NewConfigClient(
    vo.NacosClientParam{
        ClientConfig:  &clientConfig,
        ServerConfigs: serverConfigs,
    },
)
Python版本的Nacos Client

若您使用的是Python版本的Nacos Client,請按照下列方式配置程式碼。

說明

使用AccessKey進行鑒權需要用戶端升級至對應版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

client = nacos.NacosClient(${mseNacos執行個體網域名稱}, ak=${accessKey}, sk=${secretKey})

方式七:使用自動輪轉的AccessKey

如果您的應用程式需要長期訪問您的MSE Nacos,但部署啟動並執行環境面臨AK泄露的風險,需要頻繁手動輪轉(輪換)AccessKey,您可以使用ClientKey初始化憑證提供者。該方式底層實現是AccessKey。使用ClientKey後,Key Management Service(KMS)可以對託管的RAM使用者AccessKey進行全自動的定期輪轉,將靜態RAM使用者AK動態化,從而降低AK泄漏的風險。除定期輪轉外,KMS還支援立即輪轉,在AK泄漏情況下快速更換AK。該方式無需您手動維護一個AK,從而降低安全性風險和維護複雜度增加的風險。如何擷取ClientKey,請參見建立應用存取點

步驟一:將RAM使用者託管至KMS的RAM憑據管理中

您需要先將已有的RAM使用者託管至KMS執行個體的RAM憑據管理,如何啟用KMS的RAM憑據管理,請參見管理及使用RAM憑據

步驟二:為RAM使用者添加許可權

為步驟一所涉及的RAM使用者授權,並選擇以下系統策略。此操作將為RAM使用者授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM使用者授權

權限原則名稱

說明

AliyunMSEFullAccess

管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。

AliyunMSEReadOnlyAccess

微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。

說明

步驟三:建立憑據管理設定檔

在專案運行根目錄或classpath中建立設定檔,需要注意設定檔名稱固定為secretsmanager.properties。檔案內容如下:

cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
說明

設定檔中各配置項說明,請參見憑據用戶端

步驟四:用戶端(SDK)配置鑒權

Java版本的Nacos Client

若您使用的是Java版本的Nacos Client,請按照下列方式引入依賴及配置程式碼。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos執行個體網域名稱}");
# 可通過配置環境變數ALIBABA_CLOUD_SECRET_NAME替代
properties.put(ExtensionAuthPropertyKey.SECRET_NAME.getKey(), "${RAM憑據的名稱}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba架構

若您使用的是Spring Cloud Alibaba架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。

說明
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
## 註冊中心
# 可通過配置環境變數ALIBABA_CLOUD_SECRET_NAME替代
spring.cloud.nacos.discovery.alibabaCloudSecretName=${RAM憑據的名稱}

## 配置中心
# 可通過配置環境變數ALIBABA_CLOUD_SECRET_NAME替代
spring.cloud.nacos.config.alibabaCloudSecretName=${RAM憑據的名稱}
Dubbo架構

若您使用的是Dubbo架構,請按照下列方式引入依賴並在dubbo設定檔的註冊中心連結URL中加入下列配置。

說明

Nacos-Client的版本需要2.1.0及以上版本。更多資訊,請參見Nacos Client鑒權及加解密支援版本

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- 需要1.0.5及以上版本 -->
    <version>1.0.5</version>
</dependency>
# 可通過配置環境變數ALIBABA_CLOUD_SECRET_NAME替代
dubbo.registry.address=nacos://${mseNacos執行個體網域名稱}:8848?alibabaCloudSecretName=${RAM憑據的名稱}
Go SDK

如果您使用的是Go 版本的 Nacos Client, 請按照如下方式配置程式碼。

說明

建議使用2.3.3及以上版本。

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mseNacos執行個體網域名稱}", 8848, constant.WithContextPath("/nacos")),
	}

	ramConfig := constant.RamConfig{
		SecretName: "${RAM憑據的名稱}",
	}

	//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,
		},
	)

相關文檔