Study/K8S
[K8S - CKA] Security Context
monitor
2024. 1. 16. 22:32
Docker Security
docker run ubuntu sleep 3600
Container는 Namespace 단위로 격리되고 실행된다.
그래서, 프로세서에 직접 접근해서 들어가서 ps aux 하면 PID는 1이 나올 것이고 이에 대해서 Host 범위에서 ps aux 시 그저 실행되는 하나의 컨테이너 작업으로 표시되어서 PID 31157 이런식으로 랜덤 ID가 나올 것이다.
어쨌든 말하고 싶은 것은 host의 일반 유저와 Container의 접근 권한이 다르다는걸 말하고 싶었다.
docker run --privileged ubuntu
그래서, 이렇게 유저가 달라서 일반 Docker 유저는 권한을 모두 부여 받지 못한다. 따라서, 특정 명령어를 쓰기 위해서는 위와 같이 root 권한을 부여한다던지 또 다른 작업이 컨테이너 내에서 이루어져야 한다.
Security Context
docker run --user=1001 ubuntu
캡슐화 해서 도커 컨테이너를 관리하는데 이를 Pod Level에서 접근 권한을 관리 할 수 있습니다.
Pod Level으로 보겠습니다.
apiVersion: v1
kind: Pod
metadata:
name: web-pod
spec:
containers:
-name: nginx
image: nginx
command: ["sleep","5000"]
securityContext:
runAsUser: 1005
capabilities:
add: ["SYS_ADMIN"]
위 처럼 설정하면 Container Level에서 Capabilty 정보를 설정 할 수 있고 이에 따라서 container에서는 SYS_ADMIN 권한을 부여 받을 수 있습니다.
(Capabilites는 무조건 컨테이너 레벨에 지정되어야 합니다!)