默认客户端
用 TypeScript 写的 Hashicorp Vault 的客户端 .
安装
$ npm install --save @creditkarma/vault-client
使用量
这个图书馆揭露了两个与Vault,VaultClient和VaultService合作的班级. VaultClient提供了略高的抽象度和比较有限的API.
断层连接
VaultClient提供了两种方法:获取和设定. 两种方法都返回承诺.
选项
VaultClient 期望 Vault 的访问符可以在本地文件中提供. 此文件的路径作为选项传递 .
可用的选项 :
- apiVersion - 要使用的API版本. 目前这只能是"v1".
- 协议 - 使用“ http” 或“ https” 的协议。 默认为"http".
- 目的地 - Vault 实例的位置 。 默认为“ localhost: 8200 ” .
- 挂载 - 找到秘密的山顶 默认为“ 机密 ” .
- namespace - 秘密的命名空间。 此路径将为所有获取/ 设置请求做准备 。 默认为".
- 符号Path - 本地文件路径 。 默认为"/tmp/token" .
- 选项 - 转到下面的选项 请求库。通过向任何服务或客户端方法传递一个可选的最后参数,可按请求对选项进行覆盖。 这将用于设置 TLS .
挂载对命名空间
挂载是隐藏秘密的地道 默认这是 secret所以,你的所有秘密 将被存储在一个地址,如: http://localhost:8200/secret/<key>。此选项可以按“默认”实例进行不同的配置.
命名空间是此路径上为组织您的秘密而添加的. 您的服务可与其他服务共享一个 Vault 实例 。 命名空间可以成为您的服务名称 。 你的所有秘密都将保存在: http://localhost:8200/secret/<namespace>/<key>。 。 。 .
数据格式
当一个秘密被写到 Vault 时, 您所设置的值将会被这个格式的对象所包裹 :
{
"value": value
}
当读取带有此表单的 VaultClient 对象的值时, 假设 。 如果没有价值财产,将提出例外。 当执行只获取值键的值时,将返回 。 这允许获取和设定方法在原始值上运行.
示例
import { IHVConfig, VaultClient } from '@creditkarma/vault-client'
const options: IHVConfig = {
apiVersion: 'v1',
protocol: 'http',
destination: 'localhost:8200',
mount: 'secret',
namespace: '',
tokenPath: '/tmp/token',
requestOptions: {
headers: {
host: 'localhost'
}
}
}
const client: VaultClient = new VaultClient(options)
// Because we set a namespace this is actually written to 'secret/key'
client.set('key', 'value').then(() => {
// value successfully written
client.get<string>('key').then((val: string) => {
// val = 'value'
})
})
故障服务
VaultService为原始的Vault HTTP API提供了更直接的访问. 方法参数和方法返回类型符合 HTTP 断层 API。 。 。 .
选项
VaultService 接受 VaultClient 接受的选项的子集:
- 图像
- 协议
- 目标
- 选项
示例
就像VaultClient所有的方法 返回承诺.
import { IServiceConfig, VaultService } from '@creditkarma/vault-client'
const options: IServiceConfig = {
apiVersion: 'v1',
protocol: 'http',
destination: 'localhost:8200',
requestOptions: {
headers: {
host: 'localhost'
}
}
}
const service: VaultService = new VaultService(options)
service.status()
service.init({ secret_shares: 1, secret_threshold: 1 })
service.unseal({ key: 'key', reset: true })
service.read(path, token)
service.write(path, value, token)
运行测试
好东西 npm test 将工作。 然而,运行测试需要运行的Vault服务器. 这是用 插头。如果你没有 docker-compose 在您的系统中, 您将无法运行测试 。 确定你还有插头.
$ npm test
您可以在不进行测试的情况下旋转 Vault 服务器 :
$ npm run docker
这个嵌入物图像在基座Vault图像上方有一点糖. 它暴露了取回信物的终点.
$ curl localhost:8201/client-token
捐款
欲了解更多关于贡献新功能和错误修正的信息,请参见我们 贡献准则。 。 。 . 外部捐助者必须签署捐助者许可证协定
许可证
这个项目的许可证根据 Apache 许可证版本 2.0