本文重点介绍如何通过JumpServer实现Kubernetes的运维安全审计。此前,我们专门介绍过在Kubernetes集群上快速部署JumpServer的方法步骤,可参见操作指南在Kubernetes集群上快速部署JumpServer开源堡垒机一文。 一、Kubernetes运维审计现状 Kubernetes是一种可自动实施Linux容器操作的开源平台,可以帮助用户省去应用容器化过程中的许多手动部署和扩展操作,其已经成为了容器编排的事实标准。企业基于Kubernetes部署的业务应用越来越多,这样一来,企业用户在Kubernetes的使用和管理上就面临了一些问题: 业务线众多,多个团队都需要使用Kubernetes,存在Token复用的情况,用户的身份很难唯一; 维护人员的操作行为难以约束,如果对容器进行了一些违规、越权操作难以进行阻止; 维护人员的操作过程不透明,管理人员对于当前有哪些运维人员对集群做了哪些操作完全不清楚,也不清楚这些操作的风险; 缺乏有效的技术手段来记录和复现用户的操作场景,当出现运维安全事故的时候,无法快速定位故障原因和责任人。 JumpServer是广受欢迎的开源堡垒机,是符合4A(包含认证Authentication、授权Authorization、账号Accounting和审计Auditing)规范的运维安全审计系统。JumpServer可以纳管众多不同类型的资产,包括Linux资产、Windows资产、网络资产、BS应用资产、CS应用资产等,同时支持纳管Kubernetes资产。值得关注的是,JumpServer还是市面上第一款支持Kubernetes运维安全审计的堡垒机。 在日常运维管理方面,JumpServer内嵌Kubectl客户端,能够直接管控Kubenetes的Kubectl命令;在应用部署和管理方面,JumpServer内嵌Helm客户端,能够直接管控Helm命令进行Kubernetes应用安装管理,并在此基础上能够对Kubectl、Helm命令与操作进行记录、录屏和高危命令阻断。 下面就来详细介绍下如何通过JumpServer开源堡垒机实现Kubernetes的运维安全审计。 二、划分权限对应关系 基于Kubernetes的RBAC(即RoleBasedAccessControl,基于角色的访问控制)权限能力,并结合JumpServer的系统账号管理能力,企业可以设计不同的权限划分关系,如下图所示: 管理员在Kubernetes为不同的用户或者团队创建不同的SA(即ServiceAccount,服务账户),并且进行相应的RBAC权限控制。同时在JumpServer上为不同的SA创建不同的系统用户,形成如上图一一绑定的关系。 三、JumpServer纳管Kubernetes的具体步骤 1。获取Kubernetes集群的访问入口地址; 2。在JumpServer中添加相应的Kubernetes应用; 3。将JumpServer堡垒机对Kubenetes进行授权,结合Kubenetes自身的RBAC权限管控,控制人员的访问权限; 4。创建KubernetesSA账号,并查看Token信息; 5。将JumpServer中的普通用户和Kubernetes角色进行绑定; 6。通过WebTerminal连接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快速定位到问题原因和责任人。