主要观点:微服务安全相关重要话题是管理和保护应用使用的敏感数据,如令牌、密码或证书。开发者常将敏感数据以明文存于配置文件,虽可加密但多服务分离数据库时不太适用。文中介绍将 Spring Boot 应用与 HashiCorp 的 Vault 集成以妥善存储敏感数据,包括运行 Vault、与 Postgres 数据库集成、启用 Spring Cloud Vault 以及在 Nomad 上部署应用等步骤。
关键信息:
- 示例由部署在 Nomad 上的
callme-service
和caller-service
两个应用组成,通过 Consul 进行服务发现,callme-service
将交互历史存储于数据库,数据库凭证存于 Vault。 - 在开发模式下通过 Docker 运行 Vault,可用 Root Token 登录,可创建连接其他服务的 Secret Engine 如 PostgreSQL。
- 配置 PostgreSQL 的 Secret Engine 需设置插件、连接设置和凭证等,创建角色并设置相关权限。
- 启用 Spring Cloud Vault 需添加相关依赖,配置与 Vault 的集成,将生成的数据库凭证注入应用。
- 部署应用前需运行 Consul 的 Docker 容器,配置 Nomad 与 Consul 和 Vault 的连接,构建项目并准备 Nomad 的作业描述文件,添加 Vault 策略后可部署应用,应用已在 Consul 注册。
重要细节: - Docker 运行 Vault 命令及登录获取 Root Token 的操作。
- 配置 PostgreSQL Secret Engine 的各种命令和参数,如连接 URL、用户名、密码等。
- Spring Cloud Vault 的依赖配置及与 Vault 集成的相关属性设置。
- Nomad 配置文件的内容及部署应用的命令和流程。
- 在 Vault 中设置用于应用的策略及相关权限设置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。