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

作者: Java旺 | 来源:发表于2020-02-27 13:02 被阅读0次

    Vault

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

    介绍

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

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

    安装使用

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

    image

    对于敢在官网直接放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”,看下图:

    image

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

    支持多种存储

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

    1. Consul
    2. Etcd
    3. Zookeeper
    4. MySQL\MSSQL
    5. Filesystem

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

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

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

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

    image

    总结

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

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


    相关文章

      网友评论

        本文标题:敏感数据和密钥管理方案Vault

        本文链接:https://www.haomeiwen.com/subject/zzuthhtx.html