아티클 관련 제품: SparklingSoDA4.0
들어가며
- 스파클링소다 제품을 구동하기 위해 여러 패키지를 설치합니다.
- 이때, 특정 패키지의 프로세스 사용 권한에 대해 알아보겠습니다.
Security Context
security context란, kubernetes의 pod나 container의 권한 및 엑세스 제어를 정의합니다.
container 프로세스들이 사용하는 사용자와 그룹, 보안 정책 등을 설정하기 위해 사용됩니다.
스파클링소다에 설치된 특정 패키지들 역시, security context 기능을 사용하였습니다.
Pod나 컨테이너에서 구동 되는 프로세스의 사용자 ID와 그룹 ID를 지정하였습니다.
위 설정은 yaml에 정의하여 사용할 수 있습니다.
스파클링소다 패키지의 yaml의 일부를 보고, 프로세스 사용자 ID와 그룹 ID 설정을 하는 방법을 확인해 봅니다.
... securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 ...
runAsUser | pod의 모든 container에 대해 모든 프로세스의 사용자 UID 값을 지정 |
runAsGroup | pod의 모든 container 내 모든 포로세스에 대한 기본 GID 값을 지정 |
fsGroup | 컨테이너의 모든 프로세스는 보조 그룹 ID 를 지정 |
위 yaml파일로 실행된 pod의 컨테이너 내부로 들어가, 사용자의 정보를 확인해봅니다.
id uid=1000 gid=1000 groups=1000
패키지 사용 권한
그렇다면, 스파클링소다에 설치된 패키지들 중 어떤 패키지가 위 권한 설정이 되어있는지 확인해봅니다.
스파클링소다는 nas-client 의 storage class를 사용하고 있습니다.
즉, nfs 마운트를 경로를 보고 pv의 데이터를 확인할 수 있습니다.
컨테이너 내부 경로와 마운트된 pv 데이터의 사용자 권한은 어떻게 설정되어 있는지 알아봅니다.
# minio securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 # mariadb securityContext: runAsUser: 1000 # prometheus securityContext: fsGroup: 2000 runAsGroup: 2000 runAsNonRoot: true runAsUser: 1000
위와 같이 특정 패키지들은 컨테이너 프로세스 사용 권한 설정이 되어있습니다.
따라서 해당 패키지의 pv 디렉터리 사용 권한을 확인해보면, yaml에 정의한 권한으로 설정되어 사용하는 것을 확인할 수 있습니다.
# minio drwxr-xr-x 2 1000 1000 6 Jan 5 18:49 artifacts-repo drwxr-xr-x 2 1000 1000 6 Jan 5 18:49 dockerfiles drwxr-xr-x 2 1000 1000 6 Jan 5 18:49 dvc-storage drwxr-xr-x 6 1000 1000 107 Jan 5 18:49 .minio.sys drwxr-xr-x 3 1000 1000 19 Jan 30 01:38 mlmodel-repo drwxr-xr-x 2 1000 1000 6 Jan 5 18:49 mlpipeline # mariadb drwxr-xr-x 6 1000 1000 4096 Jan 29 21:33 data # prometheus drwxr-xr-x 2 1000 2000 34 Jan 31 00:00 chunks_head -rw-r--r-- 1 1000 2000 20001 Jan 31 00:29 queries.active drwxr-xr-x 3 1000 2000 81 Jan 31 00:00 wal
마무리
- 스파클링소다에 설치된 패키지들의 프로세스 사용자 권한에 대해 알아보았습니다.
- 위에서 확인한 pv 경로에 대한 사용자 권한을 수정할 경우, 컨테이너가 정상 작동하지 않으니 주의해야 합니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.