Kubernetes插图
跳转到节

Kubernetes安全最佳实践

复制URL

实施Kubernetes安全最佳实践包括在构建阶段修复已知的安全漏洞,在构建/部署阶段重新配置错误配置,在运行时响应威胁,以及保护整个Kubernetes基础设施。 

这些与作为最新《Kubernetes国家安全报告》的一部分收集到的关于顶级安全问题的回应相对应,该报告发现,由于Kubernete的高度可定制性和复杂性,超过50%的受访者担心配置错误和漏洞集装箱安全。为了克服安全挑战并避免应用程序部署速度减慢,组织必须在整个开发生命周期中优先保护Kubernetes。

到处都是集装箱

库伯内特斯是一个开源 容器编排用于管理数百(有时数千)个Linux®(Linux®)分批装入Kubernetes的集装箱集群。它严重依赖于应用程序编程接口集装箱连接微型服务。这种分布式性质使得很难快速调查容器可能有漏洞,可能配置错误,或构成最大风险到您的组织.

解决方案是开发容器部署的综合视图,以捕获每个容器中的关键系统级事件。

库平格科尔报告领导力指南:集装箱安全

全面了解容器和Kubernetes安全市场,帮助您评估和选择正确的容器安全解决方案。

图像和注册表可能被滥用

容器映像(也称为基本映像)是用于创建新容器的不可变模板。然后可以修改新复制的容器图像以满足不同的目的。

解决方案是设置策略,以确定如何构建图像以及如何将其存储在图像注册表中。基础图像需要定期测试、批准和扫描。并且只有来自允许图像的图像登记处应该用于在Kubernetes环境中启动容器。

未屏蔽的容器通信

容器和吊舱需要在内部相互对话部署以及其他内部和外部端点以正常工作。如果容器被破坏,黑客在环境中移动的能力直接关系到该容器与其他容器的通信范围以及豆荚。在一个庞大的容器环境中,考虑到以下方面的复杂性,实现网络分段可能非常困难配置手动执行此类策略。

解决方案是跟踪命名空间、部署和pod之间的流量移动;并确定实际允许的流量。

了解有关Red Hat如何帮助容器安全通信的更多信息

默认容器网络策略

默认情况下,Kubernetes部署不会将网络策略应用于pod(Kubernete应用程序的最小单元)。这些网络策略的行为类似于防火墙规则。它们控制吊舱的通信方式。如果没有网络策略,任何pod都可以与任何其他pod对话。 

解决方案是定义网络策略,将pod通信限制为仅限于定义的资产,并在容器内的只读卷中装入机密,而不是将其作为环境变量传递。

集装箱和Kubernetes合规性

云原生环境在Kubernetes的协助下(与所有其他IT环境一样)应遵守安全最佳实践、行业标准、基准和内部组织政策,并证明顺从。有时这意味着调整法规遵从性战略,使Kubernetes环境满足最初为传统环境编写的控制应用程序体系结构.

解决方案是监控法规遵从性和自动化审计。

运行时

Kubernetes是一个不可变的基础设施。修补不可能在容器运行时运行,必须销毁并重新创建正在运行的容器。受损容器可能会运行恶意进程,如加密挖掘和端口扫描。

解决方案是销毁任何损坏或正在运行的容器,重建一个未受损的容器映像,然后重新启动它。

Kubernetes安全从构建阶段开始,创建强大的基础映像并采用漏洞扫描过程。

  • 使用最小的基础图像。避免将映像与操作系统(OS)包管理器或外壳一起使用,因为它们可能包含未知的漏洞,或者稍后删除包管理器。
  • 使用可信来源。仅选择来自可信源且托管在信誉良好的注册表中的基本映像。
  • 不要添加不必要的组件。根据经验,常见工具在包含在图像中时可能会带来安全风险。
  • 仅使用最新的图像。更新组件版本。
  • 使用图像扫描仪。识别图像中的漏洞-按层分解。
  • 将安全性集成到CI/CD管道中。自动化将失败的可重复安全方面持续集成针对严重、可修复的漏洞构建并生成警报。
  • 标记永久性漏洞。将无法修复、不重要或不需要立即修复的已知漏洞添加到允许列表中。 
  • 深入实施防御。标准化策略检查和修复工作流,以检测和更新易受攻击的图像。

在部署工作负载之前配置Kubernetes基础架构安全性。首先要尽可能多地了解部署过程,例如正在部署什么(映像、组件、pods)、部署在哪里(集群、命名空间和节点)、如何部署(特权、通信策略、应用的安全性)、可以访问什么(机密、卷)以及合规性标准。

  • 使用名称空间。将工作负载划分为名称空间有助于遏制攻击,并限制授权用户错误或破坏性行为的影响。
  • 使用网络策略。Kubernetes默认情况下允许每个pod与其他pod联系,但控制应用程序进出流量的网络分段策略和插件可以覆盖该默认设置。
  • 将权限限制为机密。仅装载部署所需的机密。
  • 评估容器权限。仅提供允许容器执行其功能的功能、角色和权限。 
  • 评估图像来源。使用已知注册表中的图像。
  • 扫描部署。根据扫描结果强制执行策略。 
  • 使用标签和注释。使用负责集装箱化应用程序的团队的联系信息标记或注释部署,以简化分类。
  • 启用基于角色的访问控制(RBAC)。RBAC控制用户和服务帐户授权以访问群集的Kubernetes API公司服务器。

在构建和部署阶段应用保护Kubernetes的最佳实践时,安全事件不太常见,但识别和响应运行时威胁需要持续监控流程活动和网络通信。

  • 使用上下文信息。使用Kubernetes中的构建和部署时间信息评估运行时观察到的活动与预期活动,以便检测可疑活动。
  • 扫描正在运行的部署。监视正在运行的部署,以查看容器映像中最近发现的相同漏洞。
  • 使用内置控件。配置pods的安全上下文以限制其功能。
  • 监控网络流量。观察并比较实时网络流量与Kubernetes网络策略允许识别意外通信的流量。
  • 使用允许列表。确定在应用程序运行时的正常过程中执行的进程,以创建允许列表。
  • 比较类似部署的pods中的运行时活动。有重大偏差的复制品需要调查。
  • 将可疑吊舱归零。通过自动指示Kubernetes将可疑pod扩展到零,或销毁并重新启动实例,使用Kubernetes本地控件来遏制违规行为。

Kubernetes安全性超越了图像和工作负载。安全性包括整个Kubernetes基础设施:集群、节点、容器引擎,甚至.

  • 应用Kubernetes更新。更新Kubernetes发行版将应用安全补丁并安装新的安全工具。
  • 保护Kubernetes API服务器。Kubernetes API服务器是Kubernete控制平面的网关。禁用未经身份验证/匿名访问,并对kubelets和API服务器之间的连接使用TLS加密。还应启用审核日志,以便查看非典型API调用。
  • 安全etcd。 etcd(etcd)是Kubernetes用于数据访问。保护kubelet以最小化攻击面。通过使用--anonymous-auth=false标志启动kubelet来禁用对kubelet的匿名访问,并使用NodeRestruction许可控制器限制kubelet可以访问的内容。

云安全

无论什么类型的云(公共云,私有云,混合云,或多云)托管容器或运行Kubernetes,云用户不是云提供商-始终负责确保Kubernetes的工作量,包括:

  • 容器图像:来源、内容和漏洞
  • 部署:网络服务,存储、和权限
  • 配置管理:角色、组、角色绑定和服务帐户
  • 应用程序:Kubernetes机密管理、标签和注释
  • 网络细分:Kubernetes集群中的网络策略
  • 运行时间:威胁检测和事件响应

使用容器和Kubernetes不会改变您的安全目标:将漏洞和安全风险降至最低。

  • 在容器生命周期的早期嵌入安全最佳实践。Kubernetes安全应该允许开发人员和开发运营团队可以自信地构建和部署生产就绪的应用程序。
  • 使用Kubernetes-native安全控制。本机控件可防止安全控件与协调器
  • 让Kubernetes优先考虑补救措施。

保护云计算应用程序和底层基础设施需要对组织的安全方法进行重大更改,组织必须在应用程序开发生命周期的早期应用控制,使用内置控制来实施防止操作和可伸缩性问题的策略,并跟上日益快速的发布时间表。

Kubernetes的Red Hat®高级群集安全是一个Kubernetes-native安全平台,使组织能够在任何地方更安全地构建、部署和运行云原生应用程序。该解决方案有助于提高应用程序构建过程的安全性,保护应用程序平台和配置,并检测和响应运行时问题。 

继续阅读

第条

什么是Linux容器?

Linux容器是一组与系统隔离的进程,从一个不同的映像中运行,该映像提供了支持进程所需的所有文件。

第条

容器与虚拟机

Linux容器和虚拟机(VM)是组合了各种IT组件并将其与系统其余部分隔离的打包计算环境。

第条

什么是容器编排?

容器编排自动化了容器的部署、管理、扩展和联网。

有关容器的详细信息

产品

一个企业应用程序平台,具有一套统一的测试服务,可根据您选择的基础设施将应用程序推向市场。

资源

播客

《命令行英雄》第1季第5集:
“集装箱德比”

电子图书

通过混合云和容器提高灵活性

培训

免费培训课程

使用Red Hat运行容器技术概述

免费培训课程

容器、Kubernetes和Red Hat OpenShift技术概述

免费培训课程

使用微服务架构开发云计算应用程序