云原生安全模型与实践
星期一, 十一月 9, 2020
在传统的研发中,我们经常关注的安全有数据安全、代码安全、机器(运行环境)安全、网络运维安全,而云原生时代的到来,如果还是按几个维度切分的话,显然容易忽略很多云原生环境引入的新的挑战,我们需要基于网络安全最佳实践——纵深防御原则,来逐步剖析云原生的安全,并且对不同层次的防御手段有一定的了解,最重要的是建立自己云原生安全的理念,真正搭建一个内核安全的云原生系统。
注:纵深防御指在计算机系统中的多个层面使用多种网络安全技术,从而减少攻击者利用关键业务资源或信息泄露到系统外部的总体可能性。在消息传递和协作环境中,纵深防御体系可以确保恶意攻击活动被阻止在基础结构内的多个检查点,降低了威胁进入内部网络的可能性。
对于这里安全模型的每一层,都是单向依赖于外层的。也就是说,外层的云、集群、容器安全如果做得好,代码层的安全就可以受益,而反过来,我们是无法通过提高代码层的安全性来弥补外层中存在的安全漏洞或问题。
基于上述这一点原理,我们的纵深防御策略是「自外而内」地进行“设防”。
这一层也可以称之为基础设施安全,不管从何角度,公有或私有云或企业数据中心以及对应的网络安全,是K8s集群最根本的安全基础,如果这一层存在安全漏洞或者过于脆弱,则整个系统都不能在此基础上保证组件的安全。我们除了需要防御传统的攻击,如ARP伪装、DDOS、网络层各类报文等攻击,还应该针对Kubernetes集群采取以下保护措施:
保护 Kubernetes 集群有两个主体需要关注:
针对这两个主体的保护,应该实现最小权限管理原则,并由专门安全工程师进行权限管理。我们的保护可以分为 4 大块:管理API的访问控制、Kubelet 的访问控制、Runtime(运行时)工作负载或用户功能的访问控制、集群组件的安全漏洞防护,如下图所示。
到了这一层,由于跟 Kubernetes 特性不是强相关,我们能提供一些通用的安全措施和建议:
程序代码层是最容易受攻击,但也是最可控的部分之一。虽然一般负责这块安全的人员不一定是运维开发(DevOps),可能是专门的安全工程师(Sec Eng),但有一些基本共性理念和建议是可以互相借鉴的。
总的来说,安全的本质是数据被合理使用。云原生时代的这四层架构:云/数据中心/网络层、集群层、容器层、代码层,与传统架构比起来更加细化和更易受攻击,自外而内地践行每一层的安全最佳实践,我们的纵深防御才能算是成功的,每个在云原生技术上想长期获益的团队需要对此有共识。安全体系的建立可以参考主流安全框架如 ISO27001 或国家等级保护三级等,所有的安全措施都不能保证100%安全,但是1%的安全故障会造成100%的危害。所以安全体系建立是一个长期的过程,持续更新改进的过程,需要公司从上至下的进行管理和推动。这里给大家在搭建安全体系的意见是:先快再好。最先选择最容易部署和实施的安全模块,如WAF、防火墙、身份认证等安全工具,再继续深入、逐步完善。
玉符科技致力于为企业提供领先的身份认证云服务。 玉符IDaaS云平台,可为企业实现从身份数据集中管理、访问控制、账号生命周期管理、到安全审计的高效安全、自主可控、系统科学的企业身份信息管理。 玉符科技拥有多年的海外技术经验及成熟的实施,凭借自主研发的新一代身份管理云平台,可以帮助企业更好的应对云时代下复杂、繁琐的身份认证和权限管理,帮助企业降低成本、提升运维效率、增强业务协同性,进而提升企业身份数据的整体安全级别。 主要面向业务场景包括:企业身份信息集成及密码管理;不同类型人员在访问各类应用服务时,所产生的访问控制和策略管理;身份统一认证;企业不同应用间的账号同步,如人员自动入离职管控等。