CKS 备考11-AppArmor_k8s

Context:

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

Task:

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

#include <tunables/global>
profile nginx-profile-3 flags=(attach_disconnected) {
  #include <abstractions/base>
  file,
  # Deny all file writes.
  deny /** w,
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
apiVersion: v1
kind: Pod
metadata:
  name: podx
spec:
  containers:
  - image: busybox
    imagePullPolicy: IfNotPresent
    name: podx
    command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 5h" ]
    resources: {}
  nodeName: node02
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

解:
请注意,考试时,考题里已表明APPArmor在工作节点上,所以你需要ssh到开头写的工作节点上。
CKS 备考11-AppArmor_cks_02
kubernetes.io搜apparmor
CKS 备考11-AppArmor_k8s_03
注意这里1.30文本版本已经发生变化,考试环境是1.29,需要切回1.29
CKS 备考11-AppArmor_k8s_04
CKS 备考11-AppArmor_kubernetes_05
CKS 备考11-AppArmor_cks_06

# 先按题目要求去工作节点启用AppArmor配置(考试环境为上图红色框内)
ssh node02
# 查看apparmor配置
cat /etc/apparmor.d/nginx_apparmor
# 导入apparmor配置
sudo apparmor_parser -q /etc/apparmor.d/nginx_apparmor
# 查看配置是否导入
apparmor_status
# 退出工作节点
exit
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

CKS 备考11-AppArmor_security_07
CKS 备考11-AppArmor_security_08
CKS 备考11-AppArmor_kubernetes_09

# 回到主节点,我们编辑配置文件
vim /cks/KSSH00401/nginx-deploy.yaml
  • 1.
  • 2.
apiVersion: v1
kind: Pod
metadata:
  name: podx
  annotations:
    # 修改.kubernetes.io/后的pod名跟下面的pod名一致
    # 修改localhost/后的apparmor模块名跟上面的一致
    container.apparmor.security.beta.kubernetes.io/podx: localhost/nginx-profile-3
spec:
  containers:
  - image: busybox
    imagePullPolicy: IfNotPresent
    name: podx
    command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 5h" ]
    resources: {}
  nodeName: node02
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

CKS 备考11-AppArmor_security_10
CKS 备考11-AppArmor_cks_11

# 查看pod情况
kubectl get pod
# 尝试创建文件看权限是否成功
kubectl exec podx -- touch /tmp/test
  • 1.
  • 2.
  • 3.
  • 4.

CKS 备考11-AppArmor_apparmor_12