共计 2849 个字符,预计需要花费 8 分钟才能阅读完成。
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 须要特地留神查看图表的生命周期,并遵循托管资源的每周或每月更新打算。