
- 以纯文本格式存储和传输的凭据
- 证书一旦颁发或手动续签,几乎几乎不会续签
- 没有PKI证书管理
- API密钥是手工生成的,永远不会更新
- 没有SSH密钥存储
- 没有审核控制
- 无杀死开关
- 缺乏用于秘密部署的自动化
- 还有很多 …
在Cloud Native分布式基础架构中管理凭据的解决方案是什么?


按预算进行安全的凭据管理

保管箱功能:
- 安全秘密存储
- 动态秘密(秘密即服务)
- 数据加密
- 租赁和续订(密钥轮换)
- 吊销
- 审计控制
- 与各种数据库和工具集成
- 自定义插件
- 还有更多可用功能……
安全的秘密存储
- 基本凭证
- 令牌,TOTP
- PKI证书管理(很容易成为您自己的证书颁发机构)
- LDAP
- SSH密钥:
- —处理整个组织的SSH登录。
- —一次SSH访问
- —它提高了事件响应过程中审核日志的有用性
- …
动态秘密
- AWS
- 卡桑德拉
- 领事
- 哈娜
- 玛丽亚数据库
- MongoDB
- 微软SQL
- 的MySQL
- 甲骨文
- PKI证书
- PostgreSQL的
- 兔子MQ
- SSH传输
- 自定义…
为什么要动态机密?
动态密码有很多好处:
- 无需写下,存储或共享密码
- 启用寿命很短的密码,如果遭到破坏,则可以减少暴露
- 对于分布式应用程序,每个实例都获得唯一的凭据
- 不断更改和过期的用户名/密码更难于暴力破解
- 自动密码轮换/过期
- 更好的审计追踪
收益:
- 特权任务自动化
- DevOps(支持容器)
- IaaS / PaaS和虚拟化环境
- 特权使用分析
- 云交付的PAM解决方案
- 系统和特权帐户发现
- 特权身份治理和管理

建议部署:

随意使用下面的Docker Swarm示例开始您的旅程。 请注意,它尚未准备好投入生产。 请遵循Vaultproject.io提供的生产强化指南以及您的组织或个人要求。
生产应至少使用具有两个领事代理的三个节点的领事服务器群集。 至少一个主动和被动被动保管库实例。 区域复制也应始终作为考虑因素。
保管箱支持存储后端:
- 蔚蓝
- 蟑螂数据库
- 领事(强烈建议获取HA,服务注册发现等)
- DynamoDB
- 等
- 文件系统
- 基础数据库
- 谷歌云存储
- Google Cloud Spanner
- 在记忆中
- 曼塔
- 的MySQL
- PostgreSQL的
- 卡桑德拉
- S3
- 迅速
- 动物园管理员
您可以对Vault和Consul使用JSON或HCL(HashiCorp配置语言)。
部署
docker-compose up -d
去掉
码头工人组成
保管库配置样本:
{
“ ui”:是的,
“后端”:{
“领事”:{
“ address”:“ http:// consulserver:8500”,
“路径”:“金库/”
}
},
“ default_lease_ttl”:“ 168h”,
“ max_lease_ttl”:“ 720h”,
“ plugin_directory”:“ / vault / plugins”,
“侦听器”:{
“ tcp”:{
“ address”:“ 0.0.0.0:8200”,
“ tls_disable”:是
}
},
“ disable_mlock”:是
}
领事服务器配置:
{
“ bootstrap”:是的,
“服务器”:是的,
“数据中心”:“ us-east-1”,
“ data_dir”:“ / consul / data”,
“ client_addr”:“ 0.0.0.0”,
“ bind_addr”:“ {{GetInterfaceIP \” eth0 \“}}”,
“ advertise_addr”:“ {{GetInterfaceIP \” eth0 \“}}”,
“ bootstrap_expect”:1
“ ui”:是的,
“ leave_on_terminate”:是的,
“ skip_leave_on_interrupt”:是的,
“ disable_update_check”:是的,
“地址”:{
“ http”:“ 0.0.0.0”
},
“端口”:{
“ http”:8500
},
“ log_level”:“ DEBUG”,
“ acl_enforce_version_8”:否,
“ acl_datacenter”:“ us-east-1”,
“ acl_master_token”:“ w94RIMKUtQH1a4VJGN + t + vn1Y0nErc / ch93E1F1ZcHU =”,
“ acl_default_policy”:“允许”,
“连接”:{
“已启用”:true
},
“ dns_config”:{
“ allow_stale”:false
},
“自动驾驶仪”:{
“ cleanup_dead_servers”:是
},
“ retry_join”:[
“ tasks.consulserver”
]
}
领事代理配置:
{
“服务器”:false,
“数据中心”:“ us-east-1”,
“ data_dir”:“ / consul / data”,
“ client_addr”:“ 0.0.0.0”,
“ bind_addr”:“ {{GetInterfaceIP \” eth0 \“}}”,
“ advertise_addr”:“ {{GetInterfaceIP \” eth0 \“}}”,
“ ui”:错误,
“ leave_on_terminate”:是的,
“ skip_leave_on_interrupt”:否,
“ disable_update_check”:是的,
“地址”:{
“ http”:“ 0.0.0.0”
},
“端口”:{
“ http”:8500
},
“ log_level”:“ DEBUG”,
“ acl_enforce_version_8”:否,
“ acl_datacenter”:“ us-east-1”,
“ acl_master_token”:“ w94RIMKUtQH1a4VJGN + t + vn1Y0nErc / ch93E1F1ZcHU =”,
“ acl_default_policy”:“允许”,
“连接”:{
“ enabled”:是
},
“ dns_config”:{
“ allow_stale”:false
},
“ retry_join”:[
“ tasks.consulserver”
]
}
部署堆栈
env $(cat .env | grep ^ [AZ] | xargs)docker stack deploy -c stack.yml devops
删除堆栈
docker stack rm devops
列出Docker服务
码头工人服务ls
访问保险柜用户界面
打开http:// localhost:8200

Vault UI在0.10之前的版本中是一项巨大的企业功能。 战略性地在OpenSource中提供了该功能。 上面的屏幕截图显示了在初始部署后将看到的第一件事。 密钥共享基本上是您想要多少个密钥,而阈值是需要输入多少个密钥才能解开保管库。 建议至少使用5个Key Share和2个Key Threshold,以提高安全性。 另外,请确保将内容安全地下载到某处。 它还提供了根身份验证令牌。


保险柜具有密封和开封的基础 。 自动解封功能当前仅在企业版中可用。 如果您的资源被盗用,这也被视为您的“杀手开关”,然后密封您的保险库,一切将受到限制。
当前可以使用不同的ACL令牌和该令牌的策略来实现多租户。 Vault Enterprise将于2018年8月底发布名为Namespace的功能。这是真正的多租户的理想选择。

访问领事UI
打开http:// localhost:8500


使用CLI将静态凭据写入Vault:
保管库写入密钥/静态密码/用户名my-value = N7OVkOH6yQGfkGciySsek9knZfSzKjHUtQfdzd4s44
使用CLI通过键名从Vault中读取静态凭证:
保管库读取密码/静态密码/用户名

首先使用以下命令启用数据库秘密引擎:
保管库秘密启用数据库
在MongoDB中为Vault创建用户,以使用以下查询生成动态凭据( 请勿使用常见的用户名/密码 ):
db.createUser({user:'user',pwd:'pass',角色:[{角色:“ userAdminAnyDatabase”,db:“ admin”}]}));
现在,在Vault中为给定的MongoDB设置查询,并允许角色使用mongodv-database-plugin使用以下命令来生成凭据:
保管库写入数据库/ config / my-mongodb-database \
plugin_name = mongodb-database-plugin \
allowed_roles =“ my-role” \
connection_url =“ mongodb:// user:pass @ mongo / admin?ssl = false”
最后,使用User Creation和Permission语句设置Role:
保险库写入数据库/角色/ my-role \
db_name = my-mongodb-database \
creation_statements ='{“ db”:“ admin”,“ roles”:[{“ role”:“ readWrite”},{“ role”:“ read”,“ db”:“ foo”}]}''\
default_ttl =“ 1h” \
max_ttl =“ 24h”
建议使用角色,以便您可以配置特定的策略。 现在,您可以从服务中即时向保险柜查询新的Mongo凭据:
保管库读取数据库/信条/我的角色

- 领事模板
- Envconsul
- HashiCorp Vault Jenkins插件
- 本机客户端库
- 与Ansible,Chef,Puppet,Salt等集成
- 第三方工具

maxyermayank /保险库示例
保管库示例–保管库领事群集
github.com
DHUG-VAULT-TALK
丹佛HashiCorp用户组保管箱谈话
maxyermayank.github.io
特长/真棒库工具
awesome-vault-tools –关于HashiCorp Vault的出色工具
github.com
HashiCorp的保险柜
保管箱可保护,存储和严格控制对令牌,密码,证书,API密钥以及其他机密信息的访问。
www.vaultproject.io
hashicorp /领事模板
consul-template – @HashiCorp Consul和Vault数据的模板呈现,通知程序和主管。
github.com
希望这篇文章对您有所帮助。 如果您喜欢这篇文章,请别忘了鼓掌👏! 我很想知道您的想法,并希望您对此主题的想法。 您也可以在Medium , GitHub和Twitter上关注我,以获取更多更新。
如果需要为您的组织制定计划,我也可以提供咨询。