📜  保险柜介绍

📅  最后修改于: 2021-10-19 06:28:06             🧑  作者: Mango

HashiCorp 的 Vault 是一种非常流行的工具,用于安全地管理机密。在了解Vault之前,我们首先需要了解什么是秘密以及为什么需要安全地存储它们。秘密是用于授权或身份验证的任何内容。例如,用户名、密码、数据库凭证、API 密钥等。秘密的问题是安全地管理它们。

让我们更深入地了解这个问题。

考虑一个需要与数据库交互的电子商务应用程序。它显然需要相同的数据库凭据。为了向应用程序提供这些凭据,最简单的方法是将它们存储在配置文件中并在启动时加载它们。但问题是,这些敏感信息作为我们代码的一部分以纯文本形式存储,任何有权访问我们代码的人都可以看到和使用它们。在更好的方法中,我们可以以加密形式存储此信息。但是我们仍然需要一个解密密钥来解密和使用它。现在,问题还是一样,我们应该在哪里存储这个解密密钥?

此外,始终存在“秘密蔓延问题” 。这意味着这些秘密实际上存在并存储在多个位置,例如在我们的源代码、属性文件、版本控制系统中。如果它们是硬编码的,也很难轮换秘密。如果这些秘密存在于 VCS 中,那么任何具有访问权限的人都可以看到它,而我们无法知道谁使用过它,或者是否使用过它。这就是 Vault 救援和处理所有这些问题的地方,因此,可以高效、安全地管理机密。

保险柜的主要特点:

  1. 集权:
    Vault 通过集中秘密来解决秘密蔓延问题,即所有秘密现在都存储在 Vault 中,而不是源代码、属性文件、版本控制系统。它还通过以加密形式存储它们并在 Vault 和应用程序之间的传输中加密它们来为其提供安全性。每当我们在 Vault 中存储任何新机密时,它都会先对其进行加密、存储,然后生成解密密钥的主密钥。此主密钥不会存储在 Vault 中的任何位置,而是分部分返回给用户。您需要将此主密钥的阈值部分提供给 Vault 以解封它,如果您不提供,您的秘密将永远丢失。这样,即使是 Vault 本身也无法访问您的机密。
  2. 审计控制:
    Vault 会保护您的机密安全,但您的应用程序可能不会。每个应用程序都会在日志文件中记录任何发生的所有细节,并且在此过程中,它也可能会记录容易受到威胁的秘密。任何有权访问这些日志文件的人都可能滥用机密。 Vault 为此目的提供审计控制,它审计每个应用程序对机密的每次使用,并唯一标识哪个应用程序在何时使用了哪个机密。因此,如果任何机密发生任何泄露,您无需关闭所有应用程序,而是可以确定泄露点并仅关闭该应用程序。
  3. 动态秘密:
    Vault 提供动态机密。因此,它不是长期存在的秘密,而是为动态创建的应用程序提供短期凭证。在妥协的情况下,我们可以减少漏洞的持续时间。每个凭据对于服务来说都是独一无二的,因此,我们可以知道哪个服务泄露了凭据。
  4. 加密即服务:
    应用程序很难正确实现密码算法。因此,Vault 为应用程序的正常数据提供加密,应用程序可以专注于服务的业务逻辑。