베하~! BTC_녹차공원 팀의 민물공원 입니다.
이번주는 SecurityContext에 대해 알아보겠습니다!
SecurityContext
쿠버네티스는 컨테이너 실행 시 기본적으로 root 권한으로 실행을 하게됩니다. root 권한에서의 컨테이너 실행을 방지하기 위해 SecurityContext를 이용해 파드 또는 컨테이너 단위로 실행시킬 PID를 지정할 수 있습니다.
SecurityContext의 옵션에는 4가지가 있습니다.
- runAsUser : 파드 또는 컨테이너를 실행시킬 PID를 지정
- runAsGroup : 파드 또는 컨테이너를 실행시킬 GID를 지정
- fsGroup : 볼륨 마운트 시 활용할 PID를 지정
- runAsNonRoot : 컨테이너를 루트가 아닌 사용자로 실행할지 지정
SecurityCnotext 실습
이번 실습도 KillerCoda 에서 따라해보아요.
default 네임스페이스에서 작동중인 cache-deployment에 컨테이너 실행 시 기본적으로 user 10000 번으로 실행되도록 설정해봅니다. 이때 root로의 접속은 금지시킵니다.
--dry-run=client 를 통해 cache-deployment.yaml 파일을 생성합니다.
kubectl create deployment cache-deployment --image=nginx -n default --dry-run=client -o yaml > cache-deployment.yaml
그 후 cache-deployment 파일을 수정하여 securityContext 항목을 추가합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: cache-deployment
name: cache-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: cache-deployment
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: cache-deployment
spec:
containers:
- image: nginx
name: nginx
resources: {}
securityContext:
allowPrivilegeEscalation: false
securityContext:
runAsUser: 10000
status: {}
"cache-deployment" Deployment를 생성합니다.
kubectl apply -f cache-deployment.yaml
pod 에 접속해서 user ID 를 검색해봅니다.
kubectl get pods -n default
kubectl exec -n default cache-deployment-6f6cc6978c-fzk26 -it -- sh
# USER ID 검색
ps
id
10000 번의 USER 로 접속했음을 확인할 수 있어요!
이렇게 오늘은 SecurityContext 에 대해 알아보았는데요.
다음번에는 더 흥미로운 주제로 찾아뵙겠습니다.
이상 BTC_녹차공원 팀이였습니다!
베빠~!
'INFRA > DevOps' 카테고리의 다른 글
[DevOps] React (2) | 2023.11.24 |
---|---|
[K8S] Environment (1) | 2023.11.12 |
Terraform Import (0) | 2023.10.27 |
[K8S] Resource (0) | 2023.10.16 |
[K8S] SideCar (0) | 2023.10.16 |
댓글