<返回更多

敏感数据和密钥管理方案Vault

2020-03-15    
加入收藏

Vault

vault-1.3.1版本为例,运用于SpringCloudConfig

介绍

By HashiCrop,Vault是一种密钥存储的服务工具软件,如大量的账户名、密码、Key加密Key等,它有灵活的权限控制、详细的操作记录、历史版本等。目前是有商用版和开源版提供,即支持命令行操作又支持UI管理界面,十分成熟且有好些年头了,支持命令行操作和Web管理。

官网:hashicorp-vault, 代码库:vault-github

安装使用

Vault是HashiCrop公司推出,他们公司还有个产品叫:Consul,相信这个肯定知道的。

敏感数据和密钥管理方案Vault

 

对于敢在官网直接放Github社区源代码链接的公司,天然有好感。官网菜单有个“learn”选项里面有非常详细的安装、启动、使用文档(都是英文),按着一步步很轻松就能掌握Vault。在国内访问网站经常会连不上,他们还没有提供PDF下载,对于新手来说会有掉链子的感觉。

安装的是1.3.1版本(目前最新了),配置分享给大家看看。实施的具体步骤就不说了,官网已经在傻瓜式介绍了,再啰嗦没有意义。它的配置采用他们自定义的HCL语法,代码也是采用Go编写同时开源了。

disable_mlock = true
ui = true
storage "MySQL" {
  address = "127.0.0.1:3306"
  username = "mysql"
  password = "mysql"
  database = "vault"
  ha_enabled = "true"
}
listener "tcp" {
	address = "127.0.0.1:8200"
	tls_disable = 1
	tls_disable_client_certs = 1
}
cluster_name = "cluter_vault"
disable_cache = true
log_level = "Debug"
api_addr = "http://127.0.0.1:8200"

吐槽一下官网文档中关于API这块就是坑,文档对于URL的PATH描述和示例都是错误的,如下:

$ curl 
    -H "X-Vault-Token: f3b09679-3001-009d-2b80-9c306ab81aa6" 
    -X GET 
    http://127.0.0.1:8200/v1/secret/foo

在path中是有关键字段的,如“data”,看下图:

敏感数据和密钥管理方案Vault

 

官网在API请求路径描述上是错误的(应该是没及时更新),实在是害人不浅,但有个help接口是正确的可以帮助理解path的格式规范,如:http://localhost:8200/v1/secret/?help=1。作为SpringCloudConfig选项后台,目前到data层面的保存使用已经跑通也基本够使用,其他的后续再慢慢摸索。

支持多种存储

下面列出常规的选择,其他等详细可以去官网看:>>> 点击跳转 <<<

  1. Consul
  2. Etcd
  3. Zookeeper
  4. MySQLMSSQL
  5. Filesystem

前三种1、2、3是比较靠谱方式,稳定性自不用说,很多公司用来做服务的注册与发现集群(可能它们还有存储的功能),根据自己情况定。

4是传统数据库代表,一般选用mysql,因为会使用的人远远不只是工程师和DBA,普用性高且稳定可靠。5是最简单的存储选型了,相当于本地化了,与服务器绑定,迁移备份需要自己思考做方案。

推荐MySQL、其次1、2、3方案。cloud-parent/cloud-service-config-vault项目中采用的是mysql方案。

Mysql方案会涉及两张表:vaultvault_lock。vault是核心表,数据存储格式一律是“BLOB”,安全稳定谁也别想改。迁移也简单了,直接Copy。

敏感数据和密钥管理方案Vault

 

总结

思考定位:使用简单、稳定可靠、HA、数据备份。

在SpringCloudConfig后台选型中比较看好GitLab和Vault,相对来说个人更喜欢Vault,但集成难度和学习成本比不了GitLab轻松简单。作为企业DevOps一体化方案的一部分还是以GitLab为中心选型好些,毕竟CICD放在那且大多数工程师都会Git。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>