K01/K8s 보안 강화 - 안전하지 않은 워크로드 설정

K8s OWASP TOP 10 - Insecure Workload Configurations
이민석's avatar
Nov 15, 2024
K01/K8s 보안 강화 - 안전하지 않은 워크로드 설정

OWASP(Open Web Application Security Project)은
인터넷 세상에서 발생가능한 가장 중요한 보안 취약점을 정리한 문서입니다.

Before Started

D01 ~ D06/Docker 보안 강화[P1]를 통해서 OWASP Docker Top 10[1]의 다양한 보안 시나리오, 취약점 탐색 방법, 개선 방법에 대해서 배웠습니다.

다만 현업에서는 오케스트레이션 도구인 K8s를 사용하고 있으므로 Dockerfile까지는 해당 시리즈[1]를 참조하되 그 이후에는 OWASP Kubernetes Top 10[2]딥아비으하여 이를 현업에 적용하는 것이 좋은 방향이라고 생각했습니다.

Overview

K8s에서 안전하지 않은 워크로드 설정[3]과 관련된 기본적인 설정사항들을 준수하여야 합니다.

  1. root 유저 설정을 피하라

  2. 읽기 전용 파일 시스템을 사용할 것

  3. 특권 컨테이너를 사용하지 말 것

  4. 리소스에 요청과 제한을 사용할 것

  5. 지속적인 보안 방법

Insecure Workload Configurations

root 유저 설정을 피하라

컨테이너를 runAsUser: 0 옵션으로 루트로 실행해서는 안됩니다.

apiVersion: v1
kind: Pod
...
spec:
  ...
  securityContext:
    runAsUser: 0

반드시 아래와 같이 runAsUser: <num> 옵션으로 별도의 사용자로 실행해야 합니다.

apiVersion: v1
kind: Pod
...
spec:
  ...
  securityContext:
    runAsUser: 0

읽기 전용 파일 시스템을 사용할 것

컨테이너에서 루트 시스템에 쓰기 작업을 할 수 없도록 readOnlyRootFilesystem: true를 사용해야 합니다.

다만 이 경우는 D02/패치 관리 전략 [P2]에서 다른 Dirty COW Vulnerability[T1] 예시와 같이, 컨테이너가 호스트 커널의 보안 취약점을 통해서 권한 상승, 읽기 전용 마운트에서의 쓰기 작업 등이 가능합니다.

apiVersion: v1
kind: Pod
...
spec:
  ...
  securityContext:
    readOnlyRootFilesystem: true

특권 컨테이너를 사용하지 말 것

특권 컨테이너로 실행되지 않도록 강력한 제약사항을 유지해야 합니다. privileged: false 옵션을 사용할 수 있습니다.

apiVersion: v1
kind: Pod
...
spec:
  ...
  securityContext:
    privileged: false
    allowPrivilegeEscalation: false

공격자가 컨테이너 내부에 침입한 이후,
일반 컨테이너를 특권 컨테이너로 승격시키는 것을 방지 하기 위해서 allowPrivilegeEscalation: false 옵션을 사용할 수 있습니다.

리소스에 요청과 제한을 사용할 것

특정한 컨테이너의 작업이 전체 호스트, 컨테이너에 영향을 미치지 않도록 limits, requests 설정이 필요합니다. 경우에 따라 네임스페이스에서 해당되는 각 객체 종류에 대한 리소스 할당을 제한 하기 위해서는 LimitRange를 사용할 수도 있습니다.

apiVersion: v1
kind: Pod
...
spec:
  ...
  containers:
    resources:
      limits:
        cpu: "0.5"
        memory: "512Mi"
      requests:
        cpu: "0.2"
        memory: "256Mi"

공격자가 컨테이너 내부에 침입한 후,
악의적인 방법으로 CPU, MEM 등의 사용량을 늘리지 못하도록 리소스의 요청과 제한을 두어야 합니다.

지속적인 보안

지속적으로 보안을 강화하고 유지하기 위해서는 아래의 방법을 활용할 수도 있습니다.

  • Open Policy Agent를 활용한 Docker, K8s 거버넌스 수립 [T2]

  • CIS benchmark를 사용한 K8s 보안 벤치카밍 [T2]

  • Pod 보안 표준 적용하기 [T3]

OWASP. Ref.

Tech. Ref.

POST. Ref.

Share article

Unchaptered