4

我有一个 Django 应用程序。我希望它从 Vault 中获取所有需要的秘密。
据我了解,我需要为此使用AppRole

我创建了一个角色。但后来我需要使用hvac进行身份验证:

# App Role
client.auth_approle('MY_ROLE_ID', 'MY_SECRET_ID')

所以我手动获取role-idand secret-id,没关系。问题是我在哪里存储它们?

  1. 我可以role-id简单地存储在我的 git reposettings.py文件中吗?
  2. 我应该在哪里存放secret-id

升级版:

实际上secret-id有它自己的TTL。那么当我重新启动我的应用程序时如何获取新的秘密 ID?

4

2 回答 2

2

您可以生成无限期的秘密 ID。但是这样做与将您的秘密保存在配置文件中一样好。

如果您使用的是 AWS ec2 实例,那么您可以考虑使用 AWS approles。

看看这个https://github.com/tmobile/t-vault

于 2018-01-23T03:44:08.247 回答
0

就我而言,由于我将这些应用程序部署在 Kubernetes pod 上,因此我将访问密钥存储为环境变量,并将密钥存储为 Kubernetes 密钥。

您可以使用相同的约定,否则如果它部署在 VM 上,您可以将这些信息放在 yaml/json 文件中(如果可行,加密)并在启动时或每次 Vault 调用调用时读取它们。

service_access_key: MY_COOL_VAULT_APPROLE_ACCESS_KEY
service_secret_key: MY_SUPER_DUPER_VAULT_APPROLE_SECRET

额外的巧克力蛋糕信息:理想情况下,最好将 TTL 保持在较低水平,最多 30 分钟 - 如果您的应用程序是有状态的,或者如果它是无状态应用程序,则可能更少。Vault approle 的密钥也应该每 90 天轮换一次。请注意,Vault approle 后端默认有 31 天的 TTL,所以如果您想将其设置为 90 天,您还需要增加 approle 后端的 TTL。

于 2019-01-23T11:15:03.510 回答