Vault
HashiCorp
Segredos
Criptografia
IAM
DevOps
Infraestrutura como Código
Políticas de Acesso
Auditing
Kubernetes
Cloud

HashiCorp Vault:应用程序中的安全秘密管理

HashiCorp Vault 是用于存储、访问控制和审核机密、密码、令牌、SSH 密钥、证书的标准解决方案。

HashiCorp Vault:应用程序中的安全秘密管理

HashiCorp Vault 是用于存储、访问控制和审核机密、密码、令牌、SSH 密钥、证书的标准解决方案。 2025 年,Vault 与 CI/CD 管道、Kubernetes 集群和[无服务器0]平台集成,提供以策略为中心的安全模型。对于那些领导基础设施的人来说,采用它的决定本质上是决定从分散的配置文件和环境变量中获取凭证,并将它们置于单一的控制和审计制度之下。

为什么使用Vault?

有五个属性支持采用案例。 集中化为所有秘密建立单一事实点,消除分散的副本。 **[静态和传输中的加密1],密钥由 Vault 本身管理,可确保数据在授权上下文之外无法使用。 精细的访问策略控制谁访问什么、通过哪个路径以及访问时长。 自动旋转 为银行、云和服务生成临时凭证,缩短任何凭证的暴露窗口。 完整的审计记录每次阅读和写作的日期、时间和身份,这是调查事件和证明合规性的基本条件。

典型架构

典型的实施分为四个要素。 Vault 服务器 以高可用性模式运行,由集成存储或 Consul 支持,因此机密管理器的不可用永远不会导致依赖它的应用程序崩溃。 [身份验证2方法定义每个客户端如何证明自己的身份、应用程序的 AppRole、集群负载的本机 Kubernetes 身份验证以及 GitHub 和 TLS 等选项。 秘密引擎决定如何存储或生成秘密:静态秘密的键值引擎,以及数据库、AWS、SSH 和 PKI 的动态引擎。用 HCL 编写的策略适用于代币或实体,将最小特权原则转化为具体规则。

一般流程如下:应用程序向 Vault 进行身份验证(例如,通过 AppRole)并接收短期令牌;使用此令牌,您可以始终在策略的限制范围内读取您有权获得的秘密、银行凭证、云密钥。 [Kubernetes3] 上运行的负载使用集群的本机方法进行身份验证。每次交互都会生成一个审核记录,可以将其转发到 SIEM 进行关联。应用程序现在不再采用硬编码的凭证,而是按需获取凭证,并具有过期日期和可追溯性。

配置保管库

在测试环境中,Vault 可以在开发模式下运行,该模式在具有可用根令牌和即用型键值引擎的临时服务器上运行,可用于快速实验,但不适用于生产。在生产中,初始化是故意完成的,操作员 init 进程生成解封密钥和初始根令牌,并将存储配置为高可用性模式。两种模式的区别本质上就是便捷性和真正安全性的区别。

通过 AppRole 进行身份验证

AppRole 是推荐的应用程序身份验证方法。这个想法是创建一个与策略和有效性限制、令牌生命周期、最大时间、秘密标识符有效性相关的角色。应用程序接收两个因素:用于标识角色的 RoleID 和动态生成的 SecretID,用作使用凭证。通过这对,应用程序获得一个短期令牌来运行。两个因素之间的分离允许它们通过不同的渠道进行分发,从而降低了同时受到损害的风险。

阅读秘诀

经过身份验证后,应用程序会指向 Vault 服务器地址并读取其有权访问的路径中的机密,例如接收为该服务存储的配置密钥集。阅读的简单性是有目的的:复杂性集中在政治和[认证4],而不是秘密的消耗。

与 Kubernetes 集成

在 [Kubernetes5] 中,最常用的模式是 Vault Agent Injector,它将秘密作为 sidecar 容器注入。配置是通过 Pod 清单中的注释完成的,指定启用注入、使用哪个角色以及要挂载哪些机密。注入器在 Pod 内创建包含所请求机密的临时文件,应用程序将其读取为本地文件。开发人员无需在应用程序代码中嵌入身份验证逻辑,平台会透明地处理此问题。

访问策略

策略是 Vault 安全模型的核心。它们以 HCL 编写,为特定路径授予特定能力。例如,精心设计的应用程序策略仅授予对该应用程序机密的只读访问权限以及查询令牌本身的能力,仅此而已。这种严格性是最小特权的实际翻译:每个身份只能看到其功能严格必需的内容,并且任何在此范围之外的访问尝试都将被拒绝并记录。

数据库凭证的自动轮换

Vault 最有价值的功能之一是生成按需、短期有效期的银行凭证。配置与银行的连接并定义角色,描述如何创建具有标准和最长生命周期的临时用户。当应用程序请求访问时,Vault 会在银行中创建一个在该期限内有效的用户,并在到期时将其丢弃。结果是不再有静态的银行凭证流通,每次访问都使用临时凭证,这大大减少了可能泄漏的影响。

审计和日志记录

审计是通过审计设备启用的,该设备可以记录到文件或发送到系统日志。每条记录包含请求标识符、身份验证数据、访问的路径和任何错误。这些日志是调查事件和证明合规性的基础,如果没有可靠的审核,访问控制将成为无法验证的承诺。

良好的安全实践

五种做法支持安全的 Vault 操作。第一个是要求客户端和服务器之间进行双向 TLS,保证两端的真实性。第二个是按环境隔离命名空间,将开发与生产隔离。第三是对所有策略应用最小特权,没有方便的例外。第四是定期轮换根令牌,将其视为风险极高的凭证。第五是保持存储的一致备份,以便秘密管理器的丢失不会成为灾难性事件。

部署清单

良好的部署通常遵循以下顺序:以高可用性模式安装 Vault;配置 TLS 和证书;启用必要的身份验证方法(AppRole、Kubernetes);创建秘密引擎(键值、[数据库7、AWS);定义细粒度的访问策略;启动审计装置;测试自动凭证轮换;记录token获取流程;并将 Vault 集成到 CI/CD 管道中。

结论

HashiCorp Vault 提供了一个强大的框架来管理机密、减少攻击面并促进合规性。通过采用强身份验证、最小权限策略和全面审核,组织可以保护关键凭据并在现代环境中自动执行秘密轮换,将秘密管理从盲点转变为可审计控制。


您已经在堆栈中使用 Vault 了吗?在评论中分享您的技巧和挑战!

另请阅读

  • [应用程序架构:可扩展系统完整指南9
  • [GitOps 与 ArgoCD:声明式部署自动化10
  • [生产中的 Kubernetes:迁移之前没有人告诉你的事情11
  • [边缘计算架构:分布式处理策略12
  • [分布式系统中的可观察性:日志、指标和跟踪13
  • 【数据加密:如何在日常开发中应用14