DevOps

[Kubernetes] Security Context

네른 2022. 5. 13. 22:03

종종, Pod를 생성하고 나서 내부의 앱이 권한문제로 인해 정상적으로 동작하지 않을 때가 있다.

그럴 때 주로 사용한 방법이 Pod의 SecurityContext를 수정하는 것.

 

SecurityContext란 Pod/Container의 권한을 수정하는 데 사용되는 기능으로, 프로세스의 사용자/그룹을 수정하거나 보안정책, 권한 등을 설정하게 된다.

대표적인 몇가지만 간단히 나열하자면,

 - hostPID/IPC : 해당 리소스가 node의 PID와 IPC를 사용할 수 있게되어 직접 통신이 가능해진다

 - hostNetwork : 해당 리소스가 node의 network interface에 접근할 수 있게된다

 - runAsUser: 해당 리소스의 사용자 ID(UID)를 지정한다. 디폴트 값이 0 이기에, 특정 UID를 할당해서 권한을 제한할 수 있다

 - fsGroup : 해당 리소스(파드)의 볼륨에 대한 그룹을 할당.

 - seLinux : 해당 리소스에 selinux 지정

 - privileged : 해당 리소스(컨테이너)가 privileged로 생성되도록 지정. privileged가 설정되면, 노드의 모든 리소스에 접근이 가능해진다!

 - seccomp : 해당 리소스 내의 프로세스가 사용할 수 있는 시스템콜의 종류를 제한

 

spec:
  containers:
  - name: test
    securityContext:
      runAsUser: 2000
      runAsGroup: 2000

이런식으로 지정해서 사용할 수 있다.

권한 관련해서 종종 사용했었다.