[reinvent 2024] Amazon EKS에서 Kubernetes 워크로드 보호
Summary
Kubernetes 클러스터는 여러 구성 요소와 구성을 가진 복잡한 환경이 될 수 있습니다.소프트웨어 공급망, 제어 평면, 작업자 노드 및 POD 보안 정책 확보는 무단 액세스, 리소스 착취 및 데이터 유출을 방지하기 위해 필수적입니다. 이 세션에서는 Amazon EKS 클러스터를 보호하는 데 도움이되는 기능에 대해 알아보십시오.
보안 및 플랫폼 관리자가 고객에게 비즈니스 가치를 제공하면서 Amazon EK에 의존하는 정보, 시스템 및 자산을 보호 할 수있는 방법에 대한 지침을 얻으십시오. 이 세션에서는 Amazon EKS, Amazon ECR, AWS Identity and Access Management (IAM) 및 네트워크 보안과 관련된 보안 지침을 다룹니다.
리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?
Overview
들어가며
이 세션을 통해서 Kubernetes 워크로드에 보안을 강화하는 법을 배울 수 있었습니다.
목차는 1. 클러스터 범위 보안 제어 , 2. 인프라 범위 보안 제어, 3. 애플리케이션 범위 보안 제어로 구성되어 있습니다.
EKS 채택 증가
CNCF의 조사에 따르면 84% 는 쿠버네티스를 운영계, 검증계에 사용하고 있고 매년 수천만개의 EKS가 실행되고 있고, 해마다 늘고 있다고 합니다.
EKS를 이용하게 되면, EKS Cluster, 기초 서비스 및 글로벌 인프라는 AWS 에서 관리를 하며, 고객은 데이터 플레인 및 클러스터 패치 / 확장 / 관리는 우리가 직접 관리해야 합니다.
클러스터 범위 보안 제어
이전의 방식은 Auth Config Map 을 이용하여 Cluster에 접근 제어를 하는 방식이었습니다. 그래서 AWS와 Kubernetes API 양쪽에 설정을 해야하는 복잡성을 가지고 있었습니다.
현재는 Cluster Access 를 이용하여 AWS API 만 설정하면, 쉽고 세분화한 제어를 할수 있게 되었습니다. (블로그 참고 : https://aws.amazon.com/ko/blogs/containers/a-deep-dive-into-simplified-amazon-eks-access-management-controls/ )
그래서 기존 IRSA ( IAM Roles For Service Accounts ) 방법을 썼던 것을 EKS Pod Identity 쓰는 방법으로 변경되었습니다. EKS Pod Identity에 아래 3가지 새로운 기능이 생겼으며 이중에 EKS Add-on도 지원하는 기능이 제일 기다렸던 기능입니다. 예전에는 Application 에는 Access를 사용할 수 있지만 EKS Add-on는 IRSA만 사용할 수 있어서, Access로 일관성을 가질 수 없어 적용을 고민하였습니다.
인프라 범위 보안 제어
이번에 EKS Auto Mode 라는 신기능이 출시 되었으며, 이 기능을 사용하면 노드 인스턴스 또한 AWS에서 관리를 할 수 있게 되어, Pod만 배포하면 되므로 운영 부하를 줄여줍니다. (내부적으로 Karpenter 를 사용합니다.)(관련 링크 : https://aws.amazon.com/ko/eks/auto-mode/ )
Auto Mode를 적용하면, 기존의 Cluster EC2 Instnces 및 Cluster Capabilities 영역이 AWS 운영관리로 넘어가게 되는 듯 합니다.
이 기능 이외에 인프라 범위 보안 관점에서 아래 3가지가 추가 고려 대상 입니다.
- SSM를 사용하여 인스턴스 액세스 제한 및 최소화
- 컨테이너 최적화 OS 사용
- CIS Amazon EKS 벤치마크로 구성 확인
애플리케이션 범위 보안 제어
어플리케이션 보안 부분에 Kubernetes API 액세스 제어를 할 수 있는 Cedar 를 소개합니다. Cedar 홈페이지에 아래와 같이 설명되어 있습니다.
“이 프로젝트는 사용자가 Cedar 정책을 사용하여 Kubernetes API 요청에 대한 액세스 제어를 시행할 수 있도록 합니다. 사용자는 요청 또는 사용자 속성 기반 규칙, 레이블 기반 액세스 제어, 조건 및 거부 정책 시행과 같은 기능을 지원하는 Kubernetes에 대한 권한 부여 정책을 동적으로 만들 수 있습니다. 사용자는 또한 권한 부여 정책과 동일한 파일에 입장 정책을 만들어 정책 작성자에게 작성하고 추론할 수 있는 단일 언어를 제공할 수 있습니다.”(관련 링크 : https://github.com/awslabs/cedar-access-control-for-k8s )
아래와 같이 코드를 작성하여 정책을 생성 할 수 있어 관리하거나, Git으로 소스 관리를 할 수 있습니다
결론
이 세션을 통해서 기존에 구축되어 있던 EKS에 좀더 보완 적이고 운영 최소화를 할 수 있는 방법을 배울 수 있습니다.
- Access Entry를 적용함으로 써, 클러스터 접근 제어를 AWS API만으로 제어 할 수 있게 구축할 수 있습니다.
- Pod Identity 를 이용하여 EKS Addon 에도 설정 가능함으로 인해, Application 과 EKS Addon 모두 일관되게 Pod Identity 로 설정할 수 있습니다.
- Amazon EKS Auto Mode 를 통해 Node Group을 자동으로 관리하게 됨으로 써 운영 최소화를 가지게 되었습니다.
- Cedar 를 이용하여 애플리케이션 보안을 적용할 수 있게 되었습니다.
위의 내용은 모두 고객의 EKS에 적용할 수 있을 만한 메리트가 있는 기능들입니다. 기존 EKS 구축 프로세스에 위의 기능들을 적용하여, 좀더 업그레이드된 EKS를 구축/운영하시기 바랍니다.