Kubernetes每一层安全的最佳实践

本文涉及的产品
访问控制,不限时长
简介: Kubernetes每一层安全的最佳实践

目录

第0层–内核

第1层–容器

静态

运行

第2层–工作负载(Pod)

第3层–网络

应用层(L7)攻击–服务器端请求伪造(SSRF)

应用层(L7)攻击–远程执行代码(RCE)

应用层(L7)防御

第4层-节点

第5层–集群组件


 


容器正在改变软件开发。作为CI/CD的新基础,容器为你提供了一种快速,灵活的方式来部署应用程序,API和微服务,而数字化成功与否取决于可扩展性和性能。但是,容器和容器编排工具(例如Kubernetes)也是黑客们的热门目标,如果它们没有得到有效的保护,它们可能会使你的整个环境面临风险。在本文中,我们将讨论容器堆栈每一层安全的最佳实践。


了解容器安全的含义很重要。作为依赖共享内核的应用程序层构造,容器可以比VM更快地启动。在配置方面,容器也比VM灵活得多,并且可以执行挂载存储卷到禁用安全功能的所有操作。


如果绕过容器隔离机制并在主机上获得特权时,该容器甚至可以在黑客的控制下以root用户身份运行,然后你就陷入了真正的麻烦。

你可以采取一些措施,将坏蛋拒之门外。


第0层–内核

Kubernetes是一个开源平台,旨在自动执行容器的部署,扩展和编排,正确配置它可以帮助你增强安全性。在内核级别,你可以:

  • 查看允许的系统调用,并删除所有不必要或不需要的系统调用
  • 使用gVisorKata Containers等容器沙箱进一步限制系统调用
  • 验证你的内核版本已打补丁并且不包含任何现有漏洞


第1层–容器

静态

静态的容器安全性侧重于将用于构建容器的Docker镜像。首先,通过删除不必要的组件,程序包和网络实用程序来减少容器的攻击面-精简越多越好。考虑使用包含应用程序及其运行时依赖项的 distroless镜像。

Distroless (https://github.com/GoogleCloudPlatform/distroless) 是谷歌内部使用的镜像构建文件,包括 Java 镜像,Node,Python 等镜像构建文件,Distroless 仅仅只包含运行服务所需要的最小镜像,不包含包管理工具,shell 命令行等其他功能。

接下来,确保仅从已知可信任的来源中提取镜像,然后扫描它们中的漏洞和配置错误。在你的CI/CD流水线和构建过程中检查它们的完整性,并在运行之前进行验证和批准,以确保黑客未安装任何后门程序。


运行

打包镜像后,就该进行调试了。临时容器将使你可以交互式地调试运行中的容器。监视异常和可疑的系统级事件,这些事件可能是破坏的迹象,例如,产生了意外的子进程,在容器内运行的shell或意外读取了敏感文件。

开源运行时安全工具Falco可以为你提供帮助,它通过以下方式使用系统调用来保护和监视系统:

  • 在运行时从内核解析Linux系统调用
  • 针对强大的规则引擎声明流
  • 违反规则时发出警报


第2层–工作负载(Pod)

Pod是Kubernetes内的部署单位,是容器的集合,可以共享常见的安全定义和对安全敏感的配置。Pod安全上下文可以设置给定Pod的特权和访问控制,例如:

  • 容器内的特权容器
  • 进程和卷的组和用户ID
  • 细粒度的Linux功能(删除或添加),例如Sys.time
  • 沙箱和强制访问控制(seccomp,AppArmor,SELinux)
  • 文件系统权限
  • 特权升级

为了加强Pod级别的防御能力,你可以实施严格的Pod安全策略,以防止危险的工作负载在集群中运行。要获得对Pod安全性的更大灵活性和更精细的控制,请考虑使用OPA Gatekeeper项目实施的开放策略代理(OPA)


第3层–网络

默认情况下,所有Pod都可以不受限制地与集群中的所有其他Pod对话,这从攻击者的角度来看非常有利。如果工作负载受到威胁,攻击者可能会尝试探测网络并查看他们还可以访问什么。Kubernetes API也可以从Pod内部访问,从而提供了另一个丰富的目标。

严格的网络控制是容器安全的关键部分-pod到pod,集群到集群,由内而外和由内而外。使用内置的网络策略来隔离工作负载通信并构建精细的规则集。考虑实现服务网格以控制工作负载之间的流量以及入口/出口,例如通过定义namespace到namespace的流量。


应用层(L7)攻击–服务器端请求伪造(SSRF)

最近,我们已经听到很多关于SSRF攻击的消息,这也就不足为奇了。在API与其他API对话的云原生环境中,SSRF尤其难以防御。webhooks尤其臭名昭著。一旦找到目标,就可以使用SSRF升级特权并扫描本地Kubernetes网络和组件,甚至在Kubernetes指标端点上转储数据,以了解有关环境的有价值的信息-并有可能将其完全接管。


应用层(L7)攻击–远程执行代码(RCE)

RCE在云原生环境中也非常危险,这使得在容器内运行系统级命令来抓取文件,访问Kubernetes API,运行镜像处理工具以及破坏整个机器成为可能。


应用层(L7)防御

保护的第一条规则是遵守安全的编码和体系结构实践,这可以减轻你的大部分风险。除此之外,你还可以沿两个方向对网络防御进行分层:南北方向,以监视和阻止针对你的应用程序和API的恶意外部流量;东西方向,以监视从一个容器到另一个容器,从一个集群到另一个集群以及从云到云的流量,以确保你不会受到受损的Pod的伤害。


第4层-节点

节点级安全性同样重要。为防止容器在VM或其他节点上爆发,请限制对节点以及控制平面的外部管理访问,并注意开放的端口和服务。使基本操作系统保持最少,并使用CIS基准对其进行加固。最后,确保像其他任何VM一样扫描和修补节点。


第5层–集群组件

Kubernetes集群中发生了各种各样的事情,并且没有保护它的多合一工具或策略。在较高的级别上,你应该专注于:

  • API服务器–检查你的访问控制和身份验证机制,并对动态Webhooks,Pod安全策略以及对Kubernetes API的公共网络访问执行其他安全检查;
  • 访问控制-使用基于角色的访问控制(RBAC)对API服务器和Kubernetes secret实施最低特权原则
  • 服务帐户令牌–为了防止未经授权的访问,请限制对服务帐户以及存储服务帐户令牌的所有secret的权限
  • 审核日志记录-确保已启用
  • 第三方组件–注意带入集群中的内容,以便知道集群中正在运行的内容以及原因
  • Kubernetes版本– Kubernetes可以像任何其他系统一样具有漏洞,并且必须及时进行更新和修补。
  • Kubelet配置错误–负责容器编排以及与容器运行时的交互,Kubelet可能会被滥用和攻击,以试图提升特权

Kubernetes的安全性似乎令人望而生畏,但是通过在堆栈的每一层上遵循最佳实践,可以使容器与环境达到相同的高级别保护。因此,你可以享受快速,敏捷的开发带来的好处。


译文链接:https://thenewstack.io/defend-the-core-kubernetes-security-at-every-layer/


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
8天前
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
|
8天前
|
Kubernetes 容灾 调度
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
|
1月前
|
存储 运维 Kubernetes
K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复
在当今快速变化的云原生领域,Kubernetes(K8s)集群的运维面临着诸多挑战,其中灾备与业务迁移尤为关键。ACK备份中心支持丰富的资源调整策略,在数据恢复阶段即可自动适配目标集群环境,确保业务无缝重启。
|
29天前
|
Kubernetes 监控 API
深入解析Kubernetes及其在生产环境中的最佳实践
深入解析Kubernetes及其在生产环境中的最佳实践
45 1
|
2月前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
238 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
2月前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。
|
3月前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
4月前
|
Kubernetes 安全 数据安全/隐私保护
Kubernetes 安全性最佳实践
【8月更文第29天】随着容器化和微服务架构的普及,Kubernetes 已成为管理容器化应用的标准平台。然而,随着 Kubernetes 的广泛采用,其安全性问题也日益受到关注。本文将深入探讨 Kubernetes 的安全最佳实践,并通过具体的代码示例来展示如何保护 Kubernetes 集群免受攻击。
219 2
|
4月前
|
Kubernetes jenkins 持续交付
Kubernetes CI/CD 集成:持续交付的最佳实践
【8月更文第29天】随着微服务架构和容器化的普及,Kubernetes 成为了运行容器化应用的事实标准。为了确保应用能够快速迭代并稳定发布,持续集成/持续部署(CI/CD)流程变得至关重要。本文将介绍如何将 Kubernetes 集成到 CI/CD 流程中,并提供一些最佳实践。
330 1