file

Context:

APPArmor 已在 cluster 的工作节点node02上被启用。一个 APPArmor 配置文件已存在,但尚未被实施。

Task:

在 cluster 的工作节点node02上,实施位于 /etc/apparmor.d/nginx_apparmor 的现有APPArmor 配置文件。 编辑位于 /cks/KSSH00401/nginx-deploy.yaml 的现有清单文件以应用 AppArmor 配置文件。 最后,应用清单文件并创建其中指定的 Pod 。

请注意,考试时,考题里已表明APPArmor在工作节点上,所以你需要ssh到开头写的工作节点上。 在模拟环境,你需要ssh到node02这个工作节点。 file


参考:

https://kubernetes.io/zh/docs/tutorials/security/apparmor/#example

解答:

切换集群

kubectl config use-context KSSH00401

连接到 node02 并切换到 root

ssh node02
sudo -i

切换到 apparmor 目录, 并检查配置文件

vi /etc/apparmor.d/etc/apparmor.d/nginx_apparmor

nginx_apparmor

#include 
#nginx-profile-3 #检查这一行是否存在 存在则注释掉
profile nginx-profile-3 flags=(attach_disconnected) {
  #include 
  file,
  # Deny all file writes.
  deny /** w,
}

file

执行 并 检查 apparmor策略模块

apparmor_parser -q /etc/apparmor.d/nginx_apparmor
apparmor_status | grep nginx-profile-3

file

修改 pod 文件

(注意!注意!考试时,这个文件是在默认登录的终端那个初始节点上的,而不是在这个work节点的)

vi /cks/KSSH00401/nginx-deploy.yaml

添加注解

annotations:
  container.apparmor.security.beta.kubernetes.io/podx: localhost/nginx-profile-3

创建pod

kubectl -f  /cks/KSSH00401/nginx-deploy.yaml create

检查

kubectl get pod
kubectl exec podx -- cat /proc/1/attr/current
kubectl exec podx -- touch /tmp/test

查看current显示 xxx (enforce) 创建文件提示权限不足 file