关于 KubeArmor 的闲言碎语

2021-06-15 16:00:40 浏览数 (1)

早上看到了一篇关于 KubeArmor 的简介,觉得还挺新鲜的,就坐下看了一下介绍,并没有进行实际的测试,把它和我之前比较熟悉的一些类似技术做一点比较。

上图是官方提供的架构说明,它依赖于 AppArmor、SeLinux(下个版本)以及 KRSI(未来)这样的 LSM,对容器中的进程进行监控和限制,借助 eBPF 技术将进程信息和 Kubernetes 关联起来,从而获取到进程的 K8s 相关信息,能够根据策略阻止或者上报违规行为,并把过程发送到日志、标准输出以及 gRPC 目标之中,未来还会支持数据库、Kafka、ES 等。目前关注的行为包括以下几个方面

  • 进程执行
  • 文件访问
  • 网络操作
  • Capabilities

它的定义和 PSP 以及 SecurityContext 都不同,采用了类似 Kyverno 类似的方式,定义规则,然后用 Label Selector 将策略关联到 Pod 上,例如源码中提供的例子:

代码语言:javascript复制
apiVersion: security.accuknox.com/v1
kind: KubeArmorPolicy
metadata:
name: ksp-ubuntu-1-proc-dir-block
namespace: multiubuntu
spec:
selector:
matchLabels:
container: ubuntu-1
process:
matchDirectories:
- dir: /sbin/
action:
Block

规则针对标签 container=ubuntu-1 的 Pod 中的容器,禁止执行 /sbin/ 下的命令。

个人觉得功能方面最相似的工具就是 Falco 了,它的配置无疑比相对“传统”的 Falco 方便了许多,并且还有 BLOCK 能力;但是其输入条件的丰富程度是远不如 Falco 的,例如对 ServiceAccount、Verb、Subresource 等 K8s 特定元数据的输入支持,条件语法也不如 Falco 灵活。

以下结论纯属胡说

OPA/Kyverno 有这种功能就有意思了。

项目地址:https://github.com/accuknox/KubeArmor

0 人点赞