焦点热议:一文读懂最佳 Kubectl 安全插件(上) - 行业动态 -

当前位置:首页  >  行业动态  > 正文

焦点热议:一文读懂最佳 Kubectl 安全插件(上)

焦点热议:一文读懂最佳 Kubectl 安全插件(上)
2023-02-16 05:14:17 来源:腾讯云

Hello folks,我是 Luga,今天我们来聊一聊在 Kubernetes Cluster 编排生态环境中一个至关重要的安全 Topic:Kubectl Plugin。

基于 Go 语言的优势,Kubernetes 在设计上往往具有令人难以置信的可定制性。Kubernetes 支持针对特定用例场景的自定义配置,从而消除了对底层功能应用补丁的需要。因此,插件化便是扩展 Kubernetes 功能和提供开箱即用产品的最佳实践方法。


(资料图片)

让我们更深入地研究 Kubectl Plugin 列表,这里,笔者强烈安利这些插件,毕竟,在实际的业务场景中,基于不同的业务诉求,这些插件可能对任何角色的人员都非常有用,尤其是维护、安全工程师等。

接下来,让我们进入今天的主题 ...‍‍

Kubernetes Plugin 概述

通常情况下,基于 Kubernetes 自身特性,用户可以为 Kubernetes 命令行工具 Kubectl 安装和编写接口扩展以满足实际的业务场景需要。‍

通过将核心 Kubectl 命令视为与 Kubernetes Cluster 交互的基本构建块,集群管理员可以将插件视为利用这些构建块创建更复杂行为的一种方式。

基于插件,我们可以使用新的子命令扩展 Kubectl,以及允许使用 Kubectl 主要发行版中未包含的新功能和自定义功能以满足特定功能的需要。

在实际的业务场景中,Kubernetes 插件能够为所构建的容器平台提供无数的安全优势。基于业务诉求,事件响应者或维护者能够可以使用他们所选择的语言进行“即时”附加功能的扩展或二次开发。

在某些特定的场景中,由于 Kubernetes 功能在企业需要实现“范围外”功能的情况下往往不足,因此,团队通常需要实施自己的自定义插件开发操作。

Kubernetes 安全插件解析‍‍‍‍

在本文中,笔者将从 Krew 插件管理器以及自定义插件开发等 2 个方面简要为大家解析不同场景下的 Kubectl 安全插件实践 。

Krew Plugin

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 的安全状况。

1、 Stern Plugin

作为一个 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 auth

2、Kubectl-trace Plugin

作为另一款 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-capture Plugin

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 Advisor Plugin

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-secret Plugin

kubectl -ssm-secret 插件允许管理员将他们的 Kubernetes Secrets 导入或导出到 AWS SSM Parameter 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、Kubelogin Plugin

若我们的 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-secret Plugin

我们提到了使用 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 访问管理

(责任编辑:news01)
今天最新消息 科学家为6000年前西瓜籽测序 迄今最古老植物基因组破译 全球聚焦

今天最新消息 科学家为6000年前西瓜籽测序 迄今最古老植物基因组破译 全球聚焦

科技日报北京9月6日电(记者刘霞)一个国际科研团队对在利比亚撒哈拉沙漠考古遗址收集的新石器时代的西瓜...
02-10 13:45:26
国家统计局解读:今年1月份CPI有所上涨 PPI继续下降 天天观速讯

国家统计局解读:今年1月份CPI有所上涨 PPI继续下降 天天观速讯

国家统计局网站2023年1月份CPI有所上涨PPI继续下降——国家统计局城市司首席统计师董莉娟解读2023年1月...
02-10 12:01:33
文笔塔是什么意思_文笔塔

文笔塔是什么意思_文笔塔

关于文笔塔是什么意思,文笔塔这个很多人还不知道,今天来为大家解答以上的问题,现在让我们一起来看看...
02-10 11:15:22
热讯:彩讯股份:CMMI5级是当今世界软件能力成熟度难度最大、等级最高的评估,彩讯股份于2019年获得此认证

热讯:彩讯股份:CMMI5级是当今世界软件能力成熟度难度最大、等级最高的评估,彩讯股份于2019年获得此认证

同花顺(300033)金融研究中心2月10日讯,有投资者向彩讯股份(300634)提问,请问,公司获得CMMI5级评...
02-10 10:15:01
每日热门:科创板融资余额增加0.04亿元

每日热门:科创板融资余额增加0.04亿元

截至2月9日,科创板两融余额合计8987亿元,较上一交易日增加92亿元,连续9个交易日增加。其中,融资余额...
02-10 08:53:20
win10任务栏上的天气怎么去掉 每日热文

win10任务栏上的天气怎么去掉 每日热文

win10任务栏上的天气怎么去掉,wi10任务栏上的天气怎么去掉
02-10 06:50:10
卡萨帝阅换礼品

卡萨帝阅换礼品

卡萨帝阅换礼品,您好,首先,您要在百度中购买的礼品卡片的方式,在兑换。你在此页面上搜索的礼品后,...
02-10 06:04:37
播报:康柏显示器_康柏V3000

播报:康柏显示器_康柏V3000

1,康柏V3000:1000-1200差不多刚出来的时候我买的6000,现在大概2000样子吧应该2,康柏显示器osdsperru...
02-10 03:39:24
盘点10款有趣的 六一儿童节送的礼物

盘点10款有趣的 六一儿童节送的礼物

盘点10款有趣的,这一波有趣且有趣的礼物,为儿童节增添很多趣味。当你的正要等候你的礼物的时候,是不...
02-10 02:11:11
鼻子塌的人怎样使鼻梁变高

鼻子塌的人怎样使鼻梁变高

理论上讲,人体是一个有机的整体。所谓牵一发而动全身,身体其他部分的运动也许会对面部造成影响。但这点...
02-10 00:01:04
环球百事通!小孩小孩你别馋过了腊八就是年_小孩小孩你别馋 过了腊八就是年

环球百事通!小孩小孩你别馋过了腊八就是年_小孩小孩你别馋 过了腊八就是年

1、小孩儿,小孩儿你别馋,过了腊八就是年小孩,小孩,你别哭。2、这首歌是《正月里来年儿来到》。3、勤...
02-09 22:50:23
慧辰股份贱卖子公司股权背后的疑问

慧辰股份贱卖子公司股权背后的疑问

在收购北京信唐普华科技有限公司(以下简称“信唐普华”)22%股权两年后,慧辰股份(688500)要大幅打折出售...
02-09 20:11:48
车牌号测吉凶_天天快看

车牌号测吉凶_天天快看

预测结果:车牌号码001HH得分21分吉凶测算『吉』数字命理宇宙起源、天地宇宙开泰的太极数;大展鸿图,信用...
02-09 19:53:39
一件“小案”缘何得到“特殊”关注?取快递女子被造谣出轨案详情披露|焦点热门

一件“小案”缘何得到“特殊”关注?取快递女子被造谣出轨案详情披露|焦点热门

一件“小案”缘何得到“特殊”关注?取快递女子被造谣出轨案详情披露
02-09 18:18:24
【环球新要闻】保丽洁(832802)龙虎榜数据(02-09)

【环球新要闻】保丽洁(832802)龙虎榜数据(02-09)

沪深交易所2023年02月09日公布的交易公开信息显示,保丽洁因成为当日换手率达到20%的证券而登上龙虎榜。
02-09 16:42:32
如何单独给手机相册加密_怎么给手机相册加密

如何单独给手机相册加密_怎么给手机相册加密

1、安卓手机相册怎么加密?相信这个问题是很多安卓智能手机用户非常想知道的,因为相册涉及很多个人隐私...
02-09 16:06:27
全球热点评!北京菜百黄金价格今天多少一克(2023年02月09日)

全球热点评!北京菜百黄金价格今天多少一克(2023年02月09日)

北京菜百黄金价格今天多少一克,菜百今日金价查询(2023年02月09日)
02-09 14:55:31
世界速读:得分王之争榜首再易主:恩比德遭东契奇反超 仅差0.1分悬念大

世界速读:得分王之争榜首再易主:恩比德遭东契奇反超 仅差0.1分悬念大

得分王之争榜首再易主:恩比德遭东契奇反超仅差0 1分悬念大,哈登,76人队,美国篮球,阿德托昆博,得分王之...
02-09 12:04:22
广州地铁早上几点开始运行 广州地铁时刻表 天天热讯

广州地铁早上几点开始运行 广州地铁时刻表 天天热讯

1、广州地铁早上6:10分开始运行。2、广州地铁时刻表:广州地铁1号线,首末班车时间:广州东站06:10-23:...
02-09 11:51:50
独家资金:早盘主力买入前10股

独家资金:早盘主力买入前10股

独家资金:早盘主力买入前10股
02-09 10:50:41
当前热文:家联科技2月9日快速上涨

当前热文:家联科技2月9日快速上涨

以下是家联科技在北京时间2月9日09:43分盘口异动快照:2月9日,家联科技盘中快速上涨,5分钟内涨幅超过2...
02-09 09:38:07
拖男挈女是什么意思? 含义是什么

拖男挈女是什么意思? 含义是什么

1、拖男挈女释义:带领着儿子和女儿,比喻路途艰苦和生活的艰难。2、选自:喊一声,都拖男挈女,呼弟呼兄,...
02-09 07:56:13
摩根大通CEO戴蒙:如果通胀被证明具有粘性,美联储可能会加息至5%以上。|环球信息

摩根大通CEO戴蒙:如果通胀被证明具有粘性,美联储可能会加息至5%以上。|环球信息

摩根大通CEO戴蒙:如果通胀被证明具有粘性,美联储可能会加息至5%以上
02-09 06:59:41
当前热议!团结友爱的格言

当前热议!团结友爱的格言

单丝不成线,独团结一致,同心同德,任何强大的敌人,任何困难的环境,都会向我们投降。团结友爱的格言1...
02-09 04:16:44
宝岛眼镜店装修效果图_宝岛眼镜店 当前信息

宝岛眼镜店装修效果图_宝岛眼镜店 当前信息

1、宝岛眼镜店是好,质量不错,不过就有一点比较贵。2、所以现在很多人都不去实体店买眼镜了,情愿去网...
02-09 03:57:42
北京中小学生2月13日重返校园 建设高质量基础教育体系

北京中小学生2月13日重返校园 建设高质量基础教育体系

中新网北京2月8日电(记者杜燕)北京市中小学生将于2月13日重返校园。北京教育系统坚持以学生的健康成长为...
02-09 01:48:49
如何开发儿童智力|世界今日讯

如何开发儿童智力|世界今日讯

智力是人的一种心理品质,它具有无法观察到的特点,关于智力的概念是国内外长期争论的问题,至今没有一...
02-09 00:17:06
ST交投(002200.SZ)联合体中标师宗县城乡绿化美化提升及污水处理厂二期建设项目 世界头条

ST交投(002200.SZ)联合体中标师宗县城乡绿化美化提升及污水处理厂二期建设项目 世界头条

ST交投(002200 SZ)联合体中标师宗县城乡绿化美化提升及污水处理厂二期建设项目
02-08 23:01:09
忻州古城客如潮 文明赏灯度元宵 世界新视野

忻州古城客如潮 文明赏灯度元宵 世界新视野

忻州古城客如潮文明赏灯度元宵
02-08 21:11:15
当前快看:2022最新五一劳动节调休时间公布

当前快看:2022最新五一劳动节调休时间公布

我们对五一劳动节的普遍印象就是,这是个节假日,又能出门玩了,或者是可以休息几天,放松一下。那么关...
02-08 20:23:20

为您推荐

精彩推送