使用 Warpgate、SSO 和 IaC 实现集中式 SSH 访问管理
在由共享工程团队管理多个隔离基础设施的环境中,传统使用 Ansible 剧本来分发 SSH 密钥到 100+ 台虚拟机的方式已成为瓶颈。访问权限绑定于密钥持有而非企业角色,导致手动入职流程、权限撤销延迟以及审计难题。新方案利用 Warpgate 作为透明代理,结合 SSO 和 RBAC 实现自动化访问控制——服务器无需安装代理。
传统方案的关键局限
通过 Ansible 手动管理用户带来诸多痛点:
- 无 SSO 集成:企业身份状态不影响访问权限。
- 项目变更需手动运行剧本。
- 权限撤销延迟:离线主机保留旧密钥。
- 审计日志分散在各服务器上。
替代方案需求:企业 SSO 集成、声明式 IaC 管理、Kubernetes 高可用、无代理支持 SSH/HTTPS/DB/K8s。
Warpgate 核心特性
Warpgate 是一款开源堡垒机,在用户认证和角色检查后代理连接。它支持 OIDC SSO、2FA、会话录制和命令审计,无需修改目标资源,并提供 Web UI 查看连接历史。
与其他方案对比
| 特性 | Warpgate | Jump Host | VPN | Teleport |
|------|----------|-----------|-----|----------|
| 精确服务绑定 | ✅ | ❌ | ❌ | ✅ |
| 无需客户端 | ✅ | ❌ | ❌ | ✅ |
| 2FA | ✅ | PAM | 视情况 | ✅ |
| SSO | ✅ | PAM | 视情况 | 付费版 |
| 命令审计 | ✅ | ❌ | ❌ | ✅ |
| 会话录制 | ✅ | ❌ | ❌ | ✅ |
| 非交互连接 | ✅ | 有限 | ✅ | 包装器 |
| 自托管 | ✅ | ✅ | 视情况 | SaaS |
多项目环境优势:无许可费用、IaC 配置、无缝扩展。
Keycloak 和 Terraform 架构
SSO 集成
OIDC 提供商 Keycloak 将群组映射到 Warpgate 角色。示例 warpgate.yaml:
sso_providers:
- name: keycloak
label: "使用 Keycloak 登录"
auto_create_users: true
provider:
type: custom
client_id: warpgate
client_secret: $OIDC_CLIENT_SECRET
issuer_url: $ISSUER_URL
scopes: ["openid", "email"]
role_mappings:
'/teams/devops/warpgate-admin': 'warpgate:admin'
'/teams/devops/project-A': 'project-A'
'/teams/devops/project-B': 'project-B'
群组 /teams/devops/project-A 授予项目 A 资源访问权。Keycloak 变更即时生效。
Terraform IaC 管理
Terraform 定义角色、资源和网关。结构:根 Warpgate + 按项目文件夹。内部网络使用内层 Warpgate 作为网关。覆盖 100+ 台 VM 的声明式管理,避免手动 UI 操作。
Kubernetes 部署多副本消除单点故障。
局限与兼容性
Warpgate 无法完全取代 Ansible:VM 需要单一技术用户处理代理连接。工程权限在堡垒机强制执行——主机无个人密钥。新项目轻松扩展,无需剧本。
实际变更
- 入职:加入 Keycloak 群组。
- 撤销:移除群组。
- 审计:集中会话日志。
- 扩展:多租户无孤儿访问风险。
访问管理运维开销降低 80%。
核心要点
- SSO 角色访问,无服务器代理。
- Terraform 声明式配置 100+ 资源。
- 完整会话录制和命令级审计。
- 自托管、无许可、Kubernetes 就绪。
- 支持 SSH/HTTPS/DB/K8s 的非交互代理。
— Editorial Team
暂无评论。