SHUHARI 的博客

流光飞舞

私密信息管理利器 HashiCorp Vault——REST API

本博客文章除特殊说明外,均系原创,允许转载,但请注明来源。

在前面的文章中,我们一直在使用 Vault 命令行客户端。不过,部分输出内容也透露了这样的信息,那就是客户端和服务器的通信实质上是通过 HTTP 协议进行的。本文就显示如何使用 REST API 和服务器通信。Vault 有许多针对特定语言的客户端库,它们基本上就是这些接口的简单封装。只要明白了基本原理,其实你自己写一个也非常简单。

我们已经知道,Vault 有许多用户认证方法,对于程序客户端,Token 是最简单也是最常用的方法。为了避免在后续操作中反复输入 Token,我先把它保存到环境变量中:

export VAULT_TOKEN=444b8cb7-e58d-9e57-076a-fe0763f06248

为简单起见,我在测试环境中直接使用 Root Token。生产环境下应该分配并使用权限受限的 Token。

$ curl \
> --header "X-Vault-Token: $VAULT_TOKEN" \
> --request POST \
> --data '{"bar": "baz", "name": "world"}' \
> http://127.0.0.1:8200/v1/secret/foo

写入成功并不会返回任何信息,但是你可以验证数据确实写入了:

$ curl \
> --header "X-Vault-Token: $VAULT_TOKEN" \
> http://127.0.0.1:8200/v1/secret/foo
{"request_id":"50ccf7ef-8153-ec3d-cfc6-ce52dc60483c","lease_id":"","renewable":false,"lease_duration":2764800,"data":{"bar":"baz","name":"world"},"wrap_info":null,"warnings":null,"auth":null}

如果调用失败,将会返回错误信息:

curl \
> --header "X-Vault-Token: $VAULT_TOKEN" \
> --request POST \
> --data '{"bar": "baz", "name": "world"}' \
> http://127.0.0.1:8200/v1/mydata/foo
{"errors":["no handler for route 'mydata/foo'"]}

这篇文章很短,因为接口确实没有太多内容可说的。虽然可以使用的接口很丰富,但我们日常会用到的基本上也就是读写数据了。除非你需要做一个功能完善的工具,那么你可以参考完整的 接口文档

我们的系列文章到此全部结束。本系列文章很大程度上参考了官方的 Introduction 内容,但也有不少我自己补充的东西,希望能够给入门 Vault 的同学一点帮助。Vault 还有其他更丰富的内容,包括众多插件的使用和配置,甚至有特殊需求的用户可以编写自己的插件,更详细的内容请参考 官方文档

今年的春节也很近了,我应该会休息一段时间,博客在节假期间暂时不会更新了。祝大家休整身心,编程愉快!

系列文章

评论
评论须知:
  1. 本博客只接受纯文本形式的评论;
  2. 评论须经管理员审核通过后才会显示;
  3. 若评论内容涉及灌水、广告、不文明用语及违反法律规定的内容,管理员有权直接删除,而无需通知您;
  4. 如果您对评论处理有异议,请联系站长。
shuhari (shuhari.dev@outlook.com) 2019-12-26 23:25 None
@福临, 不太一样。Vault 并不负责登录验证,而是管理一些不适合以明文存储的数据,比如各种密码、加密密钥、第三方服务的 Key 等等,让这些数据有统一的服务来管理,同时提供授权和审计的手段。
zj8487@gmail.com 福临 (zj8487@gmail.com) 2019-12-26 19:26
非常好的文章,看了后深受启发。但自己也产生了一些新的疑惑。 Vault的应用场景。是把我们的系统的用户密码部分存放到Vault,进行登录认证吗?
abcd@test.com abcd (abcd@test.com) 2019-06-25 17:23
非常用心的文章,感谢。
HshiCorpChina@gmail.com HashiCorpChina (HshiCorpChina@gmail.com) 2018-08-22 20:01
您好,HashiCorp公司想要在中国想成自己的开源社区,我们才是刚刚起步阶段,看到您之前有对HashiCorp的产品有过关注,想邀请您参与进来,您有兴趣的话,可以随时邮箱联系我,也可以加WeChat:HashiCorpChina
shuhari (shuhari.dev@outlook.com) 2018-03-06 17:24 None
@王瀚, 我的联系方式页面下面就有。
leo.wanghan@huawei.com 王瀚 (leo.wanghan@huawei.com) 2018-03-06 14:37
你好,看了您的博客很受启发,能否跟您交换一下联系方式,后续在智能代码编辑方向上希望跟您有一个交流的机会。