一文读懂最佳 Kubectl 安全插件(上) 今日聚焦
Hellofolks,我是Luga,今天我们来聊一聊在 KubernetesCluster编排生态环境中一个至关重要的安全Topic:Kubectl
Hello folks,我是 Luga,今天我们来聊一聊在Kubernetes Cluster 编排生态环境中一个至关重要的安全 Topic:Kubectl Plugin。
基于 Go 语言的优势,Kubernetes 在设计上往往具有令人难以置信的可定制性。Kubernetes 支持针对特定用例场景的自定义配置,从而消除了对底层功能应用补丁的需要。因此,插件化便是扩展 Kubernetes 功能和提供开箱即用产品的最佳实践方法。
让我们更深入地研究 Kubectl Plugin列表,这里,笔者强烈安利这些插件,毕竟,在实际的业务场景中,基于不同的业务诉求,这些插件可能对任何角色的人员都非常有用,尤其是维护、安全工程师等。
【资料图】
接下来,让我们进入今天的主题 ...
KubernetesPlugin概述
通常情况下,基于 Kubernetes 自身特性,用户可以为 Kubernetes 命令行工具Kubectl 安装和编写接口扩展以满足实际的业务场景需要。
通过将核心 Kubectl 命令视为与 Kubernetes Cluster 交互的基本构建块,集群管理员可以将插件视为利用这些构建块创建更复杂行为的一种方式。
基于插件,我们可以使用新的子命令扩展 Kubectl,以及允许使用 Kubectl 主要发行版中未包含的新功能和自定义功能以满足特定功能的需要。
在实际的业务场景中,Kubernetes 插件能够为所构建的容器平台提供无数的安全优势。基于业务诉求,事件响应者或维护者能够可以使用他们所选择的语言进行“即时”附加功能的扩展或二次开发。
在某些特定的场景中,由于 Kubernetes 功能在企业需要实现“范围外”功能的情况下往往不足,因此,团队通常需要实施自己的自定义插件开发操作。
Kubernetes安全插件解析
在本文中,笔者将从 Krew插件管理器以及自定义插件开发等 2 个方面简要为大家解析不同场景下的Kubectl 安全插件实践。
KrewPlugin
Krew 是由 Kubernetes 特别兴趣小组 (SIG) CLI 社区维护的插件管理器。从本质上来讲,Krew 本身就是一个插件,基于此 ,使得 Kubectl 所维护插件的使用变得更加容易,并能够帮助我们在机器上发现、安装和管理它们,类似于 apt、dnf或brew等工具。其项目地址:https://github.com/kubernetes-sigs/krew
截至目前,Krew 上已经提供了 210 多个 Kubectl 插件——而且这个数字还在不断增加。随着时间的推移,一些项目被积极使用,同时,一些项目也被逐渐弃用,但仍然可以通过 Krew 访问。
作为一款强大的插件及平台,Krew 适用于所有主流平台,例如 macOS、Linux 和 Windows。对于 Kubectl 用户:Krew 帮助我们以一致的方式查找、安装和管理 Kubectl 插件。除此,Krew 还能过帮助 Kubectl 插件开发人员:使得我们在多个平台上打包和分发所构建的插件,并通过 Krew 的集中式插件存储库使得它们可被发现。
通过 Krew 安装 Kubectl 插件的命令,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install 通过 Krew 插件索引提供的 Kubectl 插件若未经审计,这可能会导致供应链出现问题。如上述所述,Krew 插件索引包含数百个 kubectl 插件:https ://krew.sigs.k8s.io/plugins/
当我们无意或有意安装和运行第三方插件时,可能需要自行承担未知的潜在风险。归根结底,Kubectl 插件只是一个在 Shell 中运行的任意程序而已。
这里,笔者将为大家分享如下不同的 Kubectl 安全插件,基于大家的实际业务环境,使得这些插件或多或少能够改善我们所构建的Kubernetes Cluster 的安全状况。
作为一个 Kubectl 插件,Stern 的工作方式更像 Linux 系统命令中的 “tail -f”。与kubectl log -f不同的是,kubectl log -f 对输入参数有其自身的限制,而 Stern 则允许我们将 Pod ID 和 Container ID 指定为正则表达式。
Stern遵循任何匹配并将输出多路复用在一起,以 Pod 和容器 ID 为前缀,并进行颜色编码以供大家使用。
我们可以使用以下 Krew 命令安装 Stern,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install stern在 Stern 中跟踪应用程序名称的命令,具体如下:
[leonli@Leon ~ % ]kubectl stern appname这将匹配任何包含单词 Service 的 Pod 并监听其中的所有容器。如果我们只想查看服务器容器 Container 的流量,可以这样操作:
[leonli@Leon ~ % ]kubectl stern --container这将流式传输所有服务器容器的日志,即使在多个 Pod 中运行也是如此。
Stern 插件的一个有趣的安全用例便是查看 Kubernetes Cluster 的身份验证活动。若要显示过去 15 分钟内的身份验证活动以及突出显示的相关时间戳详情,我们可以运行如下命令查看:
[leonli@Leon ~ % ]kubectl stern -t --since 15m auth2、Kubectl-tracePlugin
作为另一款 Kubectl 安全插件,Kubectl-trace允许我们在 Kubernetes Cluster 中安排 bpftrace 程序的执行。简而言之,Kubectl-trace 插件是一个在 Kubernetes Cluster中进行分布式跟踪的工具。它允许请求通过集群的不同组件(包括 Pod、服务和入口控制器)时跟踪请求的执行情况。
我们可以使用以下 Krew 命令安装Kubectl-trace插件,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install trace使用 Kubectl-trace 插件的一个潜在安全优势是它可以帮助我们识别和解决与集群内请求处理相关的问题。例如,如果怀疑某个特定请求由于集群中的某些问题而被阻止或减慢,我们可以使用 Kubectl-trace 来跟踪请求在集群中传播并确定问题的根源。
这个插件运行一个程序来探测所选节点上的跟踪点:
[leonli@Leon ~ % ]kubectl trace run -e "tracepoint:syscalls:sys_enter_* { @[probe] = count(); }" 另一个潜在的安全优势是 Kubectl-trace 可以帮助我们了解请求是如何在集群中处理的,这对于识别潜在的漏洞或错误配置很有用。例如,如果发现某个请求正在由遭到破坏的 Pod 或服务处理,我们可以使用 Kubectl-trace 来跟踪该请求并确定问题的来源。
总的来说,Kubectl-trace 插件可以通过帮助识别和解决与请求处理和执行相关的问题来提高 Kubernetes 集群的安全性。
3、Kubectl-capturePlugin
Sysdig 开源(Sysdig Inspect)的一个用于容器故障排除、性能调优和安全调查的强大工具。Sysdig 的团队创建了一个 Kubectl 插件,它在运行 Pod 的底层主机中触发数据包捕获。
我们可以使用以下 Krew 命令安装kubectl-capture插件,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install kubectl-capture数据包捕获对于 Kubernetes 中的事件响应和取证非常有用。捕获文件在一段时间内创建并下载到本地,以便将其与Sysdig Inspect一起使用,Sysdig Inspect 是一个强大的开源界面,旨在直观地导航数据密集的 Sysdig 捕获,其中包含细粒度的系统、网络和应用程序活动 Linux 系统。
只需对集群中任何正在运行的 Pod 运行以下命令:
[leonli@Leon ~ % ]kubectl capture kinsing-78f5d695bd-bcbd8在旋转捕获容器时,需要一些时间来编译 Sysdig 内核模块和捕获系统调用。完成后,我们可以从工作站读取 Sysdig Inspect UI 中的内容,如下所示:
使用这些工具,分析人员将更容易找到问题的根源或审核发生的情况。如果想更深入,可以阅读使用 Sysdig Inspect 进行容器故障排除或对恶意容器进行分类。
4、Kube Policy AdvisorPlugin
Kube-policy-advisor 插件为所构建的 Kubernetes 集群建议 PodSecurityPolicies 和 Open Policy Agent (OPA) 策略。虽然PodSecurityPolicies 已被弃用,因此不应使用,但 OPA 是非常推荐的准入控制器工具。
我们可以使用以下 Krew 命令安装advise-policy 插件,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install advise-policy这个 Kubectl 插件为 Kubernetes Cluster 提供安全性和合规性检查,除此之外,可以帮助识别集群配置中潜在的安全风险和违反最佳实践的行为,并提供有关如何修复这些问题的建议。kube-policy-advisor 可以执行的检查类型的一些示例包括:
(1)确保 Pod 以最低权限运行,并且不会被授予不必要的权限;
(2)检查密钥和其他敏感数据是否未以纯文本形式存储或签入源代码管理;
(3)验证网络策略是否到位以防止对资源的未授权访问;
(4)评估容器镜像的安全性并确保它们来自可信来源。
在 Kubernetes 中,准入控制器在创建、更新和删除操作期间强制执行对象的语义验证。使用 OPA,我们可以在 Kubernetes 对象上实施自定义策略,而无需重新编译或重新配置 Kubernetes API Server。
作为一种策略工具,Kube-policy-advisor可以更轻松地从实时 K8s 环境或从包含 Pod 规范(Deployment、DaemonSet、Pod 等)的单个 .yaml 文件创建 OPA 策略。在下面的命令中,插件能够检查任何给定的命名空间以打印报告或 OPA 策略。
[leonli@Leon ~ % ]kubectl advise-policy inspect --namespace=注意:如果不输入给定的命名空间,默认情况下,它将为所有网络命名空间生成 OPA 策略。
通过使用 Kube-policy-advisor 插件,其能够可以帮助确保我们的 Kubernetes Cluster 安全并符合最佳实践,从而有助于保护我们的应用程序和数据免受潜在威胁。
5、Kubectl-ssm-secretPlugin
kubectl-ssm-secret 插件允许管理员将他们的Kubernetes Secrets导入或导出到AWS SSMParameter Store 路径或从中导出。Kubernetes Secret 是在 Kubernetes Cluster 环境中使用的敏感信息,例如,密码或访问密钥。在 Kubernetes 和 AWS 云之间传输时,能够安全地控制这些敏感凭证非常重要。
我们可以使用以下 Krew 命令安装ssm-secret 插件,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install ssm-secret当然,密钥并不是 Kubernetes 独有的。我们几乎可以在所有类型的现代应用程序环境或平台中使用 Secrets 的数据。对于 ssm-secret 插件,在给定参数存储路径下找到的所有参数都可以作为“StringData”导入到单个 Kubernetes Secret 中。
如果我们正在重新配置集群或命名空间并且需要一遍又一遍地配置相同的密钥时,这将非常有用。此外,备份/恢复我们的 LetsEncryp t或其他证书可能很有用。
如果路径 /foo/bar 的 AWS 参数包含一个密钥值,并且参数 /foo/passwd 包含一个安全密码,我们可以使用 kubectl ssm-secret list 子命令查看参数存储中的键和值,具体如下:
[leonli@Leon ~ % ]kubectl ssm-secret list --ssm-path /foo然后,可以使用以下导入命令导入这些输出参数,具体如下:
[leonli@Leon ~ % ]kubectl ssm-secret import foo --ssm-path /foo需要注意的是,我们必须为此插件指定一个参数存储路径才能工作。它不会在给定路径下递归搜索超过一个级别。因此,该插件非常固执己见,如果用户没有正确跟踪这些路径,他们将面临无法将密钥导入/导出到正确路径的风险。
6、KubeloginPlugin
若我们的Kubernetes Cluster环境运行的是 Kubectl v.1.12 或更高版本,Kubelogin(也称为“kubectl-login”)是一个非常有用的安全插件,用于通过 CLI 登录集群。它通过像 DEX 这样的 OpenID Connect 提供商来实现这一点。OpenID Connect 是 OAuth 2.0 协议之上的一个简单身份层。它允许客户端根据授权服务器执行的身份验证来验证最终用户的身份,并以可互操作和类似 REST 的方式获取有关最终用户的基本配置文件信息。
我们可以使用以下 Krew 命令安装kubectl-login插件,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install kubectl-login我们的 OpenID Connect 提供商必须具有 OpenID 配置中列出的 Kubernetes API 客户端的默认回调端点:
[leonli@Leon ~ % ]http://localhost:33768/auth/callback这个 Kubectl 插件从.kube/config获取 OpenID Connect (OIDC) 颁发者 URL ,因此它必须放在我们的.kube/config中。对 kubeconfig 文件进行此更改后,我们可以继续使用分配给 OIDC 提供商的用户名,具体如下:
[leonli@Leon ~ % ]kubectl login nigeldouglas-oidc在CLI 中执行此命令后,将打开浏览器并重定向到 OpenID Connect 提供程序登录页面。在 OIDC 提供商端成功验证后,我们的 kubeconfig 文件中的令牌将被替换。
7、Kubectl-whisper-secretPlugin
我们提到了使用 Kubectl-ssm-secret 插件保护敏感凭证(如“Secrets”)的重要性。whisper-secret 插件专注于创建具有改进隐私的秘密。该插件允许用户通过安全输入提示创建秘密,以防止通过终端 (bash) 历史、shoulder surfing攻击等方式泄露信息。
我们可以使用以下 Krew 命令安装whisper-secret 插件,具体如下所示:
[leonli@Leon ~ % ]kubectl krew install whisper-secret“kubectl create secret”有几个我们最常使用的子命令,它们可能会以多种方式泄露敏感信息,如上所述。例如,我们可以使用纯文本密码通过“kubectl create secret”命令连接到 Docker 注册表以进行身份验证。
[leonli@Leon ~ % ]kubectl create secret docker-registry my-secret --docker-password nigelDouglasP@ssw0rD“kubectl whisper-secret”插件允许用户通过安全输入提示为包含敏感信息的字段(如 --from-literal和--docker-password )创建密钥。
[leonli@Leon ~ % ]kubectl whisper-secret docker-registry my-secret --docker-password -- -n nigel-test --docker-username 然后系统会提示输入 Docker 密码,但这不会插入命令本身。这样,密码就不会以纯文本值的形式出现在 bash 历史记录中,从而提高了安全性。
因此处内容涉及面较广,由于时间关系,本文解析到此为止,希望对大家有用。关于Kubectl 安全插件更多需要了解的信息,将在下一篇博文中介绍,欢迎大家交流、关注!最后,给大家推荐一本云原生书籍,如下所示,对于新人或许有一定的帮助。
Adiós!
关键词: Kubernetes 访问管理
Hellofolks,我是Luga,今天我们来聊一聊在 KubernetesCluster编排生态环境中一个至关重要的安全Topic:Kubectl
有时候我们和朋友聊天或者做其他输入操作的时候会发现不会打字。这种现象体现在电脑右下角的语言栏消失了。这个时候,我们往往不知所措。我们
我们针对全国31个省份在2022年的现房销售面积、同比增速、近3年销售面积占比等统计后发现,2022年,部分省份的现房销售增速高于预期,如云南、
春天到,万物生,传说中一年中最重要的“长高黄金期”到了!世界卫生组织的一项研究也证实,孩子的生长发育有显著的季节性,其中春季(3-5月)长
1
小米3多少钱?小米16GB版1999元,64GB版2499元。小米3搭载夏普 LG的全高清IPS屏幕,采用OGS全贴合技术。屏幕尺寸为5英寸,分辨率为1080P
1、说到嵌入式中控导航,汽车后市场真的是琳琅满目。品牌白(宇)华(龙)齐(魂)方(za)价格参差不齐,往往驱使一些想改装原厂中控的车主,不知如何
上海作为精致餐饮消费的风向标,本次上榜餐厅数多达66家,新上榜餐厅共12家,是中国内地新上榜餐厅最多的城市;北京拥有38家上榜餐厅,覆盖海
公告称,公司不再将锂电池生产作为未来发展方向,公司相关的锂电池制造已经停产,已不具备研发、生产锂电池的相关条件。
起名时什么是最重要的?第一、名字要好听,寓意好,利于书写好听:名字使用普通话和地方方言读起来都是朗朗上口的。寓意:名字
2022年山西发放25亿元消费券促经济回暖---山西省太原市,居民在超市选购蔬菜(资料图)。中新网太原2月9日电记者9日从山西省商务厅获悉,2022
经济继续复苏,外资继续加码。中国经济强势复苏点燃全球投资者情绪,海外资本正以2018年来最猛势头涌入中国资产,年初流入中国股市的外资规模
1、刚刚进入12月,虽然中国很多地区中午阳光明媚,但空气湿度大,气温始终徘徊在零摄氏度左右。早晚通勤的朋友会明显感觉到一股阴冷的气息;在
交警提醒,高速路上车流量大车速快,应急车道不是停车场,非紧急情况下请勿随意停车。交警认定,小货车驾驶人胡某,在没有观察后方来车情况下
锡业股份(000960)02月09日在投资者关系平台上答复了投资者关心的问题。
2022年春节放假安排:1月31日至2月6日放假,总共7天,其中1月29日和30日上班。除夕(1月31日)、农历大年初四至初六:休息日安排劳动者工作又不能安排补
同花顺(300033)金融研究中心2月9日讯,有投资者向珠城科技(301280)提问,公司是否也有ChatGPT方向发展公司回答表示,尊敬的投资者,您好。公
一、关于玢怎么读的读法1、读法:[bīn]2、读法:[fēn]二、关于玢怎么读的释义3、[bīn]释义:1
1、出自石成金《传家宝·俗谚》,意思是:不一定年龄大的人才有理想,一个没有远大志向的人。2、即便活到很大的岁数也是虚度光
汇添富移动互联股票(000697)基金净值行情查询(2020年06月12日),2020年06月12日汇添富移动互联股票(000697)基金价格是多少?南方财富网为