一、鑒權(quán)
按照官方文檔配置啟動,默認是不需要登錄的,這樣會導(dǎo)致配置中心對外直接暴露。而啟用鑒權(quán)之后,需要在使用用戶名和密碼登錄之后,才能正常使用nacos。開啟鑒權(quán)之前,application.properties中的配置信息為:
nacos.core.auth.enabled=false
開啟鑒權(quán)之后,application.properties中的配置信息為:
### If turn on auth system:
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
1、自定義密鑰
開啟鑒權(quán)之后,你可以自定義用于生成JWT令牌的密鑰,application.properties中的配置信息為:
### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=SecretKey0123456789012345678901234567890123456789012345678901
自定義密鑰時,推薦將配置項設(shè)置為Base64編碼的字符串,且原始密鑰長度不得低于32字符。例如下面的的例子:
### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
注意:鑒權(quán)開關(guān)是修改之后立馬生效的,不需要重啟服務(wù)端。
2、開啟服務(wù)身份識別功能
開啟鑒權(quán)功能后,服務(wù)端之間的請求也會通過鑒權(quán)系統(tǒng)的影響??紤]到服務(wù)端之間的通信應(yīng)該是可信的,因此在1.2~1.4.0版本期間,通過User-Agent中是否包含Nacos-Server來進行判斷請求是否來自其他服務(wù)端。
但這種實現(xiàn)由于過于簡單且固定,導(dǎo)致可能存在安全問題。因此從1.4.1版本開始,Nacos添加服務(wù)身份識別功能,用戶可以自行配置服務(wù)端的Identity,不再使用User-Agent作為服務(wù)端請求的判斷標準。
開啟方式:
### 開啟鑒權(quán)
nacos.core.auth.enabled=true
### 關(guān)閉使用user-agent判斷服務(wù)端請求并放行鑒權(quán)的功能
nacos.core.auth.enable.userAgentAuthWhite=false
### 配置自定義身份識別的key(不可為空)和value(不可為空)
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example
** 注意 ** 所有集群均需要配置相同的server.identity信息,否則可能導(dǎo)致服務(wù)端之間數(shù)據(jù)不一致或無法刪除實例等問題。
二、配置加密
為保證用戶敏感配置數(shù)據(jù)的安全,Nacos 提供了配置加密的新特性。降低了用戶使用的風(fēng)險,也不需要再對配置進行單獨的加密處理
前提條件
版本:
老版本暫時不兼容,目前只基于2.x版本進行了改造,推薦版本 > 2.0.4。
內(nèi)嵌數(shù)據(jù)庫啟動:
數(shù)據(jù)庫表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用來存儲每一個配置項加密使用的秘鑰。新版本的默認創(chuàng)建表的sql中已經(jīng)添加該字段。
如果之前使用過內(nèi)嵌數(shù)據(jù)庫的單機模式啟動,則需要刪除 nacos/data 文件夾,在重新啟動會重新創(chuàng)建表。
MySQL啟動:
數(shù)據(jù)庫表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用來存儲每一個配置項加密使用的秘鑰。新版本的默認創(chuàng)建表的sql中已經(jīng)添加該字段。
對于目前已經(jīng)搭建好的 Nacos 使用以下 sql 將字段添加到對應(yīng)的表中:
ALTER TABLE table_name ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘鑰'
插件化實現(xiàn)

通過 SPI 的機制抽象出加密和解密的操作,Nacos 默認提供 AES 的實現(xiàn)。用戶也可以自定義加解密的實現(xiàn)方式。具體的實現(xiàn)在 nacos-plugin 倉庫。
在 Nacos 服務(wù)端啟動的時候就會加載所有依賴的加解密算法,然后通過發(fā)布配置的 dataId 的前綴來進行匹配是否需要加解密和使用的加解密算法。
客戶端發(fā)布的配置會在客戶端通過filter完成加解密,也就是配置在傳輸過程中都是密文的。而控制臺發(fā)布的配置會在服務(wù)端進行處理。
如何使用
Nacos 加解密插件是可插拔的,有沒有都不影響 Nacos 的核心功能的運行。如果想要使用 Naocs 的配置加解密功能需要單獨引用加密算法的實現(xiàn)??蛻舳撕头?wù)端都通過添加以下依賴來使用 AES 加解密算法,服務(wù)端推薦添加到 config 模塊下。
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-aes-encryption-plugin</artifactId>
<version>${nacos-aes-encryption-plugin.version}</version>
</dependency>
${nacos-aes-encryption-plugin.version} 可以獲取插件的最新版本。
目前插件需要自己編譯,并未上傳至maven中央倉庫
如何編譯
編譯插件之前需要先編譯nacos并安裝至本地倉庫.
-
git clone git@github.com:alibaba/nacos.git
-
cd nacos && mvn -B clean package install -Dmaven.test.skip=true
若出現(xiàn)revision變量無法解析,請更新maven至最新版本
-
git clone git@github.com:nacos-group/nacos-plugin.git
-
mvn install
建議上傳到公司的maven倉庫
創(chuàng)建加密配置
-
打開 Nacos 控制臺,點擊新建配置。

-
配置前綴使用cipher-[加密算法名稱]-dataId來標識這個配置需要加密,系統(tǒng)會自動識別并加密。例如使用 AES 算法來解密配置:cipher-aes-application-dev.yml。

-
點擊保存,查看數(shù)據(jù)庫文章來源:http://www.zghlxwxcb.cn/news/detail-452742.html
三、客戶端如何進行鑒權(quán)
Java SDK鑒權(quán)
在構(gòu)建“Properties”類時,需傳入用戶名和密碼。文章來源地址http://www.zghlxwxcb.cn/news/detail-452742.html
properties.put("username","${username}");
properties.put("password","${password}");
示例代碼
try {
// Initialize the configuration service, and the console automatically obtains the following parameters through the sample code.
String serverAddr = "{serverAddr}";
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
// if need username and password to login
properties.put("username","nacos");
properties.put("password","nacos");
ConfigService configService = NacosFactory.createConfigService(properties);
} catch (NacosException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
?? 文章下方有交流學(xué)習(xí)區(qū)!一起學(xué)習(xí)進步!也可以前往官網(wǎng),加入官方微信交流群??????
?? 創(chuàng)作不易,如果覺得文章不錯,可以點贊?? 收藏?? 評論??
?
到了這里,關(guān)于Nacos鑒權(quán)和配置加密—官方原版的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!