保护敏感配置信息
Last updated
Last updated
在默认情况下,Spring Cloud Config 服务器端在应用程序配置文件中以纯文本格式存储所有属性,包括像数据库凭据这样的敏感信息。
Spring Cloud Config 可以让我们轻松加密敏感属性。Spring Cloud Config 支持使用对称加密密钥和非对称加密密钥。
对于 Spring Cloud Config 服务器端,对称加密密钥是一个由字母组成的字符串,你可以选择在 Config 服务器端的 application.yml 文件中设置它,也可以选择通过操作系统环境变量 ENCRYPT_KEY 将它传递给服务。
对称密钥的长度应该是 12 个或更多个字符,最好是一个随机的字符集。
在启动 Spring Cloud Config 实例时,Spring Cloud Config 将检测到,环境变量 ENCRYPT_KEY 或 application.yml 文件中的属性已设置,并自动将两个新端点 /encrypt 和 /decrypt 添加到 Spring Cloud Config 服务。
在调用 /encrypt 或 /decrypt 端点时,需要确保对这些端点进行 POST 请求。
在上面的这种配置下,REST 接口可以获得的便是解密后的信息,根本没有起到保密的效果!
此时,只能够保证敏感信息在 Git 仓库中的保密性,使得敏感信息能够在 Git 服务器能安全共享。
增加配置 spring.cloud.config.server.encrypt.enabled=false,可以解决上述问题,此时需要将解密的工作交由 Config Client 完成: