본문 바로가기
INFRA/DevOps

[K8S] SecurityContext

by BTC_민물공원 2023. 10. 28.

베하~! BTC_녹차공원 팀의 민물공원 입니다.

이번주는 SecurityContext에 대해 알아보겠습니다!

 

SecurityContext


쿠버네티스는 컨테이너 실행 시 기본적으로 root 권한으로 실행을 하게됩니다. root 권한에서의 컨테이너 실행을 방지하기 위해 SecurityContext를 이용해 파드 또는 컨테이너 단위로 실행시킬 PID를 지정할 수 있습니다.

 

SecurityContext의 옵션에는 4가지가 있습니다.

  1. runAsUser : 파드 또는 컨테이너를 실행시킬 PID를 지정
  2. runAsGroup : 파드 또는 컨테이너를 실행시킬 GID를 지정
  3. fsGroup : 볼륨 마운트 시 활용할 PID를 지정
  4. runAsNonRoot : 컨테이너를 루트가 아닌 사용자로 실행할지 지정

 

 

SecurityCnotext 실습


이번 실습도 KillerCoda 에서 따라해보아요.

https://killercoda.com/

 

Killercoda Interactive Environments

Learn DevOps Linux Kubernetes CKS CKA CKAD Git Cassandra etc | Katacoda compatible

killercoda.com

 

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

댓글