使用Hashicorp Vault管理私密信息
HashiCorp Vault是一款企业级私密信息管理工具。说起Vault,不得不提它的创造者HashiCorp公司。HashiCorp是一家专注于DevOps工具链的公司,其旗下明星级产品包括Vagrant、Packer、Terraform、Consul、Nomad等,再加上Vault,这些工具贯穿了持续交付的整个流程。
管理私密信息的复杂性
在应用程序的整个生命周期中管理私密信息并非易事。如果您对访问权限过于严格,实施可能会变得过于复杂。但是,如果您采取宽松措施,则会增加安全漏洞的风险。在管理私密时还应解决其他问题:
- 如何处理外部和内部威胁(如黑客和心怀不满的员工)
- 如何在一组利益相关者之间安全地分担秘密管理责任
- 如何允许人员和服务之间无缝访问
- 如何审核在特定的时间访问私密信息的人员
Hashicorp Vault是一个开源的私密信息管理和分发工具,可以解决这些问题。
私密信息管理现状
要明白Vault的目标和价值,我们就需要先来看看私密信息管理的现状。
我们以API认证信息为例,在微服务大行其道的现在,如果你构建的应用需要调用别的API,那么你就需要向这些API提供认证信息,我们假设是用户名和密码。那么在你的代码中,你可能会硬编码这些信息,或者记录在配置文件中,再或者放在环境变量中。
而随着你需要的API越来越多,你需要管理的东西也越来越多。
这种管理方式很简单直接,但是也有很多问题。主要是在私密信息扩散和回收上。比如有一个内部API需要被一个服务消费,当出现第二个消费者的时候可能会通过某种方法使用同样的认证信息,这种情况下这一组认证信息很难真正被回收,因为使用方的信息不明确。当有恶意的第三方进行攻击的时候也很难做出防御和其他审计。
Vault的目标和特性
Vault的目标是成为私密信息的唯一来源,即一个集中化的管理工具。而私密信息的需求方可以程序化的获得所需的信息。对于私密信息,还应该有完善的审计和可视化方法,并且作为一个集中化的依赖,Vault自身必须是高可用的,对于云数据中心友好的安全架构。
Vault主要有4大特性:
-
减轻内部和外部威胁:允许Vault在危险时刻关闭/打开以应对危机,并支持各种安全后端。
-
动态机密:Vault可以自动为不同的后端生成凭据。
-
续订/撤销对私密信息的访问:Vault允许您为机密指定TTL规则,从而实现对权限的精细控制。
-
审核:启用后,将记录每个对私密信息的请求,并将输出定向到文件或syslog。
Backends
Vault提供三个主要的模块化插件:私密存储,身份验证控制和审计日志:
-
私密存储:这是“托管”私密信息的解决方案。可用的后端包括AWS S3,Consul,Generic(文件存储)等。
-
身份验证控件:身份验证机制。可用的后端是AWS EC2,LDAP,Github,令牌,用户名/密码等。
-
审核日志:发送审核日志。可用文件或系统日志。后端的特定组合将取决于项目的要求和约束,并且可以启用多个后端。有关每个后端的其他信息,包括访问它们的API请求命令,可以在官方文档中找到。
总结
使用HashiCorp Vault可以很容易地添加私密信息、应用程序能轻松的获取私密信息、采用不同策略更新私密信息、适时回收私密信息。在企业级应用场景中提供更强大功能。