首页 > 解决方案 > 应用程序与 HashiCorp Vault 的集成

问题描述

一周以来,我一直在探索 HashiCorp 保险库以实现 PoC 目的。我正在尝试设计一个非常简单的系统,其中应用程序使用具有终身有效性的role_idsecret_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 进行硬编码。

标签: hashicorp-vault

解决方案


推荐阅读