설명
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까지 모두 제거한 구성은 아니므로 필요한 권한만 남았는지 확인하세요.