[마이크로서비스 취약성 최소화] Pod 보안 승인(PSA) 및 Pod 보안 표준(PSS) 이해하기

IMKUNYOUNG·2024년 6월 22일
0

CKS

목록 보기
48/70

Kubernetes 개선 제안서(KEP) 2579는 Pod 보안 정책(PSP)의 대체 기능을 구축하기 위해 초안으로 작성되었습니다. 이는 새로운 클러스터에서 안전하게 활성화되고, 사용하기 쉽고, 확장 가능한 솔루션을 제공하기 위한 것입니다. 이러한 요구 사항 중 일부는 KEP에 명시되어 있으며, 새로운 구현은 안전하고 사용하기 쉬워야 하며, 복잡한 사항이 필요한 경우에는 k-rail, Kyverno 또는 OPA gatekeeper와 같은 외부 솔루션으로 이동해야 한다고 명시되어 있습니다.

Pod 보안 승인(PSA) 소개

오늘날의 Pod 보안 승인은 Pod 보안 정책의 Admission 컨트롤러와 유사합니다. PSA는 Admission 컨트롤러이며 기본적으로 활성화되어 있어 추가적인 단계를 수행할 필요가 없습니다. 활성화 여부를 확인하려면 kube-apiserver pod 내에서 kube-apiserver -h 명령을 실행하고 pod security를 grep하여 기본적으로 활성화된 Admission 컨트롤러 중 하나인지 확인할 수 있습니다.

PSA는 네임스페이스 수준에서 구성되며, 네임스페이스에 레이블을 적용하여 이를 수행합니다. 예를 들어, 네임스페이스 payroll에 pod 보안 표준을 적용하려면 다음 명령을 실행합니다:

kubectl label namespace payroll pod-security.kubernetes.io/enforce=restricted

이 명령은 payroll 네임스페이스에 제한된 보안 정책을 적용합니다. 동일한 방법으로 다른 네임스페이스에 적용하려면 동일한 명령을 실행하여 다른 네임스페이스를 대상으로 하고 모드와 보안 표준을 제공합니다.

PSA의 모드와 정책 표준

PSA의 목표 중 하나는 구현을 단순화하는 것입니다. 사용자들이 자신만의 프로필을 작성할 필요 없이 몇 가지 내장 프로필이 정의되어 있어 적용할 표준을 선택할 수 있습니다. 사용할 수 있는 세 가지 프로필이 있습니다:

  1. Privileged: 제한이 없는 정책으로, 가능한 가장 넓은 권한 수준을 허용하며, 알려진 권한 상승을 허용합니다.
  2. Baseline: 대부분의 컨테이너 기반 애플리케이션에 사용하기 쉽도록 설계되었으며, 최소한으로 제한됩니다.
  3. Restricted: 매우 제한적인 정책으로, Pod 강화 모범 사례를 따릅니다.

네임스페이스에 대해 Pod 보안을 구성할 때 이러한 옵션 중 하나를 선택할 수 있습니다. 모드는 정책이 위반될 경우 컨트롤 플레인이 어떤 조치를 취할지를 정의합니다.

  • Enforce: pod 생성 요청이 거부됩니다.
  • Audit: pod 생성을 허용하고 감사 로그에 항목이 추가됩니다.
  • Warn: 사용자에게 경고를 표시합니다.

이를 원하는 조합으로 사용할 수 있습니다. 예를 들어, enforce restricted라고 설정하면 pod 생성이 매우 제한되며, 제한된 정책 내에서 정의된 사항을 위반하는 모든 항목이 거부됩니다. 하지만 warn and restricted로 설정하면 사용자는 제한된 정책을 위반하는 pod를 생성할 수 있지만, 허용되지 않는다는 경고를 받게 됩니다.

실습 예제

이제 네임스페이스로 돌아가서, payroll 시스템에 Restricted 정책을 적용해보겠습니다. 제한 사항을 위반하는 pod는 거부됩니다. 다음 명령을 사용하여 enforce 모드와 restricted 프로필을 적용할 수 있습니다:

kubectl label namespace payroll pod-security.kubernetes.io/enforce=restricted

hr 네임스페이스에는 기본 제한을 시행하고 싶다면 다음 명령을 사용할 수 있습니다:

kubectl label namespace hr pod-security.kubernetes.io/enforce=baseline

Dev 네임스페이스에는 정책 위반 시 사용자에게 경고하는 warn 모드와 restricted 프로필을 적용하겠습니다. 이는 생성 방지를 하지 않고 경고만 표시합니다:

kubectl label namespace dev pod-security.kubernetes.io/warn=restricted

이와 같이 Kubernetes의 Pod 보안 승인(PSA)과 Pod 보안 표준(PSS)을 통해 네임스페이스별로 적절한 보안 정책을 적용할 수 있습니다. 이를 통해 클러스터의 보안을 강화하고, 다양한 애플리케이션 요구 사항에 맞는 보안 수준을 유지할 수 있습니다.

0개의 댓글