hashicorp-vault - 应用程序与 HashiCorp Vault 的集成
问题描述
一周以来,我一直在探索 HashiCorp 保险库以实现 PoC 目的。我正在尝试设计一个非常简单的系统,其中应用程序使用具有终身有效性的role_id和secret_id登录到保管库,并请求唯一的一次性使用数据库凭据。我已成功地将数据库与保管库集成,并在传递策略生成的令牌后,为预期用户创建新凭据(用户名和密码)。
现在,我也成功地为应用程序生成了 role_id 和 secrete_id,当我从 Vault 环境中传递这个命令时,我得到了一个用于生成凭证的令牌。
/ # vault write auth/approle/login role_id="9805c2d7-db84-f17f-843a-440e5a797254" secret_id="1cebcd60-5de5-b0a7-f43c-3df69ae274a4"
Key Value
--- -----
token s.fMjSkiloNdkNcRPGQfjmzjGN
token_accessor orQymBllwi81KEXvpKn6cELq
token_duration 1h
token_renewable true
token_policies ["apps" "default"]
identity_policies []
policies ["apps" "default"]
token_meta_role_name app-login
之后,以下命令生成唯一凭据:
/ # VAULT_TOKEN=s.fMjSkiloNdkNcRPGQfjmzjGN vault read database/creds/readonly
Key Value
--- -----
lease_id database/creds/readonly/FD71umy2l3Vd02iIc6ACtumz
lease_duration 1h
lease_renewable true
password A1a-KFjVbJQ9DsUwYQ6r
username v-approle-readonly-mhQ73CzTWBTgVptBmZbh-1600158851
之后我密封了保险库:
Vault operator seal
但是现在,当我尝试使用前面的命令传递 role_id 和 secret_id 来生成令牌时,它表明保管库已被密封:
/ # vault write auth/approle/login role_id="9805c2d7-db84-f17f-843a-440e5a797254" secret_id="1cebcd60-5de5-b0a7-f43c-3df69ae274a4"
Error writing data to auth/approle/login: Error making API request.
URL: PUT http://127.0.0.1:8200/v1/auth/approle/login
Code: 503. Errors:
* error performing token check: Vault is sealed
那么,应用程序是否必须首先以任何方式打开保险库,然后才能要求提供凭据?而且,如果是这样,那么打开它不会破坏使用保险库的全部目的吗?
欢迎对我的问题提出所有建议。
重要提示:我没有使用任何编排器或配置管理工具。用例相当简单。我想在应用程序代码中对 role_id 和 secret_id 进行硬编码。
解决方案
推荐阅读
- c++ - 如何使用 GetPrivateProfileString() 从当前目录上移目录
- java - 如何在 Linux 中使用 Java 将变量添加到文件路径?
- swift - GetStream EnrichedActivity 类的复制问题
- node.js - 在 Atom 编辑器中安装 Eslint 时收到警告
- python - 要求确认后如何将数据发送到表单中查看?
- reactjs - ReactJs:`npm run build` 失败,退出状态为 1
- python - 如何使 glob.glob() 深度优先?
- php - 如何进行自定义电子邮件验证(Laravel 5.8)?
- sql - 如何从sql数据库中备份一行?
- jpa - persistence.xml 文件和 hibernate.conf.xml 文件有什么不同,在什么场景下我们应该哪个文件