Killer Shell CKS - AppArmor

Jmnote (토론 | 기여)님의 2025년 11월 18일 (화) 19:57 판 (→‎같이 보기)

1 개요

Killer Shell CKS - AppArmor

2 작업1: node01의 AppArmor 프로파일 확인

요구사항: 다음 이름 중 node01에 실제로 존재하는 프로파일만 골라 controlplane 노드의 /root/profiles.txt에 기록

  • docker-default
  • snap.lxd.lxc
  • ftpd
  • tcpdump

node01에서 로드된 AppArmor 프로파일을 조회한다.

controlplane:~$ ssh node01
Last login: Mon Feb 10 22:06:42 2025 from 10.244.0.131

node01:~$ apparmor_status | grep docker-default
   docker-default
node01:~$ apparmor_status | grep snap.lxd.lxc  
node01:~$ apparmor_status | grep ftpd        
node01:~$ apparmor_status | grep tcpdump
   tcpdump
node01:~$ 
node01:~$ exit

위 결과에 따르면 node01에는 다음 프로파일이 존재한다.

  • docker-default
  • tcpdump

controlplane 노드에서 파일을 생성한다.

controlplane:~$ cat /root/profiles.txt
docker-default
tcpdump

3 작업2: 잘못된 AppArmor 설정 수정

  • 대상: 네임스페이스 moon의 Deployment spacecow
  • 요구사항: AppArmor 프로파일을 docker-default로 수정

수정(권장: 최신 필드 사용)

controlplane:~$ kubectl -n moon edit deploy spacecow
apiVersion: apps/v1
kind: Deployment
metadata:
  name: spacecow
  namespace: moon
spec:
  replicas: 3
  selector:
    matchLabels:
      app: spacecow
  template:
    metadata:
      labels:
        app: spacecow
    spec:
        ...
      securityContext:
        appArmorProfile:
          #localhostProfile: docker
          localhostProfile: docker-default
          type: Localhost
      containers:
      - name: httpd
        image: httpd:2.4.52-alpine

노드에서 확인

controlplane:~$ ssh node01
Last login: Tue Nov 18 10:39:37 2025 from 10.244.5.104

node01:~$ crictl ps | grep spacecow
637e0052b30c9       294cecd6c7790       27 seconds ago      Running             httpd               0                   af20f02706652       spacecow-866bd945c-cjvfm   moon
9d0407781d2c3       294cecd6c7790       29 seconds ago      Running             httpd               0                   828362d6e4eee       spacecow-866bd945c-gpmpb   moon
3529274133891       294cecd6c7790       30 seconds ago      Running             httpd               0                   a2b3340c11d0f       spacecow-866bd945c-t8xvv   moon

node01:~$ crictl inspect 637e0052b30c9 | grep apparmor
          "apparmor": {
          "apparmor_profile": "localhost/docker-default",
        "apparmorProfile": "docker-default",

4 작업3: AppArmor 프로파일 설치

요구사항: /root/profile의 프로필명이 docker-nginx-custom이어야 함. 수정 후 controlplane 과 node01 모두에 설치

controlplane:~$ cat /root/profile | grep profile
profile docker-nginx flags=(attach_disconnected,mediate_deleted) {
controlplane:~$ vi /root/profile
profile docker-nginx-custom flags=(attach_disconnected,mediate_deleted) {

controlplane에 로드:

controlplane:~$ apparmor_parser /root/profile
controlplane:~$ apparmor_status | grep docker-nginx-custom
   docker-nginx-custom

node01에 전달/로드:

controlplane:~$ scp /root/profile node01:/root/
profile                                                                             100% 1650     2.9MB/s   00:00
controlplane:~$ ssh node01
Last login: Tue Nov 18 10:47:10 2025 from 10.244.5.104

node01:~$ apparmor_parser /root/profile
node01:~$ apparmor_status | grep docker-nginx-custom
   docker-nginx-custom

5 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}