19장. Kubernetes에서 애플리케이션 보호하기
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
워크로드를 실행할 수 있는 안전한 플랫폼을 제공하는 것은 Kubernetes가 프로덕션에서 광범위하게 사용되기 위해 매우 중요합니다. 다행히도, Kubernetes는 안전한 운영 환경을 구축할 수 있는 다양한 보안 중심 API를 제공합니다. 문제는 다양한 보안 API가 있으며, 이를 사용하려면 선언적으로 옵트인해야 한다는 것입니다. 이러한 보안 중심 API를 사용하는 것은 번거롭고 복잡하여 원하는 보안 목표를 달성하기 어려울 수 있습니다.
Kubernetes에서 파드를 보호할 때 다음 두 가지 개념, 즉 심층 방어와 최소 권한 원칙을 이해하는 것이 중요하다. 심층 방어 는 Kubernetes를 포함하는 컴퓨팅 시스템 전체에서 여러 계층의 보안 제어를 사용하는 개념입니다. 최소 권한 원칙은 워크로드가 작동하는 데 필요한 리소스에만 액세스 권한을 부여하는 것을 의미합니다. 이 두 가지 개념은 최종 목적지가 아니라 끊임없이 변화하는 컴퓨팅 시스템 환경에 지속적으로 적용됩니다.
이 장에서는 파드 수준에서 워크로드를 보호하기 위해 점진적으로 적용할 수 있는 보안 중심의 Kubernetes API에 대해 살펴본다.
보안 컨텍스트 이해
파드 보안의 핵심은 파드와 컨테이너 사양 수준 모두에서 적용될 수 있는 모든 보안 중심 필드의 집합인 SecurityContext이다. 다음은 SecurityContext에서 다루는 몇 가지 보안 컨트롤 예시이다:
-
사용자 권한 및 액세스 제어(예: 사용자 ID 및 그룹 ID 설정)
-
읽기 전용 루트 파일 시스템
-
권한 에스컬레이션 허용
-
Seccomp, AppArmor 및 SELinux 프로필 및 레이블 할당
-
권한 있는 권한 또는 권한 없는 권한으로 실행
예제 19-1에 정의된 보안 컨텍스트가 있는 예제 파드를 살펴보자.
예제 19-1. kuard-pod-securitycontext.yaml
apiVersion:v1kind:Podmetadata:name:kuardspec:securityContext:runAsNonRoot:truerunAsUser:1000runAsGroup:3000fsGroup:2000containers:-image:gcr.io/kuar-demo/kuard-amd64:bluename:kuardsecurityContext:allowPrivilegeEscalation:falsereadOnlyRootFilesystem:trueprivileged:falseports:-containerPort:8080name:httpprotocol:TCP
이 예시에서 파드와 컨테이너 수준 모두에 SecurityContext가 있는 것을 볼 수 있다. 많은 보안 컨트롤은 이 두 수준 모두에 적용될 수 있다. 두 수준 모두에 적용되는 ...