【Kubernetes】AppArmor 实现容器资源访问控制
·
AppArmor 是一种有效的内核安全模块,通过实现强制访问控制(MAC)策略来限制容器对主机资源的访问。本文将探讨 AppArmor 在 K8s 容器化环境中的应用,尤其是如何定义和配置策略以限制容器访问特定文件和目录,一起来看看吧!
- 操作系统:Ubuntu 22.04.5 LTS
- Kubernetes:v1.29.0
1、检查操作系统/集群是否支持
# 检查是否支持
kubectl describe node | grep AppArmor
# 查看内核是否启用 AppArmor
cat /sys/module/apparmor/parameters/enabled
# 容器运行时需要支持 AppArmor(docker\CRI-O\containerd 支持)
# Ubuntu、Debian、SUSE 有该内置功能,CentOS、redhat 系统未内置

2、自定义文件目录权限规则
# 文件名称自定义
vi /etc/apparmor.d/deny-write-rule
---
#include <tunables/global>
profile deny-write flags=(attach_disconnected) { # 指定策略名,也就是命令能查到显示出来的策略名称
#include <abstractions/base> # 定义策略
file, # 允许所有文件读写
deny /home/** w, # 递归匹配,拒绝 /home 目录下的所有目录和文件写权限
}
---
# 加载策略
apparmor_parser -q /etc/apparmor.d/deny-write-rule
# 验证配置成功
apparmor_status | grep deny

3、为 Pod 配置使用自定义的规则
- 未配置规则前,可正常在 /home 目录下创建文件

- 配置规则后,无法在 /home 目录下创建文件
# 引用策略
apiVersion: v1
kind: Pod
metadata:
name: tomcat
annotations:
# <container_name>:Pod 中容器名称,<profile_ref>:Pod 所在宿主机上策略名,默认目录 /etc/apparmor.d
container.apparmor.security.beta.kubernetes.io/<container_name>: localhost/<profile_ref>
# 验证无法在 /home 下创建文件
kubectl exec -it tomcat -- touch /home/test


更多推荐



所有评论(0)