#vault #secret #tls #hashi-corp #client #pki #server

vault_client

HashiCorp Vault的客户端库

3 个版本

使用旧Rust 2015

0.3.2 2018年8月28日
0.3.1 2018年6月18日
0.3.0 2018年5月9日

#634 in 身份验证

Apache-2.0/MIT

53KB
967

vault-client

Build Status crates.io License: MIT License: Apache-2.0

vault-client 是用 Rust 编写的 HashiCorp Vault 的本地客户端库。它是 hashicorp_vault 的替代品,后者是一个功能较少但覆盖更广 Vault API 的客户端。

它使用自动生成的客户端库来与 Vault API 通信。然后 vault-client 与 Vault 服务器通信,以保持其自己的身份验证最新,并保持之前发出的任何密钥的最新状态。所有发出的密钥都被缓存,这样当 Vault 服务器宕机时,vault-client 可以继续提供有限的服务。

目前,支持的唯一后端是 令牌身份验证后端PKI 密钥后端。然而,vault-client 被设计成易于扩展 - 非常欢迎对其他后端的贡献。

开发

vault-api

此 Crate 依赖 vault-api,它为 Vault API 提供了一个薄的自动生成客户端。

要支持 Vault API 的新部分,更新 swagger 规范 以包含新端点。然后,运行 make,检查结果。

文档

https://docs.rs/vault_client/

Rustfmt

此 Crate 的 CI 管道将尝试执行 rustfmt,并在发现任何差异时失败。为了避免这种情况,请确保在提交前运行 ./run-in-docker.sh make rustfmt。 (在 docker 中运行的原因是确保您使用与 CI 管道相同的 rustfmt 版本。)

运行本地 Vault 服务器。

要运行本地 Vault 服务器,请按照以下说明操作

  1. 安装 Vault

  2. 生成必要的 SSL 证书

    • 您可以使用预先生成的文件,位于 test/certificates。使用方法:运行 echo 000a > certificates/serialfile,然后运行 touch certificates/certindex。接着运行 sudo update-ca-trust enable,将 certificates/root.cer 复制到 /etc/pki/ca-trust/source/anchors/ca.crt,然后运行 sudo update-ca-trust extract
  3. 运行 vault: vault server -config=vault.config,查看本目录下的 vault.config 文件以获取示例配置。

  4. 现在我们将进一步配置 Vault。设置一些环境变量,允许您将 Vault CLI 作为 Vault 服务器的客户端使用。这可以是在 Vault 服务器 VM 上运行,也可以在其他地方运行。

    export VAULT_ADDR="https://127.0.0.1:8200"
    export VAULT_CACERT="certificates/root.cer"
    

    请注意,使用的地址必须与 Vault 证书的通用名称(CN)相匹配。这可能意味着您不能根据证书与 Vault 服务器通过 127.0.0.1 进行通信。

  5. 运行 vault init

    export VAULT_TOKEN="<initial root token, or a new one that you created from that>"
    
  6. 然后:运行 vault unseal 三次(每个密钥一次)

  7. 安装 PKI 后端。请参阅文档或遵循以下说明。

    vault mount pki
    vault mount-tune -max-lease-ttl=87600h pki
    vault write pki/root/generate/internal common_name=<this server's hostname/IP> ttl=87600h
    vault write pki/config/urls issuing_certificates="https://<this server's IP>:8200/v1/pki/ca" crl_distribution_points="https://<this server's IP>:8200/v1/pki/crl"
    vault write pki/roles/metaswitch allow_any_name="true" max_ttl="720h"
    
    • 现在,您可以使用以下命令手动写入证书:
      • vault write pki/issue/metaswitch common_name=blah.example.com

依赖项

~20MB
~403K SLoC