机制|浅谈云上攻防——Kubelet访问控制机制与提权方法研究

背景本文翻译整理自rhino安全实验室:近些年针对kubernetes的攻击呈现愈演愈烈之势,一旦攻击者在kubernetes集群中站稳脚跟就会尝试渗透集群涉及的所有容器,尤其是针对访问控制和隔离做的不够好的集群受到的损害也会越大。例如由unit 42研究人员检测到的TeamTNT组织的恶意软件Siloscape就是利用了泄露的AWS凭证或错误配置从而获得了kubelet初始访问权限后批量部署挖矿木马或窃取关键信息如用户名和密码,组织机密和内部文件,甚至控制集群中托管的整个数据库从而发起勒索攻击。根据微步在线的统计上一次遭受其攻击的IP地址90%以上属于中国,因此需要安全人员及时关注并提前规避风险。Siloscape具体攻击流程如图1所示。
图 1-Siloscape攻击流程
Kubernetes集群中所有的资源的访问和变更都是通过kubernetes API Server的REST API实现的,所以集群安全的关键点就在于如何识别并认证客户端身份并且对访问权限的鉴定,同时K8S还通过准入控制的机制实现审计作用确保最后一道安全底线。除此之外K8S还配有一系列的安全机制(如Secret和Service Account等)共同实现集群访问控制的安全,具体请求如图2所示:
图 2-Kubernetes API请求其中用户所控制的kubectl即每个Node节点都会启用的进程,可以把kubelet理解成【Server-Agent】架构中的agent,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。Kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况。如果没有做好相关的权限管控或其遭受了任何的攻击都可能导致对k8s集群更广泛的危害。如以下图3操作。
图 3-Kubectl操作
K8S认证鉴权认证阶段(Authentication)认证阶段即判断用户是否为能够访问集群的合法用户,API Server目前提供了三种策略多种用户身份认证方式,他们分别如下表1:
认证策略
认证方式
1
匿名认证
Anonymous requests
2
白名单认证
BasicAuth认证
3
Token认证
Webhooks、Service Account Tokens、OpenID Connect Tokens等
4
X509证书认证
clientCA认证,TLS bootstrapping等
表 1-认证
其中X509是kubernetes组件间默认使用的认证方式,同时也是kubectl客户端对应的kube-config中经常使用到的访问凭证,是一种比较安全的认证方式。
鉴权阶段(Authorization)当API Server内部通过用户认证后,就会执行用户鉴权流程,即通过鉴权策略决定一个API调用是否合法,API Server目前支持以下鉴权策略
鉴权策略
概述
1
Always
分为AlwaysDeny和AlwaysAllow,当集群不需要鉴权时选择AlwaysAllow
2
ABAC
基于属性的访问控制
3
RBAC
基于角色的访问控制
4
Node
一种对kubelet进行授权的特殊模式
5
Webhook
通过调用外部REST服务对用户鉴权
表 2-鉴权
其中Always策略要避免用于生产环境中,ABAC虽然功能强大但是难以理解且配置复杂逐渐被RBAC替代,如果RBAC无法满足某些特定需求,可以自行编写鉴权逻辑并通过Webhook方式注册为kubernetes的授权服务,以实现更加复杂的授权规则。而Node鉴权策略主要是用于对kubelet发出的请求进行访问控制,限制每个Node只访问它自身运行的Pod及相关Service、Endpoints等信息。
- 华为|云计算的到来,在你身边有哪些相关联的。怎么看云计算呢(十九)
- 马云|马云自己\打脸\之前所说的,如今现身西班牙,开12亿游艇!
- 云厂商为什么都在冲这个KPI?
- 云计算|云计算的到来,在你身边有哪些相关联的。怎么看云计算呢(十五)
- 金山云|2000元的手机也搭载4nm芯片,为啥还要买四五千元的?看完明白了
- 嘉定这家专业用品市场推出“云逛店”模式
- 蚂蚁森林|马云承诺每年在沙漠里“种树”,如今6年过去了,现在怎么样了?
- 腾讯|微信上车碰壁,腾讯选择“云造车”
- “星云”纯电系统化平台首揭秘,上汽七大技术底座正加快落地
- 马云|马云消失半年后首次露面,奢侈生活现状曝光
