本文重点介绍如何通过JumpServer实现Kubernetes的运维安全审计。此前,我们专门介绍过在Kubernetes集群上快速部署JumpServer的方法步骤,可参见《操作指南|在Kubernetes集群上快速部署JumpServer开源堡垒机》一文。
一、Kubernetes运维审计现状
Kubernetes是一种可自动实施Linux容器操作的开源平台,可以帮助用户省去应用容器化过程中的许多手动部署和扩展操作,其已经成为了容器编排的事实标准。企业基于Kubernetes部署的业务应用越来越多,这样一来,企业用户在Kubernetes的使用和管理上就面临了一些问题:
■ 业务线众多,多个团队都需要使用Kubernetes,存在Token复用的情况,用户的身份很难唯一;
■ 维护人员的操作行为难以约束,如果对容器进行了一些违规、越权操作难以进行阻止;
■ 维护人员的操作过程不透明,管理人员对于当前有哪些运维人员对集群做了哪些操作完全不清楚,也不清楚这些操作的风险;
■ 缺乏有效的技术手段来记录和复现用户的操作场景,当出现运维安全事故的时候,无法快速定位故障原因和责任人。
JumpServer 是广受欢迎的开源堡垒机,是符合4A(包含认证Authentication 、授权Authorization、 账号Accounting和审计Auditing)规范的运维安全审计系统。JumpServer可以纳管众多不同类型的资产,包括Linux资产、Windows资产、网络资产、B/S应用资产、C/S应用资产等,同时支持纳管Kubernetes资产。值得关注的是,JumpServer还是市面上第一款支持Kubernetes运维安全审计的堡垒机。
在日常运维管理方面,JumpServer内嵌Kubectl客户端,能够直接管控Kubenetes的Kubectl命令;在应用部署和管理方面,JumpServer内嵌Helm客户端,能够直接管控Helm命令进行Kubernetes应用安装管理,并在此基础上能够对Kubectl、Helm命令与操作进行记录、录屏和高危命令阻断。
下面就来详细介绍下如何通过JumpServer开源堡垒机实现Kubernetes的运维安全审计。
二、划分权限对应关系
基于Kubernetes的RBAC(即Role-Based Access Control,基于角色的访问控制)权限能力,并结合JumpServer的系统账号管理能力,企业可以设计不同的权限划分关系,如下图所示:
管理员在Kubernetes为不同的用户或者团队创建不同的SA(即Service Account,服务账户),并且进行相应的RBAC权限控制。同时在JumpServer上为不同的SA创建不同的系统用户,形成如上图一一绑定的关系。
三、JumpServer纳管Kubernetes的具体步骤
1. 获取Kubernetes集群的访问入口地址;
2. 在JumpServer中添加相应的Kubernetes应用;
3. 将JumpServer堡垒机对Kubenetes进行授权,结合Kubenetes自身的RBAC权限管控,控制人员的访问权限;
4. 创建Kubernetes SA账号,并查看Token信息;
5. 将JumpServer中的普通用户和Kubernetes角色进行绑定;
6. 通过Web Terminal连接Kubernetes资产,普通用户无法在左侧菜单栏查看所有的Pods信息,只能查看所拥有的Namespace下的资产情况,无法获取到其他业务Namespace的状态;
7. 支持使用Helm命令。
四、针对高危命令配置审核机制,规避误操作行为
1. 添加过滤规则时,管理员可以选择“复核”或者“拒绝”选项进行审核操作;
2. 在系统用户列表中,绑定对应的命令过滤器;
3. 阻断结果: 当普通用户操作高危命令时,需要管理员进行命令复核才能继续执行。
五、全程跟踪记录Kubernetes的操作过程
1. 对于在线用户,管理员可以通过JumpServer进行实时监控,一旦发现有任何异常操作对其立刻阻断;
2. 对于历史会话,管理员可以在线或者下载到本地进行录像查看;
3. 记录Kubernetes集群的操作命令,一旦系统出现故障,能够快速定位故障原因和责任人;
4. 创建会话分享,支持多用户协同办公。
六、价值收益
通过JumpServer实现Kubernetes的运维安全审计,可以对企业的Kubernetes管理带来了一些实质性的价值和收益:
1. 对于Kubernetes集群管理可以形成统一的运维入口,实现运维操作路径的唯一化;
2. 通过JumpServer系统账号管理能力和Kubernetes的RBAC权限管控结合,严格控制了访问权限,有效规避了非授权访问带来的问题;
3. Token托管使得密码管理规范化并且能够有效落地,避免了因人员的流动导致Kubernetes密码外泄的风险;
4. 能够完整记录运维人员的操作过程,当Kubernetes业务应用因人为操作导致故障的时候,能够通过JumpServer快速定位到问题原因和责任人。