题目
Task
在 cluster 的工作节点 node02 上,实施位于 /etc/apparmor.d/nginx_apparmor 的现有 APPArmor 配置文件。
编辑位于 /cks/KSSH00401/nginx-deploy.yaml 的现有清单文件以应用 AppArmor 配置文件。
最后,应用清单文件并创建其中指定的 Pod 。
请注意,考试时,考题里已表明 APPArmor 在工作节点上,所以你需要 ssh 到开头写的工作节点上。
环境搭建
- 安装AppArmor:
在CentOS系统中安装
yum install -y apparmor-utils
在Ubuntu系统中安装
apt-get install -y apparmor-utils
- 启动AppArmor:
systemctl start apparmor.service
- 检查AppArmor是否正在运行:
systemctl status apparmor.service
- 创建文件
vim /etc/apparmor.d/nginx_apparmor
#include <tunables/global> profile nginx-profile-1 flags=(attach_disconnected) { #include <abstractions/base> file, # Deny all file writes. deny /** w, }
mkdir -p /cks/KSSH00401/ vim /cks/KSSH00401/nginx-deploy.yaml
apiVersion: v1 kind: Pod metadata: name: nginx-deploy spec: containers: - name: nginx-deploy image: busybox command: ["sh","-c","echo 'Hello AppArmor!' && sleep 1h"]
附其他命令:
启用AppArmor:
systemctl enable apparmor.service
重新加载AppArmor:
apparmor_parser -r /etc/apparmor.d/*
解题
查看配置文件,加载配置文件,查看加载的配置中是否有对应profile
命令
cat /etc/apparmor.d/nginx_apparmor apparmor_parser /etc/apparmor.d/nginx_apparmor apparmor_status | grep nginx
截图
修改yaml文件
命令
vim /cks/KSSH00401/nginx-deploy.yaml
在metadata下面添加内容
annotations: container.apparmor.security.beta.kubernetes.io/nginx-deploy: localhost/nginx-profile-1
第一个/后面是容器名称,第二个/后面是cat配置文件时的profile
截图
可以看到创建后确实没有写操作权限
模拟题