如何在生产中使用Hashicorp Vault的AppRole?

直播

通过将role_id存储在secret_id服务器上的本地文件中,我们已经为一台服务器安装并配置了Hashicorp Vault AppRole身份验证,并且我们能够让服务器上的代码从文件中读取值,向Vault进行身份验证,接收令牌并然后从保险柜中读取所需的机密信息。到现在为止还挺好。但是,secret_id过期将在31天后到期,因此该过程将失败。

我已经阅读了使用AppRoles的概念,它们似乎非常适合我们的用例,但已过期。我们不想secret_id每个月都重新生成

根据我的阅读,如果您在未设置角色的情况下创建角色,则该角色将不会secret_id_ttl过期,但事实并非如此。这可能是由于AppRole auth方法的配置方式引起的,但是我还没有看到任何可靠的方法。

因此,我在Hashicorp网站上找到了一篇文章,其中详细讨论了AppRoles。本文为在CI / CD环境中使secret_id过期提供了很好的论据,甚至通过8个简单步骤说明了它的工作原理。我了解这是如何工作的,但是本文没有提及CI / CDOrchestrator系统本身如何通过Vault进行身份验证?还是我错过了什么?

最后,我要拥有secret_id不过期的权利。曾经

Cpp菜鸟

没有环境的额外支持,您将不得不在安装程序中编写一些逻辑,并需要某种服务管理器来启动服务。在许多云环境中,您可能已经具有等效的实体(Terraform,Cloud Formation等),并且应在需要时利用它们的秘密管理功能。

对于自定义安装,这是我使用的工作流程。

  1. 具有可以调用执行安装/升级的安装管理器过程。确保始终通过此过程安装/升级服务。
  2. 具有服务管理器流程,该流程负责启动单个服务并对其进行监视/重新启动。确保始终通过此服务管理器启动服务。
  3. 在安装过程中,为Vault,Installation Manager和Service Manager生成自签名证书。保管库证书应信任安装管理器和服务管理器的证书。将它们以有限的权限(600)存储在安装用户或服务管理器用户所拥有的目录中(视情况而定)。使用这些证书在保险柜中设置基于证书的身份验证。
  4. 这些凭据应具有与之关联的有限功能。安装管理器应该只能创建新角色,而不能删除任何内容。服务管理器应该只能为安装管理器创建的命名角色创建机密,而不能删除任何内容。
  5. 在安装/升级期间,安装管理器应连接到Vault并创建所有必要的服务特定角色。它还应该能够在每个服务的配置文件中设置各个服务的角色ID,服务在启动时可能会读取这些文件。
  6. 在每个服务启动期间,服务管理器应连接到Vault并创建与每个服务角色相对应的秘密ID。它应该在环境变量中设置秘密ID,然后启动服务。机密ID应该具有时间限制的有效性(通过设置TTL),这样它们就不能用于创建auth令牌以外的其他用途(请参阅#7)。
  7. 每个服务都应从配置文件中读取角色ID,并从环境变量中读取密码。然后,它应该使用这两个令牌生成auth令牌,并在整个生命周期内使用该令牌对Vault进行身份验证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章