什么是云原生安全?
云原生安全是指将安全纳入企业整体云原生应用开发的战略。这一方法解决了建立安全应用程序所需的基础设施、团队和流程的变化。因此,云原生安全强调应用安全,以确保在云环境中检测和修复漏洞。
实现云原生安全需要一个整体的规划使安全得以渗透到整个软件开发生命周期(SDLC)中。安全平台可以帮助开发人员交付基于云原生理念的设计,开发团队应该负责提供安全代码。每个设计决策都应考虑到云原生架构,以确保应用程序是完全基于云原生架构的。
云原生的安全有哪些需要考虑的?
云原生安全的4C基础设施
为了帮助您了解云原生安全策略,我们将安全基础设施分为4类——Cloud 层、容器层、集群层和代码层。
影响 Cloud 层的典型安全问题包括错误配置和自动攻击。攻击者会积极利用因错误或疏忽造成的错误配置,如未改变的默认设置或对管理控制台的弱访问保护。攻击者还可以利用自动化来扫描漏洞并迅速发起攻击。
确保所使用的任何镜像是由已知的来源构建的或者来自一个受信任的镜像仓库。一个镜像签名工具,如 Docker Content Trust (DCT),可以帮助您确保容器内容来自可信任的来源。
确保所有容器都使用特权用户运行,而不是使用主机的 root 权限。
需要保护的最关键组件是 kube-api-server ,因为它是 Kubernetes 的主要接口。默认情况下,该 server 只能通过 HTTPS 访问,您也可以使用第三方身份认证程序来进一步保护它。通常情况下,企业使用自定义的基于角色的访问控制(RBAC)规则进行 API server 授权,所以您可以管理集群及其工作负载,而无需 Secure Shell 访问。
代码层的典型安全问题包括不安全的代码、不充分的风险评估以及第三方软件依赖项的漏洞。您应该使用静态代码分析攻击来识别不安全的代码并确保安全的 code 实践。您需要定期扫描并测试您的应用程序以抵御跨站点请求伪造(CSRF)和跨站点脚本(XSS)等攻击。
大多数云原生应用都包含第三方代码库或依赖项,这些库或者依赖项通常未经静态分析检查。您可以使用软件成分分析工具来识别有漏洞的依赖项。
5大云原生安全策略
企业通常会实施云原生安全策略以保证整个技术栈的安全,以下列举出了5个常见的云原生安全策略:
共同承担安全责任
云原生安全需要各种管理开发和安全团队的方法,并需要密切沟通协同工作。共同承担责任和协作是工作文化转变的一部分,这使组织能够将安全性整合到开发过程中。
另一个保护基础设施的方式是避免 serverless 的特性。攻击者可以利用在 serverless 功能代码和容器中的漏洞。他们还可以利用云基础设施的错误配置来访问敏感数据,提升权限,并横向移动。
您应该在 CI/CD 流水线中避免使用不受信任的容器镜像。安全团队应该在开发人员将镜像部署到应用程序之前检查它们是否包含漏洞。
保护依赖项
理想的云原生安全平台应该如何?
- 高度的安全自动化:传统基于告警的安全操作已经无法跟上当前近乎无限规模、动态性质更强的云原生系统。因此,手动工作流程根本不是一个选项。规模化的自动检测和响应是云原生安全的必备条件。
- 设计时要考虑到“混沌”:在微服务架构中,任何功能可能都会牵涉到许多软件组件,它们在运行时中被拼接在一起。从安全的角度来说,这意味着检测逻辑和控制不能依赖于对运行状态和安全健康状态的先验理解。因此云原生安全必须拥抱混沌工程原则——主动实验、经常测试并快速补救。
- 快速检测、就地遏制、迅速恢复:云原生应用最终是分布式计算应用。在这样的环境下,通常不可能及时执行全局安全决策。因此,您最好优先考虑哪些允许快速检测、快速恢复,并在全系统的恶意行为表现出来之前在本地控制影响的行动。即使安全决策不是100%精确,在本地采取行动和快速恢复也会为您提供一个更具弹性的系统。
总 结
云计算在不断急速发展,随着创新的步伐不断加快,需要开发出新的技术和工具来帮助企业紧跟技术的发展。很多时候,企业会将他们现有的企业本地的软件基础设施移植到云中,进而导致企业内部被强制使用过时的抽象和安全模型,从而无法体会到云原生所带来的优势。
为本地托管时代建立的安全模型和工具是一个特别重要的责任。因为现存的工具中大多数是在云计算作为一级托管平台普及之前设计的,无法提供足够的安全性。在快节奏和竞争激烈的空间中,能够扩展、保护您的应用程序是十分重要的。想要在现代云时代保持竞争力,企业应该专注于构建云原生应用程序,并使用云原生安全平台来帮助保护它们。