工具总结篇——vault

来源:互联网 发布:java 链接生成二维码 编辑:程序博客网 时间:2024/06/02 02:12

Vault是用来安全的获取秘密信息的工具,它可以保存密码、API密钥、证书等信息。Vault提供了一个统一的接口来访问秘密信息,其具有健壮的访问控制机制和丰富的事件日志。

Vault解决多用户不同身份访问关键信息时,授权的复杂问题。Vault为安全的存储、管理审计日志提出一个解决方案

vault提供特性描述

数据加密 :vault 能够在不存储数据的情况下对数据进行加密、解密。开发者便可以存储加密后的数据而无需开发加密技术,Vault允许安全团队自定义安全参数。

安全密码存储: vault在将秘密信息(api密钥,密码,证书)存储到持久化存储之前对数据进行加密。这样即使加密后的信息也是不可读的。

动态密码 :vault可以随时为AWS、SQL资料库等类似的系统产生密码。比如,如果应用需要访问AWS S3 buket,它向vault请求AWS密钥对,vault将给出带有租期的所需秘密信息。一旦租用期过期,这个密码信息就不再存储。

租赁和更新:vault给出的秘密信息带有租赁时间,一旦租用期过期,它便立即回收秘密信息,如果应用仍需要该秘密信息,则可以通过API更新租用期。

撤销 :在租用到期之前,vault可以撤销一个秘密信息或者一个秘密信息树。

vault使用例子

存储用户secret

1.用户通过接口上传自己的secret,vault将用户上传的内容加密后写入MySQL。

➜ vault vault write secret/org-2345 organizationID=org-2345 publickey=test0512Success! Data written to: secret/org-2345

2.用户存储的secret通过以下接口进行展示。

➜  vault vault read -format=json secret/org-2345{    "request_id": "08ef64d6-0b11-4da3-30f0-a0dc7e5e90fd",    "lease_id": "",    "lease_duration": 2764800,    "renewable": false,    "data": {        "organizationID": "org-2345",        "publickey": "test0512"    },    "warnings": null}➜ 

生成用户带有租期的token

➜  vault vault token-create Key             Value---             -----token           54d4106c-f56d-4f26-8a4a-e3f72971803etoken_accessor  7417f4c5-aaf0-2ca9-054b-ac147fb4b9fctoken_duration  0stoken_renewable falsetoken_policies  [root]

vault 需要配置mysql作为backend持久化存储数据

初次配置的过程中会产生如下所示的信息:

Unseal Key 1: QIUHbvNE/LKlbg4zHi/6ykp8Lvmnpjxz7rSUOw1WWy4Unseal Key 2: 1LhCk50IskEkcGDxNmOz3k3au8yKHfkmcApIQ/51GA+Unseal Key 3: al0yAEvRceJUMyE0nYjzKIOq2Hgklf0YIcS/W/HxE1mUnseal Key 4: ce6OGY0qeU1qGC8fpu1McswiMYWiWLSK1mbz2jeHEZIUnseal Key 5: 0jid0L+7hBTu4eanPw9Bjnl9VaBuKyWpl6jBl/WdXjPInitial Root Token: 0636ad41-867a-8b0a-4322-beb1c57b9b9Vault initialized with 5 keys and a key threshold of 3. Pleasesecurely distribute the above keys. When the vault is re-sealed,restarted, or stopped, you must provide at least 3 of these keysto unseal it again.Vault does not store the master key. Without at least 3 keys,your vault will remain permanently sealed.

vault可以配置使用进行seal/unseal的密钥的个数。

vault init -key-shares=1 -key-threshold=1

优点:

vault server启动默认的状态为sealed状态,vault 被配置知道如何访问物理存储,但是不知道如何解密数据。

unseal是程序构造一个主密钥去读取加密后的数据并解密数据,只有在unseal状态,才可以针对vault做操作。

1.vault配置后端mysql的方法:

https://www.vaultproject.io/docs/configuration/storage/mysql.html

2.vault配置mysql secret backend

https://www.vaultproject.io/docs/secrets/mysql/index.html