使用 Python 实现基于 LDAP 权限的 Kubernetes RBAC 同步自动化

主要观点:在企业 Kubernetes 环境中,管理命名空间访问随着用户角色和责任的演变而变得复杂,Kubernetes 缺乏与 LDAP 的原生集成,导致手动管理 RoleBindings 繁琐、易错且不可扩展。文中介绍了一个基于 Python 的自动化系统,通过与 LDAP 同步来管理 Kubernetes 的 RoleBindings,解决了手动访问控制的问题,并分享了实施过程中的经验教训和未来的改进方向。

关键信息:

  • 企业 Kubernetes 环境中管理命名空间访问的挑战,如缺乏 LDAP 原生集成、手动管理繁琐等。
  • 基于 Python 的自动化系统的工作原理,包括连接 LDAP、过滤用户、映射命名空间、管理 RoleBindings 和使用 CronJob 调度等。
  • 系统实施后的结果,如手动访问请求减少、入职时间缩短、访问准确可审计等。
  • 从实施中吸取的教训,如避免使用 kubectl 子进程、利用 LDAP 的 whenChanged 属性等。
  • 未来的改进方向,如使用 Kubernetes Python API 客户端、添加 Prometheus 指标等,以及扩展到集群范围的访问控制。

重要细节:

  • 使用 ldap3 库和 TLS 建立与 LDAP 的安全连接,通过正则表达式过滤有效用户。
  • 利用 Kubernetes ConfigMap 进行命名空间映射,定义 entitlement 到命名空间和访问类型的映射。
  • 通过 kubectl 管理 RoleBindings,根据 LDAP 成员变化进行创建、更新和删除操作。
  • Kubernetes CronJob 每 4 小时运行一次自动化脚本,保持 Kubernetes RBAC 与 LDAP 一致。
  • 吸取的教训包括避免 kubectl 子进程、验证 LDAP 证书、设计幂等性等。
  • 未来改进计划包括使用 Kubernetes Python API 客户端、添加监控指标等,以及扩展到集群范围的访问控制。
阅读 163
0 条评论