在前面的文章中, 我们一直在使用 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 还有其他更丰富的内容, 包括众多插件的使用和配置, 甚至有特殊需求的用户可以编写自己的插件, 更详细的内容请参考 官方文档
今年的春节也很近了, 我应该会休息一段时间, 博客在节假期间暂时不会更新了祝大家休整身心, 编程愉快!
来源: https://juejin.im/entry/5a95fe87f265da4e777fd878