202510
security

使用 Infisical 实现自动化 PKI 证书轮换与审计 SSH 访问控制

在自托管的 Infisical secrets vault 中,通过端到端加密实现 PKI 证书的自动化轮换和 SSH 访问的审计控制,提供工程化参数和最佳实践。

在现代基础设施中,秘密管理平台的自托管部署已成为提升安全性和合规性的关键选择。Infisical 作为开源的端到端加密 secrets vault,不仅支持核心的秘密存储和同步,还集成了 PKI(公钥基础设施)和 SSH 访问控制模块。这些功能允许团队实现自动化证书轮换和审计化的 SSH 访问,从而减少密钥泄露风险并满足严格的审计要求。本文将聚焦于如何在 Infisical 中工程化这些特性,提供观点、证据支持以及可落地的参数配置和操作清单。

首先,理解 PKI 证书轮换在自托管环境中的必要性。传统的手动证书管理容易导致过期证书被利用,造成安全漏洞。Infisical 的内部 PKI 模块通过私有证书颁发机构(CA)提供了一个集中化的解决方案,支持证书的生命周期管理,包括颁发、续期和吊销。证据显示,Infisical PKI 支持证书模板来强制策略,例如将最大 TTL(生存时间)限制为 1 年,这有助于自动化轮换流程的标准化。

要实现自动化 PKI 证书轮换,首先需要设置私有 CA 层次结构。步骤包括:在 Infisical 项目中创建根 CA 和中间 CA,确保中间 CA 用于实际颁发。接着,定义证书模板:指定常见名称(CN)的正则表达式如 .*\.example\.com,SAN(主体备用名称)验证规则,以及 TTL 上限为 31536000 秒(1 年)。这些模板绑定到特定 CA,并可选关联证书集合以启用过期警报。

对于自动化部分,Infisical 虽无内置的定时轮换任务,但可以通过 API 和外部调度工具如 Kubernetes CronJob 或 AWS Lambda 实现。观点是,这种解耦设计允许灵活集成现有 CI/CD 管道。证据来自 Infisical 的 API 文档,支持 POST /certificates/issue 端点,用于基于模板颁发新证书。轮换流程可设计为:监控证书过期(使用警报阈值 30 天),然后脚本化重新颁发相同 CN 的新证书,同时吊销旧证书并更新 CRL(证书吊销列表)。

可落地参数包括:

  • TTL 配置:生产环境证书 TTL 设置为 2592000 秒(30 天),开发环境 86400 秒(1 天),平衡安全与便利。
  • 警报阈值:CA 和端实体证书过期前 7 天发送 Slack 通知,结合 webhook 集成。
  • 密钥用法:对于服务器证书,启用 serverAuth 扩展密钥用法;客户端证书使用 clientAuth。
  • 吊销原因:轮换时使用 “superseded” 原因代码 2,确保 CRL 更新频率为每日。

操作清单:

  1. 部署 Infisical 自托管实例,使用 Docker Compose,确保 PostgreSQL 和 Redis 持久化。
  2. 在 UI 中导航至项目 > 内部 PKI > 证书颁发机构,创建 CA 层次。
  3. 配置模板:CN 正则 ^server-[a-z]+,TTL 最大 1 年,绑定集合以监控。
  4. 编写 Python 脚本使用 Infisical SDK:查询证书列表,过滤即将过期(<30 天),调用 issue API 颁发新证书,revoke 旧证书。
  5. 调度脚本:Kubernetes 中创建 CronJob,每日运行,设置资源限制 CPU 100m、内存 128Mi。
  6. 测试:颁发测试证书,模拟过期,验证新证书部署到服务如 Nginx(更新 ssl_certificate)。

潜在风险包括脚本失败导致服务中断,因此建议实现回滚:保留旧证书 TTL 至少 7 天重叠期,并监控 API 调用日志。

转向 SSH 访问控制,Infisical 的 SSH 模块使用签名证书取代长寿命密钥,提供短寿命、身份绑定的访问。这解决了密钥扩散问题,并通过审计日志提升可追溯性。观点是,在自托管 vault 中集成 SSH 审计,能将基础设施访问视为秘密操作的一部分,确保零信任原则。

Infisical SSH 核心是托管 CA 用于颁发短寿命 SSH 证书,支持主机组注册和集中权限管理。证据表明,它记录证书颁发和 SSH 活动的所有细节,包括演员类型(用户/服务)、IP 和时间戳,支持 40+ 事件过滤。

实现 audited SSH 访问,首先注册主机:使用 CLI 或 API 添加主机组,指定主机 IP/域名和公钥。接着,定义访问策略:通过 RBAC 分配角色,如 “dev-access” 仅限读/执行特定命令。证书 TTL 设置为 3600 秒(1 小时),强制短寿命。

自动化方面,结合 PKI,SSH 证书可从同一 CA 颁发,确保一致性。审计通过平台日志实现:过滤 “issue-ssh-certificate” 事件,检查元数据如 secretPath 和 numberOfSecrets(虽为 SSH,但日志结构通用)。

可落地参数:

  • 证书 TTL:生产 SSH 访问 1800 秒(30 分钟),紧急访问 300 秒(5 分钟)。
  • 主机组策略:限制命令如 ls, cat /etc/passwd 通过 principal 绑定。
  • 审计保留:日志保留 90 天,集成 ELK Stack 导出用于 SIEM。
  • 访问请求:启用审批工作流,超时 24 小时自动拒绝。

操作清单:

  1. 在 Infisical UI 项目 > SSH > 主机组,添加组 “prod-servers”,注册主机如 192.168.1.100。
  2. 配置 RBAC:创建角色 “ssh-auditor”,权限包括 view-audit-logs 和 issue-ssh-cert。
  3. 使用 CLI:infisical ssh-issue --host-group prod-servers --ttl 3600,生成证书。
  4. 在客户端:ssh -i private_key -o CertificateFile=cert.pub user@host,验证连接。
  5. 审计查看:导航至审计日志,过滤 actor.type=user 和 event.type=ssh-connection,导出 CSV。
  6. 集成监控:设置警报于异常 IP 访问,阈值 >5 次/分钟。

风险限制:主机公钥妥善管理,避免泄露;定期轮换 CA 根密钥,每 2 年。

将 PKI 和 SSH 集成到自托管 Infisical 中,进一步提升端到端加密的安全性。Infisical 的 E2EE 确保秘密和证书在传输/存储中加密,使用 AES-256-GCM 等算法。部署时,推荐 Kubernetes Operator 自动注入证书到 Pod,结合 Agent 无代码注入 SSH 凭证。

总体观点:这种集成不仅自动化了轮换,还通过审计确保合规,如 GDPR 或 SOC 2。证据支持 Infisical 的自托管选项保持数据主权,无需云依赖。

最终监控要点:

  • 仪表盘:跟踪证书数量、过期率 <1%、SSH 连接成功率 >99%。
  • 回滚策略:证书轮换失败时,手动续期并通知管理员。
  • 参数优化:根据负载调整 API 速率限制为 100 req/min。

通过这些工程化实践,团队可在 Infisical 中构建 robust 的 PKI 和 SSH 安全层,显著降低攻击面。(字数约 1250)