6、配置中心的安全认证
现在配置内容通过加解密的方式实现了安全保障,
但是配置中心spring-cloud-config-server还是完全对外公开的。
如果通过http协议地址:http://config-server-ip:port/applicationName/profile/label
是可以获取到配置文件内容,这对配置信息的安全保护还是不足。
需要给spring-cloud-config-server提供用户安全认证,
在这里使用spring-boot提供的security组件来使用HTTP Bastic用户安全认证。
在spring-cloud-config-server中增加新的依赖security:
在spring-cloud-config-server全局配置文件中增加用户信息:
这样就为spring-cloud-config-server提供了用户安全认证。
在客户的bootstrap配置文件中增加下述内容,来实现spring-cloud-config-client访问
7、配置中心加密
配置文件统一存储在GIT中,虽然增强了管理和版本控制,但是文件内容的安全性也成了问题。
如果外部任意知道了GIT地址或spring-cloud-config-server的地址,那么配置文件的全部内容相当于
对外完全开放。这个时候就需要提供配置内容加解密逻辑。
将加密后的配置内容保存在GIT仓库中,在spring-cloud-config-client访问
spring-cloud-config-server的时候,过spring-cloud-config-server实现加密数据的解密,
这样就可以保证配置内容的安全了。
a、对称加密
配置密钥
查看加解密环境
对dev-5.0.0加密
在命令行执行
curl http://127.0.0.1:9000/encrypt -u test -d dev-5.0.0
Enter host password for user 'test':
dcd8d3714c6e8fe91660b73461352a7807b6938e48e9d17773e6f8714cad718d(base)
-d指加密数据
-u是用户名
将密文配置到git文件中去
密文前面要加上{cipher}
访问该配置得到明文
b、非对称加密
使用不同的密钥(key)实现配置数据的加密和解密。
使用公钥加密数据,使用私钥解密数据。
JDK提供了java-keytool工具来生成密钥,生成的密钥信息是"keystore"文件。
keytool工具使用方式如下:
keytool -genkeypair -alias "test" -keyalg "RSA"
-keystore "test.keystore"
生成keystore
将生成的密钥文件test.keystore保存到spring-cloud-config-server的
classpath下(src/main/resources),并在全局配置文件中增加下述内容:
实现配置数据的加解密方式和对称加密一致。