SYS_ADMIN capability가 추가된 Kubernetes 컨테이너

SYS_ADMIN은 광범위한 Linux 관리 권한이므로 일반 컨테이너에 추가하지 마세요.

설명

securityContext.capabilities.add의 SYS_ADMIN은 마운트 등 다양한 Linux 관리 작업을 허용하는 강력한 capability입니다. 컨테이너의 격리를 약화시키고 침해의 영향을 키울 수 있습니다.

allowPrivilegeEscalation: false는 이 권한을 무효화하지 않으며, SYS_ADMIN과 함께 사용할 수 없는 설정입니다. 먼저 불필요한 capability 자체를 제거해야 합니다.

잠재적 영향

  • 침해된 프로세스가 애플리케이션에 필요하지 않은 시스템 관리 작업을 수행할 수 있습니다.
  • 호스트 마운트나 다른 권한과 결합되면 노드 및 다른 워크로드에 영향을 줄 수 있습니다.

해결 방법

  • securityContext.capabilities.add에서 불필요한 SYS_ADMIN을 제거하세요.
  • 필요한 기능을 더 좁은 권한으로 제공하거나 격리된 전용 작업으로 분리할 수 있는지 검토하세요.
  • privileged, 호스트 마운트와 실행 사용자를 함께 확인하고, 가능하면 allowPrivilegeEscalation: false를 적용한 뒤 애플리케이션을 시험하세요.

예시

이미지는 예시 주소이므로 실제 애플리케이션 이미지로 바꾸세요. 두 Pod는 권한 설정을 비교합니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod4
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4
      securityContext:
        allowPrivilegeEscalation: true
        capabilities:
          add:
            - SYS_ADMIN

SYS_ADMIN과 권한 상승을 허용합니다. 일반 애플리케이션에 필요하지 않다면 제거해야 합니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4
      securityContext:
        allowPrivilegeEscalation: false

추가한 SYS_ADMIN을 제거하고 권한 상승도 제한합니다. 기본 capability까지 모두 제거한 구성은 아니므로 필요한 권한만 남았는지 확인하세요.

참조