我们通过将role_id
和secret_id
存储在服务器上的本地文件中,为一台服务器安装并配置了Hashicorp Vault AppRole身份验证,并且能够读取服务器上的代码文件中的值,通过Vault进行身份验证,接收令牌,然后从Vault中读取所需的机密。到目前为止,一切都很好。但是,secret_id
将在31天后过期,因此该过程将失败。
我已经阅读了使用AppRoles的概念,它们似乎非常适合我们的用例,但已过期。我们不需要每个月重新生成secret_id
。
根据我的阅读,如果您在未设置secret_id_ttl
的情况下创建角色,则该角色将不会过期,但是事实并非如此。这可能是由于AppRole身份验证方法的配置方式引起的,但是我对此没有任何了解。
因此,我找到了article on the Hashicorp website,其中详细讨论了AppRoles。本文为在CI / CD环境中使secret_id过期提供了很好的论据,甚至通过8个简单步骤说明了它的工作原理。我了解这是如何工作的,但是本文没有提及 CI / CD 和 Orchestrator 系统本身如何通过保险柜验证?还是我错过了什么?
最后,我希望secret_id
不过期。曾经。
答案 0 :(得分:0)
这可能不是标准答案,但是我发现它是空的,因此决定添加一些指针。
其他布朗尼信息:理想情况下,最好的做法是保留 TTL低,最长30分钟-如果您的应用是有状态的,或者 如果是无状态应用程序,则可能更少。的秘诀 保管箱方法也应每90天轮换一次。请注意 默认情况下,保管箱应用程序后端具有31天的TTL,因此如果您要 将其设置为90天,则需要增加该后端的TTL, 好吧。
但是(在同一问题中):
您可以生成有效期不确定的secret-id。但是这样做会 最好将您的秘密保存在配置文件中。
对于临时实例,您可以使用配置管理通过第三(代理)角色传递秘密。对于无限期存在的服务器,我仍在解决...
想法:
答案 1 :(得分:0)
没有环境的额外支持,您将必须在安装程序中编写一些逻辑,并需要某种服务管理器来启动您的服务。在许多云环境中,您可能已经具有等效的实体(Terraform,Cloud Formation等),并且应在需要时利用它们的秘密管理功能。
对于自定义安装,这是我使用的工作流程。
答案 2 :(得分:0)
可以创建具有基本上永不过期的 secret_id
的保险柜 AppRole。但是,这应该仅限于在 Vault 开发服务器上使用——一个不包含任何生产凭据的服务器——以及在开发环境中使用。
话虽如此,以下是我根据 Vault 文档中的几篇文章使用的程序,但主要是 AppRole Pull Authentication。
这假设 Vault approle
身份验证方法已安装在 approle/
并且您已登录到 Vault,在 Vault 服务器上拥有 root
或 admin
权限并且有一个有效的、未过期的令牌。
注意:对于为以下字段提供的值,vault
似乎接受的最大值是 999,999,999。对于 TTL 字段,这是超过 31 年的秒数。这不是永远,但时间足够长,更新 secret_id
可能是其他人的问题 (SEP)。
# Vault server address to be used by the Vault CLI.
export VAULT_ADDR="https://vault-dev.example.com:8200/"
# Vault namespace to be used by the CLI.
# Required for Cloud and Enterprise editions
# Not applicable for Open Source edition
export VAULT_NAMESPACE="admin"
# The name of the Vault AppRole
export VAULT_ROLE=my-approle
# Override defaults on the approle authentication method
# NOTE: In this command, the field names, default-lease-ttl
# and max-lease-ttl contain dashes ('-'), NOT
# underscores ('_'), and are preceded by a single
# dash ('-').
vault auth tune \
-default-lease-ttl=999999999 \
-max-lease-ttl=999999999 approle/
# Override defaults on the approle
# NOTE: In this command, the field names, secret_id_ttl and
# secret_id_num contain underscores ('_'), NOT
# dashes ('-'), and are NOT preceded by a single
# dash ('-').
vault write auth/approle/role/my-approle \
secret_id_ttl=999999999 \
secret_id_num_uses=999999999
# Create a new secret_id for the approle which uses the new defaults
vault write -f auth/approle/role/my-approle/secret-id
更新服务器配置文件以使用新的 secret_id
,您就可以开始使用了。