기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
런타임 보안
런타임 보안은 컨테이너가 실행되는 동안 컨테이너를 능동적으로 보호합니다. 이 아이디어는 컨테이너 내에서 악의적인 활동이 발생하는 것을 감지 및/또는 방지하는 것입니다. 이는 Linux 기능, 보안 컴퓨팅(seccomp), AppArmor 또는 SELinux와 같이 Kubernetes와 통합된 Linux 커널 또는 커널 확장의 여러 메커니즘을 통해 달성할 수 있습니다. 또한 Linux 커널 메커니즘의 수동 구성을 줄이면서 기준을 설정하고 비정상적인 활동을 감지하는 데 도움이 되는 Amazon GuardDuty 및 타사 도구와 같은 옵션도 있습니다.
중요
Kubernetes는 현재 노드에 seccomp, AppArmor 또는 SELinux 프로필을 로드하기 위한 기본 메커니즘을 제공하지 않습니다. 수동으로 로드하거나 부트스트랩할 때 노드에 설치해야 합니다. 이는 포드에서 참조하기 전에 수행해야 합니다. 스케줄러가 프로파일이 있는 노드를 인식하지 못하기 때문입니다. Security Profiles Operator와 같은 도구가 노드로의 프로필 프로비저닝을 자동화하는 데 어떻게 도움이 되는지 아래에서 확인하세요.
보안 컨텍스트 및 내장 Kubernetes 제어
많은 Linux 런타임 보안 메커니즘은 Kubernetes와 긴밀하게 통합되며 Kubernetes 보안 컨텍스트를 통해 구성할 수 있습니다privileged 기본적으로 플래그이며, 활성화된 경우 기본적으로 호스트의 루트false와 동일합니다. 프로덕션 워크로드에서 권한 모드를 활성화하는 것은 거의 항상 부적절하지만 컨테이너에 보다 세분화된 권한을 적절하게 제공할 수 있는 제어가 많이 있습니다.
Linux 기능
Linux 기능을 사용하면 루트 사용자의 모든 기능을 제공하지 않고도 포드 또는 컨테이너에 특정 기능을 부여할 수 있습니다. 예를 들어 네트워크 인터페이스 또는 방화벽을 구성할 수 CAP_NET_ADMIN있는 , 또는 시스템 클럭을 조작할 수 CAP_SYS_TIME있는가 있습니다.
Seccomp
보안 컴퓨팅(seccomp)을 사용하면 컨테이너화된 애플리케이션이 기본 호스트 운영 체제의 커널을 특정 syscall하지 못하도록 할 수 있습니다. Linux 운영 체제에는 수백 개의 시스템 호출이 있지만 컨테이너를 실행하는 데는 사자의 공유가 필요하지 않습니다. 컨테이너에서 수행할 수 있는 시스템 호출을 제한하면 애플리케이션의 공격 표면을 효과적으로 줄일 수 있습니다.
Seccomp는 시스템 호출을 가로채고 허용 목록에 있는 호출만 통과하도록 허용하는 방식으로 작동합니다. Docker에는 대부분의 범용 워크로드에 적합한 기본securityContext 섹션에 다음을 추가하여 컨테이너 런타임의 기본 seccomp 프로파일을 사용하도록 컨테이너 또는 포드를 구성할 수 있습니다.
securityContext: seccompProfile: type: RuntimeDefault
1.22부터(알파로 표시, 1.27부터 안정적) 단일 kubelet 플래그RuntimeDefault 수 있습니다--seccomp-default. 그런 다음에 지정된 프로필securityContext은 다른 프로필에만 필요합니다.
추가 권한이 필요한 사물에 대해 자체 프로필을 생성할 수도 있습니다. 이는 수동으로 수행하는 것이 매우 지루할 수 있지만, eBPF 또는 로그와 같은 도구를 사용하여 기준 권한 요구 사항을 seccomp 프로파일로 기록하는 것을 지원하는 Inspektor Gadget
AppArmor 및 SELinux
AppArmor 및 SELinux를 필수 액세스 제어 또는 MAC 시스템
AppArmor와 SELinux는 모두 Kubernetes와 통합되지만 Kubernetes 1.28부터는 주석을 통해 AppArmor 프로파일을 지정해야 하며 https://kubernetes.io/docs/tutorials/security/apparmor/#securing-a-pod
seccomp 프로파일과 마찬가지로 위에서 언급한 Security Profiles Operator는 클러스터의 노드에 프로파일을 배포하는 데 도움을 줄 수 있습니다. (향후 프로젝트는 seccomp와 마찬가지로 AppArmor 및 SELinux에 대한 프로필도 생성하는 것을 목표로 합니다.)
권장 사항
Amazon GuardDuty를 사용하여 EKS 환경에 대한 위협 모니터링 및 탐지
현재 EKS 런타임을 지속적으로 모니터링하고 EKS 감사 로그를 분석하고 맬웨어 및 기타 의심스러운 활동을 검사할 수 있는 솔루션이 없는 경우 Amazon은 AWS 환경을 보호하는 간단하고 빠르고 안전하며 확장 가능하고 비용 효율적인 원클릭 방법을 원하는 고객에게 Amazon GuardDuty
AWS Online Tech Talk "Amazon GuardDuty를 사용한 Amazon EKS에 대한 향상된 위협 탐지 - AWS Online Tech Talks"
선택 사항: 런타임 모니터링을 위한 타사 솔루션 사용
Linux 보안에 익숙하지 않은 경우 seccomp 및 Apparmor 프로파일을 생성하고 관리하는 것이 어려울 수 있습니다. 능숙해질 시간이 없는 경우 타사 상용 솔루션을 사용하는 것이 좋습니다. 이들 중 다수는 Apparmor 및 seccomp와 같은 정적 프로필을 벗어나 기계 학습을 사용하여 의심스러운 활동을 차단하거나 경고하기 시작했습니다. 이러한 솔루션 중 일부는 도구 도구 및 리소스 섹션에서 찾을 수 있습니다. 추가 옵션은 컨테이너용 AWS Marketplace에서 확인할 수 있습니다
seccomp 정책을 작성하기 전에 Linux 기능 추가/삭제 고려
기능에는 syscall이 연결할 수 있는 커널 함수의 다양한 검사가 포함됩니다. 검사에 실패하면 syscall은 일반적으로 오류를 반환합니다. 검사는 특정 시스템 호출이 시작될 때 또는 여러 가지 다른 시스템 호출을 통해 도달할 수 있는 영역(예: 특정 권한 있는 파일에 쓰기)의 커널에서 더 깊이 수행할 수 있습니다. 반면 Seccomp는 실행되기 전에 모든 시스템 호출에 적용되는 시스템 호출 필터입니다. 프로세스는 특정 시스템 호출 또는 특정 시스템 호출에 대한 특정 인수를 실행할 수 있는 권한을 취소할 수 있는 필터를 설정할 수 있습니다.
seccomp를 사용하기 전에 Linux 기능 추가/제거가 필요한 제어 기능을 제공하는지 고려합니다. 자세한 내용은 컨테이너에 대한 기능 설정을
포드 보안 정책(PSPs)을 사용하여 목표를 달성할 수 있는지 확인합니다.
포드 보안 정책은 과도한 복잡성 없이 보안 태세를 개선할 수 있는 다양한 방법을 제공합니다. seccomp 및 Apparmor 프로파일을 빌드하기 전에 PSPs에서 사용할 수 있는 옵션을 살펴봅니다.
주의
Kubernetes 1.25부터 PSPs 제거되고 Pod Security Admission
도구 및 리소스
-
Security Profiles Operator
는 사용자가 Kubernetes 클러스터에서 SELinux, seccomp 및 AppArmor를 더 쉽게 사용할 수 있도록 하는 Kubernetes 개선 사항입니다. 실행 중인 워크로드에서 프로파일을 생성하고 포드에 사용할 Kubernetes 노드에 프로파일을 로드하는 기능을 제공합니다. -
Inspektor Gadget
을 사용하면 seccomp 프로파일 생성 지원을 포함하여 Kubernetes에서 런타임 동작의 여러 측면을 검사, 추적 및 프로파일링할 수 있습니다. -
SUSE 오픈 소스, 제로 트러스트 컨테이너 보안 플랫폼의 NeuVector
는 프로세스 프로파일 규칙 및 파일 액세스 규칙을 제공합니다.