应用程序安全的 10 个最佳秘密管理软件

保护您业务的关键资产至关重要。

在容器化、Kubernetes、云计算和处理机密信息时,需要考虑诸多方面。必须采纳并应用身份与访问管理的最佳实践,同时选择和执行合适的工具。

无论您是开发人员还是系统管理员,都需要精心选择合适的工具来保障环境安全。应用程序需要访问正确的配置数据才能正常运行。虽然大部分配置数据不敏感,但有些信息需要严格保密,这些保密信息通常被称为“秘密”。

千万不要将机密信息存储在 GitHub 中。

如果您正在构建一个可靠的应用程序,您的功能很可能需要访问机密信息或其他类型的敏感数据。

这些秘密可能包括:

  • API 密钥
  • 数据库凭据
  • 加密密钥
  • 敏感的配置设置(如电子邮件地址、用户名、调试标志等)
  • 密码

然而,安全地管理这些秘密信息可能是一项复杂挑战。因此,以下是为开发人员和系统管理员提供的一些建议:

修复函数依赖

始终跟踪函数中使用的库,并通过持续监控来识别漏洞。

使用API网关作为安全缓冲

不要直接向用户公开功能。利用云服务商的API网关功能,在您的函数之上增加一层安全防护。

保护并验证传输中的数据

务必使用 HTTPS 进行安全通信,并验证 SSL 证书以保护远程身份。

遵循应用程序代码的安全编码规则

由于没有服务器可以攻破,攻击者会将注意力转向应用层,因此要特别注意保护您的代码。

在安全存储中管理秘密

如果您忽视采用适当的秘密管理方案,敏感信息很容易泄露,过期的凭据也容易遭受彩虹表攻击。切记不要将机密信息存储在应用程序系统、环境变量或源代码管理系统中。

由于知识和资源匮乏等原因,协作中的密钥管理异常困难。相反,一些公司将加密密钥和其他软件机密直接嵌入到使用它们的应用程序的源代码中,这增加了泄露机密的风险。

由于缺少现成的解决方案,许多公司选择构建自己的机密管理工具。以下是一些您可以根据需求使用的工具。

Vault

HashiCorp Vault 是一款用于安全存储和访问机密信息的工具。

它提供了一个统一的机密接口,同时保持严格的访问控制并记录全面的审计日志。它是一款保护用户应用程序和基础架构的工具,可以减少暴露面和攻击时间。

它提供一个API,允许根据策略访问机密。任何API用户都需要验证身份,并且只能看到他们有权查看的机密。

Vault使用带有GCM的256位AES加密数据。

它可以在各种后端存储数据,例如Amazon DynamoDB、Consul等。Vault支持将日志记录到审计服务的本地文件、Syslog服务器或直接记录到套接字。Vault记录有关执行操作的客户端、客户端IP地址、操作以及执行时间的信息。

启动/重启始终需要一个或多个操作员来解锁Vault。它主要与令牌一起使用。每个令牌都被赋予一个可以限制动作和路径的策略。Vault的主要特点包括:

  • 它在不存储数据的情况下加密和解密数据。
  • Vault可以为某些操作按需生成机密,例如AWS或SQL数据库。
  • 允许跨多个数据中心进行复制。
  • Vault内置了对机密撤销的保护。
  • 用作具有访问控制详细信息的机密存储库。

AWS Secrets Manager

您肯定期待AWS在此列表中吧?

AWS几乎可以解决所有问题。

AWS Secrets Manager允许您快速轮换、管理和检索数据库凭证、API密钥和其他密码。通过Secrets Manager,您可以在第三方服务和本地保护、分析和管理访问AWS云功能所需的机密。

Secrets Manager使您能够使用细粒度权限管理对机密的访问。AWS Secrets Manager的主要功能包括:

  • 使用加密密钥对静态秘密进行加密。
  • 此外,它还会解密机密,然后通过TLS安全传输。
  • 提供有助于调用Secrets Manager API的代码示例
  • 它具有客户端缓存库,可提高可用性并减少使用机密的延迟。
  • 配置Amazon VPC(虚拟私有云)端点以将流量保持在AWS网络内。

Akeyless Vault

Akeyless Vault是一个基于SaaS的统一端到端机密管理平台,可保护所有类型的静态和动态凭据,包括证书自动化和加密密钥。此外,它还提供独特的解决方案来保护对遗留、多云和混合环境中所有资源的远程访问(零信任)。

Akeyless使用内置的FIPS 140-2认证和专利技术保护秘密和密钥;它对客户的秘密和密钥知之甚少。

主要特点包括:

  • 全球可用的基于SaaS的平台,通过在多区域和多云服务之上利用云原生架构,提供内置的高可用性 (HA) 和灾难恢复 (DR)。
  • 高级机密管理为静态和动态机密(例如密码、凭据、API密钥、令牌等)提供了一个安全的保险库。
  • Akeyless Vault支持为所有服务器、应用程序和工作负载配置和注入所有类型的机密,提供各种插件,允许您连接到所有DevOps和IT平台,例如CI/CD、配置管理和编排Kubernetes和Docker等工具。

最快的生产时间,因为:

  • SaaS——无需部署、安装或维护
  • 通过从已知的现有秘密存储库自动迁移秘密来即时入职

该平台支持另外两个支柱:

  • 零信任应用程序访问(又称远程访问)通过提供统一身份验证和即时访问凭据,使您能够保护无边界应用程序和基础架构。
  • 加密即服务,允许客户通过应用高级FIPS 140-2认证的应用程序级加密来保护敏感的个人和业务数据。

Keywhiz

Square Keywhiz帮助处理基础设施机密、GPG密钥环和数据库凭证,包括TLS证书和密钥、对称密钥、API令牌和用于外部服务的SSH密钥。Keywhiz是一款用于处理和共享机密的工具。

Keywhiz中的自动化使我们能够无缝地分发和设置我们服务的基本机密,这需要一致且安全的环境。Keywhiz的主要特点是:

  • Keywhiz Server提供用于收集和管理机密的JSON API。
  • 它只将所有秘密存储在内存中,从不写入磁盘。
  • UI使用AngularJS制作,因此用户可以验证和使用UI。

Confidant

Confidant是一款开源秘密管理工具,可维护用户友好的存储并安全地访问秘密。Confidant在DynamoDB中以附加方式存储秘密,并为所有秘密的每次修改生成唯一的KMS数据密钥,使用Fernet对称身份验证密码。

它提供了一个AngularJS Web界面,使最终用户可以有效地管理机密、服务机密的形式以及更改记录。一些功能包括:

  • KMS认证
  • 版本化秘密的静态加密
  • 用于管理机密的用户友好Web界面
  • 生成可应用于服务到服务身份验证或在服务之间传递加密消息的令牌。

SOPS

让我向您介绍SOPS,这是我最近发现的一个出色的工具。它是一个加密文件编辑器,支持YAML、JSON、ENV、INI和BINARY等格式。最棒的是,它可以使用AWS KMS、GCP KMS、Azure Key Vault、age和PGP加密您的文件。

现在,精彩之处来了。想象一下,您正在使用一台无法直接访问PGP密钥等加密密钥的机器。不用担心!SOPS已经考虑到了这一点。您可以通过转发套接字授予SOPS访问存储在远程计算机上的加密密钥的权限。这就像拥有您自己的便携式GPG代理!

SOPS在客户端-服务器模型上运行,用于加密和解密数据密钥。默认情况下,它在进程内运行本地密钥服务。客户端使用gRPC和Protocol Buffers向密钥服务发送加密或解密请求。不用担心,这些请求不包含任何加密密钥,无论是公钥还是私钥。

我必须强调,关键服务连接目前缺乏身份验证或加密。强烈建议通过SSH隧道等其他方式对连接进行身份验证和加密,以确保安全。

但是,还有更多!SOPS可以生成审计日志来跟踪受控环境中的文件访问。启用后,它会在PostgreSQL数据库中记录解密活动,包括时间戳、用户名和解密文件。很棒,对吧?

此外,SOPS提供了两个方便的命令,用于将解密的秘密传递给新进程:exec-env和exec-file。前者将输出注入到子进程的环境中,而后者将其存储在临时文件中。

请记住,文件扩展名决定了SOPS使用的加密方法。如果您对特定格式的文件进行加密,请务必保留原始文件扩展名以便解密。这是确保兼容性的最简单方法。

SOPS从hiera-eyaml、credstash、运动鞋和密码存储等工具中汲取灵感。这是一个出色的解决方案,消除了手动管理PGP加密文件的麻烦。

Azure密钥保管库

在Azure上托管您的应用程序?如果是,那么这将是一个不错的选择。

Azure Key Vault使用户能够在特定位置管理其云应用程序的所有机密(密钥、证书、连接字符串、密码等)。它与Azure中的秘密源和目标集成开箱即用。Azure之外的应用程序也可以利用它。

您还可以通过将加密密钥存储在云端而不是本地来减少云应用程序的延迟,从而提高性能。

Azure可以帮助实现数据保护和合规性要求。

Docker机密

Docker机密让您可以轻松地将机密添加到集群中,并且它仅在相互验证的TLS连接上共享。然后,数据到达Docker机密中的管理器节点,它会自动保存到内部Raft存储中,确保数据应该被加密。

Docker机密可以轻松应用于管理数据,从而将其传输到可以访问它的容器。它可以防止机密在应用程序使用时泄露。

Knox

Knox由社交媒体平台Pinterest开发,旨在解决他们手动管理密钥和保持审计跟踪的问题。Knox是用Go编写的,客户端使用REST API与Knox服务器通信。

Knox使用易失性临时数据库来存储密钥。它使用带有主加密密钥的AES-GCM对存储在数据库中的数据进行加密。Knox也可用作Docker镜像。

Doppler

从初创公司到企业,数以千计的组织使用Doppler来保持其机密和应用程序配置在环境、团队成员和设备之间同步。

无需通过电子邮件、zip文件、git和Slack共享机密;允许您的团队协作,以便他们在添加机密后立即拥有它。Doppler通过自动化过程和节省时间给您一种放松的感觉。

您可以创建对常用机密的引用,以便在某个时间间隔内进行一次更新即可完成所有工作。在无服务器、Docker或任何地方使用机密,Doppler都会与您合作。当您的堆栈发展时,它会保持原样,让您在几分钟内上线。

Doppler CLI知道有关根据项目目录获取机密的所有信息。如果有任何更改,请不用担心,您可以通过单击或通过CLI和API轻松回滚损坏的修改。

使用Doppler,可以更智能地工作而不是更努力,并免费获得您的机密管理软件。如果您寻求更多功能和优势,请选择每月6美元/席位的入门套餐。

结论

我希望以上内容能让您了解一些管理应用程序凭据的最佳软件。

接下来,探索数字资产库存和监控解决方案。