2

对于我们的产品,我们决定实施一个秘密管理工具(AWS 秘密管理器),它将安全地存储和管理我们所有的秘密,例如数据库凭证、密码和 API 密钥等。

通过这种方式,秘密不会存储在代码、数据库或应用程序的任何地方。我们必须提供 AWS 凭证 - 访问密钥 ID 和秘密访问密钥,以便以编程方式访问 Secrets manager 的 API。

现在出现的最大问题是,该初始信任(用于验证 AWS 机密管理器的凭证)保存在哪里。这是一个引导问题。同样,我们必须在秘密存储之外、配置文件或其他地方维护一些东西。我觉得如果这受到损害,那么将所有内容存储在秘密管理工具中就没有真正的意义。

我阅读了 AWS SDK 开发人员指南,并了解有一些标准方法可以存储 AWS 凭证,例如 - 将它们存储在环境变量中、具有不同配置文件的凭证文件中以及通过对 Amazon EC2 实例使用 IAM 角色。

我们不在亚马逊云中运行/托管我们的应用程序,我们只想使用来自 AWS 云的 AWS 机密管理器服务。因此,配置 IAM 角色可能不是我们的解决方案。

是否有任何最佳实践(或)保存初始信任凭证的最佳位置?

4

2 回答 2

3

如果您要从 EC2 实例、ECS docker 容器、Lambda 函数访问密钥,则可以将角色与允许访问 Secrets Manager 的策略一起使用。

如果 IAM 角色不是一个选项,您可以使用联合登录来获取临时凭证(IAM 角色)以及允许访问 Secrets Manager 的策略。

于 2019-09-05T11:22:13.627 回答
1

正如@Tomasz Breś 所说,如果您已经在使用Active Directory 或 Kerberos等本地身份验证系统,则可以使用联合。

如果盒子上没有任何类型的凭据,则有两种选择:将凭据存储在文件中并使用文件系统权限来保护它们,或者使用 HSM 或 TPM 等硬件来加密或存储凭据.

在任何情况下,当您在盒子上存储凭据(甚至是 AD/Kerberos)时,您应该确保只有应用程序所有者才能访问该盒子(在独立应用程序而不是共享 CLI 的情况下)。您还应该通过关闭所有不必要的软件和访问方法来强化盒子。

于 2019-09-06T18:01:10.643 回答