资讯专栏INFORMATION COLUMN

vault-服务器密码/证书管理工具

zhaofeihao / 1538人阅读

摘要:在把数据写入存储后端之前会先将数据加密,所以即使你直接读取存储后端数据也无法拿到真正的数据。数据加密可以在不对数据存储的情况下,对数据进行加密和解密。作为证书服务器能够作为服务器,根据请求信息自动颁发证书。

vault介绍 vault是什么

vault是一个密码/证书集中式管理工具,通过HTTP-API对外提供统一的密码访问入口,并且提供权限控制以及详细的日志审计功能。

一个系统可能需要访问多个带密码的后端:例如数据库、通过API keys对外部系统进行调用,面向服务的架构通信等等。要将众多系统中的用户和权限对应起来已经非常困难,加上提供密钥滚动功能、安全的存储后端还要有详细的审计日志,自定义解决方案几乎不太可能。这也就是vault存在的意义。

vault的特性

(1)安全的存储后端:任意的键值对密码都能存储在vault。vault在把数据写入存储后端之前会先将数据加密,所以即使你直接读取存储后端数据也无法拿到真正的数据。vault的存储后端可以是文件、Consul、etcd等等

(2)动态密码生成:vault能够按需生成某些后端的密码,例如:AWS、SQL数据库等等。例如当一个应用需要访问AWS的S3 bucket,应用向vault请求访问S3 bucket的证书,vault能按需生成一个指定权限的AWS密钥,并且能够根据租期自动销毁这个密钥。

(3)数据加密:vault可以在不对数据存储的情况下,对数据进行加密和解密。安全团队只需定义好加密方法,开发将加密后的数据存储在例如SQL之类的后端即可,而无需设计自己的加密方式。

(4)租期和续租:在vualt里面,全部的密码都可以跟租期联系起来。在租期结束时,vault会自动销毁对应的密码。客户端能够通过renew-API进行续租。

(5) 销毁:vault本身支持对密码进行销毁,不仅支持销毁单个密码,还支持销毁与之关联的密码。比如指定某个用户读取的全部密码,或者特定类型的密码。销毁功能能够在密码被泄露的时候辅助锁定系统。

vault的使用场景

(1) 作为集中存储各个服务器账号密码的服务器。目前我们有服务器需要访问到有密码的后端的时候,有几种方案:

export到环境变量

写死到代码里面

上线的时候使用自动化工具对变量进行替换

第一种方案带来的问题是使用麻烦,后两种方案带来的问题是维护和变更麻烦。比如DB密码泄露,需要修改密码,首先DBA修改密码,然后通知到应用,应用再做代码上的变更。如果使用vault的话,DBA只要在vault上面修改好密码之后通知应用重新从vault拉取最新密码就行了。

(2)为每一个操作单位动态分配账号

比如过去我们想要对某些敏感操作进行审计,但是由于生成账号比较麻烦,所以存在公用账号的情况。vault支持为某些后端动态生成账号的功能,比如SQL,当某个应用向vault请求账号密码的时候,vault能够为每次请求生成一个独一无二的SQL账号密码。

(3) 作为证书服务器

vault能够作为CA服务器,根据请求信息自动颁发证书。并且提供在线CA和CRL的功能。不过目前只能在vault里面新生成ROOT-CA,不能导入原有的ROOT-CA。

(4)作为OAUTH服务器

vault支持多种认证后端,比如github、kubernetes、账号密码等等。vault能够将这些账号关联成一个用户,在用户认证之后返回一个token供用户使用。

最简单的vault服务器

以Linux-64bit系统为例

# 下载 vault
wget https://releases.hashicorp.com/vault/0.9.1/vault_0.9.1_linux_amd64.zip
unzip vault_0.9.1_linux_amd64.zip

# 启动dev模式,此模式下任何改动都在内存中进行,数据不会保存

./vault server -dev

# 启动信息
# ==> Vault server configuration:
# ...
# Unseal Key: 0Gg1yc/qY2W3f82DnxcZTEjdvMuxpjOV5nzNnVrMy4U=
# Root Token: eb45cfe5-9cca-3b23-5416-49f2febeb59c
# ...

# 我们能看到vault自动监听在了127.0.0.1:8200,并自动为我们生成了unseal-key以及root-token

# 启封 vault,在使用vault之前首先要对vault进行启封,才能对vault进行后续操作。使用上面生成的uneal-key,其实dev模式下默认是已经启封状态
vault unseal 0Gg1yc/qY2W3f82DnxcZTEjdvMuxpjOV5nzNnVrMy4U=
# 认证,使用上面的Root Token
vault auth eb45cfe5-9cca-3b23-5416-49f2febeb59c
# 将vault地址写入环境变量
export VAULT_ADDR="http://127.0.0.1:8200"
# 使用vault-cli操作vault,实际上后台是调用通过HTTP-API来操作vault
# 写入密码,在此你可以写入任意的键值对
vault write secret/vault host=127.0.0.1 password=123456

# 读取刚刚写入的密码
vault read secret/vault

结语

当然vault能做的远远不止上面的键值对存储和读取,这里主要对vault的使用做一个大概的介绍,以及简单使用,后面会深入讲解vault的各个组件以及高级用法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11308.html

相关文章

  • 10 种保护 Spring Boot 应用的绝佳方法

    摘要:截至年月日,将网站标记为不安全。管理密码使用密码哈希以纯文本格式存储密码是最糟糕的事情之一。是中密码哈希的主要接口,如下所示提供了几种实现,最受欢迎的是和。 Spring Boot大大简化了Spring应用程序的开发。它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量XML配置,Spring Boot无疑是一股清新的空气。 Spring ...

    Jeffrrey 评论0 收藏0
  • vault-图形界面

    摘要:官方没有提供图形界面功能,比较了几个开源的图形界面之后,觉得的功能相对完善。 vault官方没有提供图形界面功能,比较了几个开源的图形界面之后,觉得goldfish的功能相对完善。 goldfish部署 sudo mkdir /opt/goldfish && sudo chown `whoami:whoami` git clone https://github.com/Caiyeon...

    kuangcaibao 评论0 收藏0
  • 『学了就忘』Linux软件包管理 — 45、yum源文件详细说明

    摘要:也就是说,源配置文件只要扩展名是就会生效。查看目录内容如下中默认情况下文件生效,需要使用网络,但官方源在国外,连接速度令人心痛。数字证书的公钥文件保存位置。前两个是协议的,最后一个表示根目录,三个一个都不能少。目录1、yum源文件解析2、查看yum源文件3、搭建本地光盘yum源第一步:第二步:第三步:提示:RPM包的在线安装就是yum安装,yum安装需要依据yum源文件内容配置来寻找软件。本...

    yiliang 评论0 收藏0
  • vault-使用kubernetes作为认证后端

    摘要:使用认证配置可以使用的进行认证在为创建账号,用于调用找到的以及把图中的以及用解码得到证书使用配置认证是上图中用解码的值是的地址是上图中用解码的值存储的文件路径,允许调用的使用的认证创建认证对应里面创建的,对应里面的 vault使用kubernetes认证 配置 vault可以使用kubernetes的serviceaccount进行认证 #在kubernetes为vault创建serv...

    chuyao 评论0 收藏0
  • 数人云|20种终极工具,为你的Docker搭建安全防火墙

    摘要:为容器设计的商业安全套件,功能包括安全审计容器镜像验证运行时保护自动策略学习或入侵预防。基于一种称为的新内核技术,允许根据容器身份定义并执行网络层和层安全策略。自动发现应用程序容器和服务的行为,以及与其他类似方式检测安全升级和其他威胁。 数人云:随着越来越多的企业将生产工作负载迁移到容器当中,关于Docker的安全性,成了普遍关注的问题。 这是一个简单却又没有答案的问题,不要试图用二进...

    jlanglang 评论0 收藏0

发表评论

0条评论

zhaofeihao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<