KubeArmor 是一个云原生运行时安全强制系统,它在系统级别限制容器和节点的行为(如进程执行、文件访问和网络操作)。
KubeArmor 使用 Linux 安全模块(LSM)操作,这意味着如果 Linux 安全模块(如 AppArmor、SELinux 或 BPF-LSM)在 Linux 内核中启用,它可以在任何 Linux 平台(如 Alpine、Ubuntu 和谷歌的 Container-optimized OS)上工作。KubeArmor 将使用适当的 LSM 来执行所需的策略。
KubeArmor 允许操作人员定义安全策略并将其应用到 Kubernetes。然后,KubeArmor 将自动检测来自 Kubernetes 的安全策略的更改,并将它们强制执行到相应的容器和节点。
如果有任何违反安全策略的情况,KubeArmor 会立即生成带有容器标识的警报。如果操作员有任何日志系统,它也会自动向他们的系统发送警报。
传统的容器安全解决方案(如 Cilium)通过确定它们在网络级别的容器间关系(如服务流)来保护容器。与此相反,KubeArmor 通过指定容器所需的操作(例如,一个特定的进程应该只被允许访问敏感文件)来防止容器中的恶意或未知行为。KubeArmor 还允许操作员根据节点标识来限制节点的行为。
通常,安全策略(例如 Seccomp 和 AppArmor 配置文件)是在 Kubernetes 的 pod 定义中静态定义的,它们在创建时应用于容器。然后,不允许在运行时更新安全策略。
为了避免这个问题,KubeArmor 单独维护安全策略,这意味着安全策略不再与容器紧密耦合。然后,KubeArmor 根据给定容器和安全策略的标签,将安全策略直接应用到每个容器的 Linux 安全模块(LSM)中。
LSM 没有任何与容器相关的信息;因此,它们仅根据系统元数据(例如,用户 ID、组 ID 和进程 ID)生成警报和系统日志。因此,很难找出导致策略违规的容器。
为了解决这个问题,KubeArmor 使用了一个基于 eBPF 的系统监控器,该监控器跟踪容器中的进程生命周期,并在 LSM 为容器中的任何策略违规生成警报和系统日志时,将系统元数据转换为容器标识。
KubeArmor 提供了监视容器进程生命周期并基于它们做出策略决策的能力。一般来说,拒绝一个特定的动作要容易得多,但是在拒绝所有动作的同时只允许特定动作就困难得多了。KubeArmor 管理与处理此类策略决策相关的内部复杂性,并为策略语言提供简单的语义。
KubeArmor 的目的是保护容器本身,而不是容器之间的交互。然而,使用 KubeArmor,用户可以添加策略,这些策略可以在网络系统调用级别应用策略设置(例如,bind()、listen()、accept()和 connect()),从而在一定程度上控制容器之间的交互。
请看以下文件:
如果你想要作出贡献,请同时参阅以下文件:
[1]入门指南: https://github.com/kubearmor/KubeArmor/blob/main/getting-started/deployment_guide.md
[2]容器的安全策略规范: https://github.com/kubearmor/KubeArmor/blob/main/getting-started/security_policy_specification.md
[3]容器安全策略示例: https://github.com/kubearmor/KubeArmor/blob/main/getting-started/security_policy_examples.md
[4]节点安全策略规范: https://github.com/kubearmor/KubeArmor/blob/main/getting-started/host_security_policy_specification.md
[5]节点安全策略举例: https://github.com/kubearmor/KubeArmor/blob/main/getting-started/host_security_policy_examples.md
[6]贡献指南: https://github.com/kubearmor/KubeArmor/blob/main/contribution/contribution_guide.md
[7]开发指南: https://github.com/kubearmor/KubeArmor/blob/main/contribution/development_guide.md
[8]技术路线图: https://github.com/kubearmor/KubeArmor/blob/main/contribution/technical_roadmap.md