如何验证 Kubernetes YAML 文件

news2025/2/27 5:50:20

原文出自:Armo’s blog 原文作者:Bezalel Brandwinen,,Team Lead at Armo Ltd

Kubernetes 在我们现在如何管理容器化应用程序方面占据了中心位置。因此,存在许多定义我们的 的协议,包括 、JSON、INI 等结构。

这使得我们会去考虑,什么是我们的应用程序应遵循的最佳策略。此外,我们还必须清楚,如何根据我们在文件结构,特别是安全性方面,选择路径来验证我们的应用程序配置。

在本文中,我们将探索如何使用 YAML 配置定义 Kubernetes 应用程序,以及哪些是我们可以采取的步骤,来有效验证这些配置定义。

YAML 中的 Kubernetes 配置定义

与 JSON 和 INI 相比, YAML更加紧凑和可读。比如我们定义一个80端口可以访问的pod,那么YAML、JSON、INI中的配置如下表所示:
YAML 中的 Kubernetes 配置定义

很明显,YAML 简化了我们定义 Kubernetes 应用程序的方式,特别是考虑到一个普通的应用程序可能涉及数十个配置文件。此外,YAML 的紧凑特性允许您将对象组合在一起,从而减少所需文件的数量。

但是,定义我们的 Kubernetes 配置文件存在重大挑战,尤其是在尝试在清单文件之间嵌入约束和关系时。例如,我们如何确保内存限制配置为遵循最佳实践?

当遇到边缘情况时,缺乏验证不仅会导致我们的应用程序出现意外,而且还会暴露主要的安全漏洞。因此,我们有必要考虑基于 YAML 的配置文件的验证策略,这就是我们将在以下部分中深入探讨的内容。

验证的各个方面

应该对我们的 YAML 文件执行三个级别的验证。这些级别确保根据 YAML 文件的实际有效性执行验证,一直到是否满足安全实践。

第一级是结构验证,这是对 Kubernetes 配置文件进行的最高级别的验证。它涉及简单地验证 YAML 文件,以确保在编写它时没有语法错误。这是编写配置文件时使用的 IDE 可以验证的内容。

第二层是语义验证,这确保 YAML 文件的内容转换为所需的 Kubernetes 资源,从而验证 Kubernetes 应用程序本身。

第三个是最深层次的验证,安全验证, 以确保定义的 Kubernetes 应用程序没有任何漏洞。我们可能已经成功地编写了 以成功实现所需的 Kubernetes 资源和连接,但这并不能确保我们的 Kubernetes 应用程序得到很好的保护并遵循最佳实践。上面最后两个验证都是Kubernetes配置验证,并不仅仅在方面。由于它们是特定于应用程序的验证,因此专门的诊断是必要的。执行此类验证需要 Kubernetes 领域的深入专业知识,我们将简要介绍如何使用 Kubernetes 领域专家开发的工具轻松处理它们。

例如,锁定 hostPath 挂载权限可确保集群中具有可写 hostPath 卷的容器不会被攻击者访问,因为他们可能会在底层主机上获得持久性。这不符合安全最佳实践,为避免此问题,我们应始终确保将 hostPath 属性下的readOnly 部分设置为 true。

另一个示例是仅在必要时授予 hostNetwork 对 pod 的访问权限。所有具有访问权限的 pod 也应列入白名单。对主机网络的不必要访问增加了潜在的攻击面。

所以,从上面两个例子可以看出,即使我们的配置文件通过了结构和语义验证,促使我们的 Kubernetes 资源被成功编排,但安全和功能漏洞仍然可能存在。因此,我们必须考虑如何最好地捕获这些漏洞,然后再提醒生产中的后果。安全验证是执行此操作的方法。

另一个示例是仅在必要时授予 hostNetwork 对 pod 的访问权限。所有具有访问权限的 pod 也应列入白名单。对主机网络的不必要访问增加了潜在的攻击面。

所以,从上面两个例子可以看出,即使我们的配置文件通过了结构和语义验证,导致我们的 Kubernetes 资源被成功编排,安全和功能漏洞仍然可能存在。因此,我们必须考虑如何最好地捕获这些漏洞,然后再提醒生产中的后果。安全验证是执行此操作的方法。

验证和最佳实践

考虑到结构验证相当简单,可以预期可用的工具目前是可以在您的 IDE 中轻松获得。Kubernetes 语义和安全验证需要更多的努力,尤其是在策略和工具方面。

让我们考虑一些最佳实践和策略,这些实践和策略需要实现对我们的 YAML 文件的整体验证。

始终左移

我们可能总是验证我们的 K8s 配置,即使我们已经使用 Kubescape 等工具将它们部署在集群中,但“左移”总是更好。左移是一个在过去五六年里火了起来的词,这是理所当然的。您希望使验证更接近应用程序的交付和构建阶段。

例如,语义验证是 Kubernetes 本身可以处理的事情。但是,当您将其交给 Kubernetes 处理时,为时已晚。

您可以执行空运行 ( kubectl apply -f --dry-run=‘server’’) 来验证语义结构,但这仍然是一个额外的步骤,可能会降低您的整体速度。但是,试运行需要您有权访问 Kubernetes 集群。

这种方法的替代方法是 Kubeval,这是一个了不起的工具,可用于验证您的配置文件语义以确保它们满足 Kubernetes 的对象定义要求。它可以成为您的 CI 过程的一部分并在本地执行扫描,从而确保您在投入生产之前从语义上验证您的配置文件。

还可以使用 Kubescape在 CI 中实现安全验证。这是一个开源工具,可确保您的 Kubernetes 应用程序定义遵循多个安全框架,例如 NSA-CISA 或 MITRE ATT&CK®。通过使用 Kubescape CLI,您可以扫描所有 YAML 文件以查找安全漏洞,甚至可以获得风险评分和风险趋势。它充当 YAML 验证器 ,其主要价值是安全验证。

DevOps 到 DevSecOps

您可以运行 CI 管道中已经讨论过的工具组合,以实现结构、语义和安全验证。然而,仅使用这些工具及其预定义的检查是不够的。

我们从 DevOps 中学到的一件事是,总有一个可以采用的改进周期。这就是为什么随着您的应用程序的发展和您的安全需求的变化,您应该不断检查您的安全控制。

新的安全控制是您应该纳入安全验证步骤的东西。Kubescape 是 AMRO 的开源平台,允许您定义自己的控件框架。尽管开箱即用的框架非常强大,但您会看到您的策略控制是根据您的业务和 Kubernetes 资源的确切需求而形成的。

只有将安全问题嵌入到您构建应用程序的文化中,才能实现这种做法。多亏了 Kubeval 和 Kubescape 等开源工具,您的开发团队不断思考验证,尤其是安全验证的障碍已经降低。

结论

YAML 配置文件使构建 Kubernetes 应用程序变得非常简单。然而,YAML 在验证方面确实有其局限性。因此,我们有必要了解所有验证策略,以确保我们构建的 Kubernetes 应用程序健康且安全。

在任何 IDE 中使用 YAML 测试验证 YAML 文件的结构都相当简单,但验证 Kubernetes 资源对象定义的正确性和围绕它们的安全措施却很困难。幸运的是,诸如 Kubescape 之类的工具弥补了这一差距,让您可以在整个应用程序生命周期中不断思考安全问题。

由于安全性是当今构建容器化应用程序的主要关注点之一,因此此处讨论的验证策略是朝着正确方向迈出的一步。


戳链接,免费获取K8s多云多集群管理解决方案>>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化测试中对数据恢复的思考与实际业务改造实践

在接口自动化测试过程中,构造测试数据是必不可少的一个环节,但如何恢复测试数据也同样值得关注。业内常见的做法有: 1、不恢复:如果是没什么影响的数据,不恢复也无所谓,缺点就是会造成大量数据冗余&#x…

2022 年 10 月区块链操作系统的开发回顾

查看 Cartesi Machine、Cartesi Rollups 和 Noether 的更新正在寻找区块链操作系统组件的最新进展?你找对地方了!正如在我们的路线图文章中所描述的那样,我们一直在朝着定期且频繁的更新方向发展着,以便让我们的社区能够及时的了解…

【前端】Ajax

目录 一、服务器对外提供了哪些资源 二、了解Ajax 2.1什么是Ajax 2.2Ajax作用 三、jQuery中的Ajax 3.1$.get()函数的语法 3.2$.post()函数的语法 3.3$.ajax()函数的语法 四、接口 4.1接口的概念 4.2接口测试工具 4.3接口文档 一、服务器对外提供了哪些资源 如果要在…

1.1小程序内置tabbar和自定义tabbar区别

文章目录内置tabbar自定义 tabbar创建文件夹 custom-tab-bar发现小程序自定义tabBar切换颜色总是比点击慢一步switchtab报错“switchTab:fail page “pages/home/pages/message/message” is not found”直接在微信开发文档内搜索,出现的是自定义 tabbar &#xff0…

用HTML+CSS做一个简单好看的校园社团网页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园班级网页设计 | 我的班级网页 | 我的学校 | 校园社团 | 校园运动会 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构 …

C# 零基础搭建一个简单的Asp.Net Core WebAip

下面介绍的vs2022 基于.NET 6 搭建的一个简单的Asp.Net Core WebAip 一、创建aps.net core Web Aip 1、创建一个新的Asp.Net Core WebApi 项目 启动vs2022,在开始页面选择“创建新项目(N)”。 选择从C#的asp.net core WbeApi 作为一个初始的WebApi模板。 点击下…

C++初阶 List的介绍和使用

作者:小萌新 专栏:初阶C 作者简介:大二学生 希望能和大家一起进步 博客简介:本篇博客会简单介绍List和它的用法 List的介绍和使用List介绍List的使用方式List的定义方式List的插入与删除push_front pop_frontpush_back pop_backi…

虚拟机磁盘扩容(纯命令行)

背景:磁盘使用率达到100%,无大数据文件可删除,需要进行磁盘扩容 步骤: 1.虚拟机调高分配给磁盘的大小 2.启动虚拟机,查看磁盘是否扩容 fdisk -l 3.扩容磁盘分区 fdisk /dev/sda 先输入p查看当前情况 输入d&#xf…

Flash、eeprom、rom、ram

存储器 ramrom rom: 不能编程prom: 可以写入一次eprom: 多次擦写, 需要在紫外线照一下eeprom: 任意修改 狭义EEPROM:广义EEPROM: flash nor flash: 字节读, 块擦除nand flash: 页读取, 块擦除 ROM&RAM EEPROM 可随机访问/修改任意字节, 可向每个bit写入0/1, 掉电不丢…

【附源码】计算机毕业设计JAVA传统文化知识竞赛系统

【附源码】计算机毕业设计JAVA传统文化知识竞赛系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA…

推荐一本计算机领域可以发的2区计算机智能医疗类SCI

本期小编给大家推荐的是我处新增的一本TECH SCIENCE PRESS旗下2区智能医疗类SCI. 这本期刊是一本经同行评审的开放获取期刊,出版计算机网络、人工智能、大数据、软件工程、多媒体、网络安全、物联网、材料基因组、集成材料科学以及数据分析、建模、现代功能和多功…

同花顺_代码解析_五彩K线

本文通过对同花顺自带的五彩K线进行解析,用以了解同花顺相关策略设计的思想。 目录 早晨之星 黄昏之星 十字星 长十字星 垂死丁字 射击之星 穿头破脚 红三兵 三只乌鸦 光头阳线 红绿灯 早晨之星 行号 1 a1 -> K线实体长度是开盘价的0.5%以下&…

MAX25————用vray还原模型在Substance Painter的光照以及材质效果

现在很多小伙伴喜欢在Substance Painter(俗称SP)里面做贴图。但是经常很苦恼,sp里做出的效果,导出来,放到unity或者max里面再渲染,光照跟材质效果就都变了。其实很简单,做到以下几点。就可以还原…

我的有趣的英语学习经历

文 / 谷雨(微信公众号:王不留) 我是一个社牛,大大咧咧,与人交往,不会瞻前顾后。 上半年,大四即将毕业,我闲来无事,突然脑袋发热,想找原版《经济学人》翻翻。于…

第十一届蓝桥杯国赛C++B组题解(A - J)

第十一届蓝桥杯国赛CB组 美丽的2 题目地址:https://www.lanqiao.cn/problems/1018/learning/ 难度:简单 知识点: 模拟枚举 【题目描述】 ​ 1−20201-20201−2020 中有多少个数中含有数字2 【解题思路】 范围很小,直接暴力判断…

c盘垃圾太多怎么清理?c盘垃圾太多需要重装系统嘛?

一台电脑为了方便大家平时使用过程中存储各种文件,会为用户们规划多个不同的磁盘,当然这些磁盘大家也可以使用一些工具来自己设置,其中最为重要的就是C盘了,作为系统磁盘C盘里面会存储大量的文件,这些文件并不是系统必…

思必驰周强:AI 和传统信号技术在实时音频通话中的应用

如何用 AI 解决声音传输&处理中的三大问题?三大问题又是哪三大问题? 在「RTE2022 实时互联网大会」中,思必驰研发总监 周强以《AI 和传统信号技术在实时音频通话中的应用》为题进行了主题演讲。 本文内容基于演讲内容进行整理&#xff0…

MySql表的基本增删改查详解

目录创建表create表中--插入数据--“增”单行,全列插入多行插入插入重复则-更新插入重复则-替换插入查询结果表中--检索数据--“查”全列查询指定列查询查询字段为表达式给查询结果指定别名WHERE 限定条件比较运算符逻辑运算符where使用实例模糊匹配ORDER BY排序筛选…

语音分类入门案例: 英文数字音频分类

语音分类入门案例: 英文数字音频分类本项目是一个全流程的语音分类项目,内容简单,适合想要涉猎音频分类的小白学习。 推荐将本项目Fork成为自己的项目并运行,以获得更好的学习体验!! 项目地址:语音分类入门:全流程英文…

浅谈企业的数据安全体系建设难点

随着云计算、大数据、物联网、移动互联网、人工智能等新技术的发展,网络边界被不断打破,数字双生、敏捷创新、安全合规驱动快速转型,社会和企业都在面临数字化的转型带来的数据安全风险。 近年来数据泄露的安全事件频发,国家和机…