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控制台訪問該執行個體。
登入MSE註冊配置中心控制台,並在頂部功能表列選擇地區。
在左側導覽列,選擇注册配置中心 > 实例列表。
在实例列表頁面,單擊目標執行個體名稱。
在左側功能表列,單擊參數設定,然後在參數設定頁面單擊編輯。
選擇ConfigAuthEnabled或NamingAuthEnabled參數,在值列,單擊ConfigAuthEnabled或NamingAuthEnabled對應的是,然後單擊儲存並重啟執行個體。
重要開啟配置中心鑒權或註冊中心鑒權開關前,您需要在用戶端配置訪問憑證,否則將無法擷取配置或服務,如何配置訪問憑證請參見用戶端配置訪問憑證。
兩個開關分別控制對應模組,互不影響。
參數
說明
ConfigAuthEnabled
配置中心鑒權開關。支援基礎版1.2.1及以上版本的執行個體,以及專業版及開發版全版本的執行個體。
NamingAuthEnabled
註冊中心鑒權開關。支援專業版或開發版2.0.4及以上版本的執行個體。
用戶端配置訪問憑證
MSE Nacos支援多種方式初始化憑證提供者,您可以根據使用情境對認證和授權的要求,選擇對應的方式初始化憑證提供者。
憑證提供者初始化方式 | 適用情境 | 是否需要提供前置的AK或STS Token | 底層實現基於的憑證 | 憑證有效期間 | 憑證輪轉或重新整理方式 |
部署運行在阿里雲的ECS執行個體、ECI執行個體、Container ServiceKubernetes版的Worker節點中的應用程式。 | 否 | STS Token | 臨時 | 自動重新整理 | |
部署運行在阿里雲的Container ServiceKubernetes版的Worker節點中的不可信應用程式。 | 否 | STS Token | 臨時 | 自動重新整理 | |
部署運行在不可信的環境的應用程式,希望能控制訪問的有效期間、許可權。 | 是 | STS Token | 臨時 | 手動重新整理 | |
需要通過外部系統擷取訪問憑證的應用程式。 | 否 | STS Token | 臨時 | 自動重新整理 | |
需要授權訪問雲端服務,例如跨阿里雲帳號訪問雲端服務的應用程式。 | 是 | STS Token | 臨時 | 自動重新整理 | |
部署運行在安全、穩定且不易受外部攻擊的環境的應用程式,無需頻繁輪轉憑證就可以長期訪問雲端服務。 | 是 | AK | 長期 | 手動輪轉 | |
部署運行在面臨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的角色
可選:建立可信實體為阿里雲服務的RAM角色。具體操作,請參見建立可信實體為阿里雲服務的RAM角色。
為已有或者建立的RAM角色授權,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權。
權限原則名稱
說明
AliyunMSEFullAccess
管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。
AliyunMSEReadOnlyAccess
微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。
說明每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
登入ECS管理主控台,在左側導覽列,選擇執行個體與鏡像 > 執行個體。
在頁面左側頂部,選擇目標資源所在的資源群組和地區。

找到要操作的ECS執行個體,選擇
> 執行個體設定 > 授予/收回RAM角色。在對話方塊中,選擇建立好的執行個體RAM角色,單擊確定。
為ACK叢集Worker RAM角色授予許可權
ACK叢集在建立時會自動建立Worker RAM角色,因此無需再次建立角色,直接使用此角色進行授權。
建立自訂權限原則,具體操作,請參見建立自訂權限原則。
為執行個體授予微服務引擎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存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
為叢集的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使用者具有阿里雲帳號所有資源的唯讀許可權。 |
每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
步驟三:用戶端(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架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。
需要將Spring Cloud Alibaba架構版本升級至2.2.9.RELEASE及以上版本。
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>## 註冊中心
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使用者。
如果您沒有RAM角色或需要建立可信實體為阿里雲帳號的RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。
步驟二:為RAM使用者及RAM角色添加許可權
為步驟一所涉及的RAM使用者授權STS的系統管理權限,具體請參見AssumeRole - 擷取扮演角色的臨時身份憑證。
為步驟一所涉及的RAM角色授權,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權。
權限原則名稱 | 說明 |
AliyunMSEFullAccess | 管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。 |
AliyunMSEReadOnlyAccess | 微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。 |
每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
步驟三:擷取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架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。
需要將Spring Cloud Alibaba架構版本升級至2.2.9.RELEASE及以上版本。
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替代
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使用者具有阿里雲帳號所有資源的唯讀許可權。 |
每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
步驟三:用戶端(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架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。
需要將Spring Cloud Alibaba架構版本升級至2.2.9.RELEASE及以上版本。
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替代
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使用者。
如果您沒有RAM角色或需要建立可信實體為阿里雲帳號的RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。
步驟二:為RAM使用者及RAM角色添加許可權
為步驟一所涉及的RAM使用者授權STS的系統管理權限,具體請參見AssumeRole - 擷取扮演角色的臨時身份憑證。
為步驟一所涉及的RAM角色授權,並選擇以下系統策略。此操作將為RAM角色授予對所有Nacos執行個體配置和服務的讀寫或唯讀許可權,屬於粗粒度授權。具體授權操作,請參見為RAM角色授權。
權限原則名稱 | 說明 |
AliyunMSEFullAccess | 管理微服務引擎MSE的許可權,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者擁有所有功能的操作許可權。 |
AliyunMSEReadOnlyAccess | 微服務引擎MSE的唯讀許可權,被授予該許可權的RAM使用者具有阿里雲帳號所有資源的唯讀許可權。 |
每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
步驟三:用戶端(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架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。
需要將Spring Cloud Alibaba架構版本升級至2.2.9.RELEASE及以上版本。
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替代
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使用者具有阿里雲帳號所有資源的唯讀許可權。 |
每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
步驟三:用戶端(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使用者具有阿里雲帳號所有資源的唯讀許可權。 |
每次最多綁定5條策略,如需綁定更多策略,請分次操作。
如果需要授予執行個體細粒度的MSE存取權限,您需要自訂權限原則。更多資訊,請參見註冊中心細粒度鑒權、配置中心細粒度鑒權和配置註冊中心常用自訂授權範例。
步驟三:建立憑據管理設定檔
在專案運行根目錄或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架構,請按照下列方式引入依賴並在應用設定檔添加下列配置。
需要將Spring Cloud Alibaba架構版本升級至2.2.9.RELEASE及以上版本。
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替代
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,
},
)