[마이크로서비스 취약성 최소화] Kubernetes Security Contexts

IMKUNYOUNG·2024년 6월 21일
0

CKS

목록 보기
44/70

Kubernetes에서 컨테이너는 파드(pod)로 캡슐화됩니다. 파드 내의 컨테이너는 다양한 보안 설정을 필요로 할 수 있습니다. 이러한 보안 설정을 관리하기 위해 Kubernetes는 보안 컨텍스트(Security Contexts)를 제공합니다. 보안 컨텍스트는 컨테이너나 파드의 보안 관련 설정을 정의할 수 있는 방법을 제공합니다. 이를 통해 컨테이너의 사용자 ID, Linux 기능, 권한 등을 설정할 수 있습니다.

보안 컨텍스트 설정 방법

파드 수준 보안 설정

파드 수준에서 보안 컨텍스트를 설정하면, 해당 설정이 파드 내 모든 컨테이너에 적용됩니다. 예를 들어, 다음과 같이 securityContext 필드를 사용하여 파드의 사용자 ID를 설정할 수 있습니다:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  securityContext:
    runAsUser: 1000
  containers:
  - name: mycontainer
    image: ubuntu
    command: ["sleep", "3600"]

위의 예제에서 runAsUser: 1000은 파드 내 모든 컨테이너가 사용자 ID 1000으로 실행되도록 설정합니다.

컨테이너 수준 보안 설정

컨테이너 수준에서 보안 컨텍스트를 설정할 수도 있습니다. 이 경우, 컨테이너의 보안 설정이 파드의 보안 설정을 재정의합니다. 예를 들어, 다음과 같이 설정할 수 있습니다:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: ubuntu
    command: ["sleep", "3600"]
    securityContext:
      runAsUser: 1000

위의 예제는 특정 컨테이너가 사용자 ID 1000으로 실행되도록 설정합니다. 이 설정은 파드 수준에서 정의된 설정을 재정의합니다.

기능 추가 설정

Kubernetes에서는 컨테이너에 특정 Linux 기능을 추가하거나 제거할 수 있습니다. 이는 capabilities 옵션을 사용하여 설정할 수 있습니다. 예를 들어, 다음과 같이 파드에 NET_ADMIN 기능을 추가할 수 있습니다:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: ubuntu
    command: ["sleep", "3600"]
    securityContext:
      capabilities:
        add: ["NET_ADMIN"]

위의 예제는 NET_ADMIN 기능을 컨테이너에 추가합니다.

마무리

Kubernetes의 보안 컨텍스트는 파드와 컨테이너의 보안 설정을 관리하는 강력한 도구입니다. 이를 통해 사용자 ID 설정, Linux 기능 추가 및 제거 등 다양한 보안 설정을 유연하게 구성할 수 있습니다.

0개의 댓글