容器云平台的基础安全和管理安全设计( 八 )


以上插件按需激活使用,比如:
… …
–enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,Resourc
eQuota
… …
3.Node selector机制
此设置是资源隔离的一种方式,但此方式并不是平台构建层面需要考虑的措施,需要以规范或者最佳实践的方式通知应用部署人员,按照规范部署实施 。
此功能原理是让kubernetes集群调度器根据node selector的设置为pod资源选择某个节点(如果未设置,默认是调度考虑的是资源足够,并且load尽量平均) 。
4.网络隔离
网络资源在集群层面也是共享的,相关的隔离措施见前面部分 。
单集群和多集群
在某些行业中比如金融业,监管部门要求一个业务的前端,后端需要部署在不同的网络区域中,因此容器云平台在建设过程中,需要考虑集群跨网断或者多集群部署的问题,此外随着一个集群的业务不断增加,也需要在容量上做对集群拆分 。因此在构建容器云平台时建议规划好集群的部署形式 。
建议:

  • 不同环境部署多个集群,比如UAT测试,SIT测试,性能测试 。
  • 不同网络区域部署多个集群,比如DMZ区域,业务后台区域 。
  • 不同地域部署多个集群,比如生产区域和灾备区域
  • 不同业务安全级别的应用部署在不同集群 。
  • 单个集群不能太小,同时也不能太多,建议不超过128台物理主机(48c/256G) 。
2.2.4 组件安全
Kubernetes平台本身是一个可扩展的平台,通过CNI支持不同的网络组件,通过CSI支持不同的存储组件,此外通过CRD能力支持不同的客户化资源定义,常见的功能扩展比如CI/CD,日志,监控,告警 。以上组件通过CRD的方式部署在kubernetes集群内,扩展了容器云平台的能力,此外在应用层面,微服务运行组件也以组件的方式部署在容器云平台上 。比如Spring Cloud,istio等微服务框架,因此以上组件的安全需要进行相关的设计,鉴于容器云平台的建设规模,各个容器云平台的组件也不相同,本文中以最基本的CI/CD组件为例介绍组件的安全设计要求:
1.数据与环境隔离:不同项目、不同团队的数据要保证隔离,一个项目的多套环境,多套介质同样要保证隔离,比如介质库,首先各项目的介质库要隔离,一个项目的开发库、测试库、投产库同样要隔离,测试通过的介质,则通过可控的同步手段发到投产库 。另外比如部署引擎,什么引擎可针对什么环境进行部署操作,也是严格控制的,防止环境操作越权 。
2.UI与API的权限控制:对界面的菜单、按钮进行权限控制,对后台api的访问权限进行权限控制,其中账户部分需要对接统一的LDAP系统 。
3.可审计:对于什么人在什么时候在平台上做了什么,在动作前后资源产生了这样的变更,比如部署的操作,什么人审批还是可自动执行,部署完成后由谁确认(亦或是通过自动化测试确认),这些关键事项,需要结合不同团队的实际情况进行不同的个性化配置 。
【容器云平台的基础安全和管理安全设计】4.平滑升级:组件的升级应该不影响容器云平台的影响 。

推荐阅读