DevOps 必备的 Kubernetes 安全清单

devops,必备,kubernetes,安全,清单 · 浏览次数 : 71

小编点评

** Kubernetes 安全策略的实施原则** * Kubernetes 是一种安全平台,但它缺乏处理大多数与安全相关的任务的本地工具。 * 为了确保集群的安全性,需要制定明确的安全策略和实施相应的安全措施。 * 预提交阶段的安全测试是确保代码安全的重要步骤。 * 镜像扫描、集群扫描和安全上下文定义是保障 Kubernetes 集群安全的关键措施。 * RBAC、网络安全策略管理和政策执行是保护 Kubernetes 集群安全的重要手段。 * DevOps 团队需要使用工具来管理安全规则,例如 Open Policy Agent (OPA)。 * Kubernetes 的数据管理等领域的广泛使用使其安全性成为其业务运营的关键点。 * 确保 Kubernetes 集群的保护还涉及扫描活动资源。

正文

Kubernetes 是当今许多公司采用的容器编排平台,它的实施需要对其生态系统有一定的了解,以便部署一个准备好用于生产的集群。然而从原则上来说,Kubernetes 并不是一个安全的平台,因为它缺乏处理大多数与安全相关任务的本地工具。
 
因此,Kubernetes 的实施工作原理或工具至关重要,这个过程也需要包括运维、开发、安全等团队的共同合作,从而能够在短时间内以最快的速度发现异常,并提高编排器及其资源的安全级别。在本文中,我们将会一起讨论保护集群的安全原则。
 

Pre-Commit Hooks

DevSecOps 的主要目标就是通过尽早在持续集成流水线中添加自动化流程,从最大程度上减少对生产的影响,这也是当下公认的 DevSecOps 原则。因此,企业也开始引入“安全左移”的做法,来促进开发、安全和运营团队之间的共同协作,通过将安全和测试过程转移到软件开发生命周期的左侧。从添加预提交(Pre-commit)开始,在开发周期的早期确保应用程序安全
 

最近几年出现了几种工具来促进这种集成,以完成以下任务:

  • 格式化 YAML 文件代码
  • 检测 Kubernetes 资源配置中的异常
  • 强制应用配置和安全策略以保障良好的开发实践
  • 在提交任何源代码之前检测敏感数据
     

以下是控制 YAML 定义文件的三个不错的工具示例:

  • YAML lint
  • Checkov
  • K8svalidate
     

持续集成检查

预提交测试(Pre-commit test)通常被用来促进团队合作,但是 DevSecOps 团队很少会强制执行预提交测试。在某些情况下,pre-commit 任务的实现可能很麻烦,尤其是对于大型团队而言。不过这些测试仍然是必要的,因此必须在持续集成过程中推进。Pre-commit 任务可以分为两个部分,首先对代码进行格式化,然后对代码进行扫描来验证配置文件的一致性。
 

镜像扫描

由于许多人认为官方镜像是百分之百安全的,因此在部署之前往往会忽略扫描镜像这个步骤,但扫描镜像很重要,因为新的漏洞层出不穷。同时更新任何具有安全漏洞的系统来限制恶意攻击者的攻击范围同样也很重要。
 

这些扫描工作需要在容器生命周期的不同阶段执行:

  • 在将镜像发布到远程镜像仓库之前,确保相关镜像在部署之前就符合安全规则
  • 在容器运行期间,尽快确定需要重建的镜像来纠正新发现的漏洞
     

集群扫描

对 Kubernetes 集群的保护取决于公司的安全治理。应用的政策必须考虑到可访问性、维护、数据管理等。此外,更重要的是要遵守社区确定的一些规则,来确保在安装集群后立即获得良好的基本安全级别。还建议定期扫描 Kubernetes 集群,以便在其运行时识别任何与配置相关的已知异常。
 

安全上下文

Kubernetes 安全上下文遵循最小权限原则:对应人员应当只获得执行任务所需的权限。安全上下文是一种允许管理员根据每个资源定义安全相关参数的工具,它允许每个资源获得访问主机服务器上的资源所需的特定权限,同时拒绝访问它不特别需要的资源。在 Kubernetes 上下文中,安全上下文定义了 pod 中各个容器的权限。
 

管理安全上下文需要对集群及其安装和生态系统进行高级管理和理解,尽管它们的实现很复杂,但这些措施仍然是限制任何 pod 或容器操作的非常有效的方法。
 

基于角色的访问控制

利用 Kubernetes 基于角色的访问管理 (RBAC) 是保护在平台上运行的集群和应用程序的基本第一步。RBAC 原则非常简单:根据用户身份定义谁可以访问什么。
 
Kubernetes 有一个有效的粒度来管理对不同资源的访问:

  • 用户访问
  • 应用程序访问
  • 用于定义权限的角色仅限于单个命名空间的资源
  • 集群角色以应用集群级别的限制
     

这种粒度与外部身份提供者(如 Okta、Gmail 等)相结合,可以对访问进行非常精细的管理,从而确保对资源的控制以及可审计性。
 

网络政策

网络安全策略管理也是“安全左移”概念的一部分。Kubernetes 网络策略允许管理员和开发人员使用规则限制允许哪些网络流量,“左移”原则允许开发人员在不了解低级网络概念的情况下安全地访问和访问他们的应用程序。
 
DevOps 团队可以强制执行默认策略,开发人员可以管理特定的访问权限,从而使他们在管理应用程序方面具有一定的自主权。网络策略由部署在集群上的容器网络接口 (CNI) 控制。几个 CNI 提供了此功能,但这里有两个值得特别注意:

  • Calico可能是 Kubernetes 生态系统中最著名和使用最广泛的 CNI。在免费版本中,Calico 可以将这些网络规则管理到 OSI 模型的第 3 级。
  • Cilium 是一个很好的替代方案或附加组件,在 OSI 模型上提供了许多免费功能。
     

政策执行

Kubernetes 是一个主要基于 API 的应用程序。这种方法使得开发对这些不同资源的访问控制工具得以运用,以便对其进行审计和保护。准入控制器(Admission Controller)是 Kubernetes 客户端(例如 Kubectl)发出的所有请求的入口点。在此阶段添加检查点可以在执行所有查询之前对其进行验证,从而防止任何偏离公司安全治理的行为。
 

这些控制节点可用于:

  • 检查是否设置了 CPU 和内存限制
  • 确保用户不会更改默认网络策略
  • 确保特定资源始终包含特定标签
  • 拒绝特定资源的权限
  • 防止使用最新标签
  • 为每个新命名空间生成默认网络策略
     

DevOps 团队可以使用多种工具来管理这些安全规则,例如:

  • Open Policy Agent (OPA) 可能是最著名的 Kubernetes 执行策略应用程序。
  • Kyverno 可以使用准入控制和后台扫描来验证、变异和生成配置。Kyverno 策略与任何 Kubernetes 资源一样以 YAML 文件表示,不需要学习新语言。
     

建议企业的 DevOps 团队在任何 Kubernetes 集群的基本配置文件中包含这些工具之一。
 

运行时威胁检测

如之前所提,Kubernetes 并不是一个完全安全的平台,因为它缺乏处理大多数与安全相关的任务的本地工具,例如检测应用程序中的漏洞和监控违规行为。而异常或威胁的实时检测是任何安全治理的要点,同样对于 Kubernetes 平台也不例外。Kubernetes 在数据管理等领域的广泛使用使其安全性成为其业务运营的关键点。
 

过期资源

Kubernetes 是当今 DevOps 世界的主要参与者,因为它的灵活性和对生产中新功能交付有很大的影响。该工具允许开发团队提高他们的部署速度,因此需要特别注意所使用的资源,以免使用过期的资源危及集群的安全性。
 

有不同类型的过期资源:

  • 已弃用的 Kubernetes API
  • 旧的/不推荐使用的 Kubernetes 资源(如 Helm 版本)
     

已弃用的 Kubernetes API 不一定是安全漏洞,但它们会影响集群的生命周期,从而影响其维护。企业需要在更新集群之前在代码存储库和 helm 版本中找到已经弃用的 Kubernetes API,来避免潜在的安全漏洞。确保 Kubernetes 集群的保护还涉及扫描活动资源。作为包管理器,Helm 需要特别注意检查图表的生命周期,并遵循托管资源的每周或每月更新计划。

与DevOps 必备的 Kubernetes 安全清单相似的内容:

DevOps 必备的 Kubernetes 安全清单

Kubernetes 是当今许多公司采用的容器编排平台,它的实施需要对其生态系统有一定的了解,以便部署一个准备好用于生产的集群。然而从原则上来说,Kubernetes 并不是一个安全的平台,因为它缺乏处理大多数与安全相关任务的本地工具。 因此,Kubernetes 的实施工作原理或工具至关重要,这个

devops|中小公司效率为王,没必要度量

之前写过一篇文章《devops|中小公司不要做研发效能度量》,主要是从基础设施方向考虑,因为很多条件都不具备,贸然高投入去做研发效能度量可能达不到我们的预期效果,给出的建议是先做好当下打好基础。今天想到一个好例子,可以类比下。 两个人小家庭 1)人少 2)收入清晰 3)支出清晰,买了什么东西,花了多

DevOps全面综述:从概念到实践

这篇文章详尽介绍了DevOps的背景、核心实践、工具和技术,探讨了团队协作、文化建设及组织变革,旨在帮助企业高效实现持续交付和创新。 关注作者,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕博,复旦机器人智能实验室成员,阿里云认证

[转帖]DevOps 知识点 ——3C 知多少

https://my.oschina.net/u/6148787/blog/5720314 CI / CD 是任何 DevOps 操作的两大基石,这是一种开发软件的方式,旨在生产快速而强大的软件,随时以可持续的方式发布更新。 当例行更改代码时,开发周期会更加频繁、更有意义且更快速。通过此过程,我们可

2023年 DevOps 七大趋势

随着时间的推移,很明显 DevOps 已经成为最高效的敏捷框架中的无人不知晓的名字。越来越多的企业(包括各类规模企业)正在采用 DevOps 方法来简化其运营效率。DevOps 的新时代趋势已经见证了其使用率的持续上升。 由于需求的变化和现代软件的复杂性,如今的公司需要各种各样的平台和操作系统,因此

DevOps 与 FinOps:二者可以协同吗?

DevOps 是一个强调开发人员和运营团队之间的协作和自动化以创建更高效的软件开发生命周期的过程。随着云业务成本逐年攀升,甚至超过传统基础设施成本,许多企业开始转向 FinOps 以有效降本增效。FinOps 与 DevOps 类似,旨在促进协作和效率,但重点是财务运营而非软件开发。在今天的文章中,

DevOps 与平台工程:企业该如何选择?

在之前的文章中,我们熟悉了平台工程的基本概念,包括平台工程的特点、主要优势以及实践原则。通过了解我们不难发现,平台工程与 DevOps 还是有许多相似之处的。例如这两者都是一种文化和方法,旨在通过自动化、自治和协作来简化开发过程。同时,DevOps 与 平台工程都致力于提高软件交付的质量和速度,以及

DevOps 在未来将如何演进?丨行业观察

自2007年 DevOps 这一概念推出以来,越来越多企业开始将开发和运维团队结合在一起,以加快部署速度,提高软件开发生命周期的效率和协作。但是,诸多因素都会对 DevOps 是否成功产生影响,例如组织规模、文化和实施计划等。 随着系统愈发复杂,企业正在寻找新的方法来减轻开发人员的负担,同时加速软件

ChatGPT如何助力DevOps|用例解读

DevOps 是一种方法论,旨在提高软件开发和 IT 运营团队的协作和效率。DevOps 涉及各种任务和流程的自动化,例如规划、编码、测试、部署、监控和故障排除。然而,其中一些任务和流程仍然有大量任务需要人工手动处理,而这会减慢软件产品和服务的交付和质量。随着人工智能技术的快速崛起和扩张,AI 技术

从 DevOps 到平台工程:软件开发的新范式

DevOps 是一种将开发和运营结合起来的方法,在应用规划、开发、交付和运营方面将人员、流程和技术结合起来。DevOps 使以前孤立的角色(如开发、IT运营、质量工程和安全)之间进行协调和合作。一直以来,DevOps 的采用都是以帮助企业更快地向客户提供价值,更好地适应市场和竞争,并保持系统的稳定性