Amazon EMR on EKS 보안 모범 사례
Amazon EMR on EKS는 자체 보안 정책을 개발하고 구현할 때 고려해야 할 여러 보안 기능을 제공합니다. 다음 모범 사례는 일반적인 지침이며 완벽한 보안 솔루션을 나타내지는 않습니다. 이러한 모범 사례는 환경에 적절하지 않거나 충분하지 않을 수 있으므로 참고용으로만 사용해 주십시오.
참고
보안 모범 사례는 Amazon EMR on EKS 보안 모범 사례 섹션을 참조하세요.
최소 권한의 원칙 적용
Amazon EMR on EKS는 실행 역할과 같은 IAM 역할을 사용하는 애플리케이션에 대한 세분화된 액세스 정책을 제공합니다. 이러한 실행 역할은 IAM 역할의 신뢰 정책을 통해 Kubernetes 서비스 계정에 매핑됩니다. Amazon EMR on EKS는 등록된 Amazon EKS 네임스페이스에서 사용자가 제공한 애플리케이션 코드를 실행하는 포드를 생성합니다. 애플리케이션 코드를 실행하는 작업 포드는 다른 AWS 서비스에 연결할 때 실행 역할을 수임합니다. 애플리케이션 조치와 로그 대상에 대한 액세스 등 작업에 필요한 최소한의 권한만 실행 역할에 부여하는 것이 좋습니다. 또한 애플리케이션 코드가 변경될 때마다 정기적으로 권한을 확인하기 위해 작업을 감사하는 것이 좋습니다.
엔드포인트에 대한 액세스 제어 목록
관리형 엔드포인트는 VPC에서 하나 이상의 프라이빗 서브넷을 사용하도록 구성된 EKS 클러스터에 대해서만 생성할 수 있습니다. 이 구성은 관리형 엔드포인트에서 생성한 로드 밸런서에 대한 액세스를 제한하므로 VPC에서만 액세스할 수 있습니다. 보안을 더욱 강화하기 위해 수신 트래픽을 선택한 IP 주소 세트로 제한할 수 있도록 이러한 로드 밸런서로 보안 그룹을 구성하는 것이 좋습니다.
사용자 지정 이미지에 대한 최신 보안 업데이트 받기
Amazon EMR on EKS에서 사용자 지정 이미지를 사용하려는 경우 이미지에 모든 바이너리와 라이브러리를 설치할 수 있습니다. 이미지에 추가하는 바이너리의 보안 패치는 사용자의 책임입니다. Amazon EMR on EKS 이미지는 최신 보안 패치를 통해 정기적으로 패치됩니다. 최신 이미지를 가져오려면 Amazon EMR 릴리스의 새 기본 이미지 버전이 있을 때마다 사용자 지정 이미지를 다시 빌드해야 합니다. 자세한 내용은 Amazon EMR on EKS 릴리스 및 기본 이미지 URI 선택에 관한 세부 정보 단원을 참조하세요.
포드 보안 인증 액세스 제한
Kubernetes는 포드에 보안 인증을 할당하는 여러 방법을 지원합니다. 여러 보안 인증 제공업체를 프로비저닝하면 보안 모델이 더 복잡해질 수 있습니다. Amazon EMR on EKS는 등록된 EKS 네임스페이스에서 표준 보안 인증 제공업체로 서비스 계정에 대한 IAM 역할(IRSA)의 사용을 채택했습니다. kube2iam
신뢰할 수 없는 애플리케이션 코드 격리
Amazon EMR on EKS는 시스템 사용자가 제출한 애플리케이션 코드의 무결성을 검사하지 않습니다. 임의 코드를 실행하는 신뢰할 수 없는 테넌트가 작업을 제출하는 데 사용할 수 있는 다중 실행 역할로 구성된 다중 테넌트 가상 클러스터를 실행하는 경우 악성 애플리케이션이 권한을 에스컬레이션할 위험이 있습니다. 이 경우 비슷한 권한을 가진 실행 역할을 다른 가상 클러스터로 격리하는 방법을 고려합니다.
역할 기반 액세스 제어(RBAC) 권한
관리자는 Amazon EMR on EKS 관리형 네임스페이스에 대한 역할 기반 액세스 제어(RBAC)를 엄격하게 제어해야 합니다. 적어도 Amazon EMR on EKS 관리형 네임스페이스에서 작업 제출자에게 다음 권한을 부여해서는 안 됩니다.
configmap을 수정할 Kubernetes RBAC 권한 - Amazon EMR on EKS는 Kubernetes configmap을 사용하여 관리형 서비스 계정 이름을 포함하는 관리형 포드 템플릿을 생성하기 때문입니다. 이 속성은 변경해서는 안 됩니다.
Amazon EMR on EKS 포드로 실행할 Kubernetes RBAC 권한 - 관리형 SA 이름을 포함한 관리형 포드 템플릿에 액세스 권한을 부여하지 않도록 방지합니다. 이 속성은 변경해서는 안 됩니다. 또한 이 권한은 포드에 마운트된 JWT 토큰에 대한 액세스 권한을 부여하고, 이 권한을 통해 실행 역할 보안 인증을 검색하는 데 사용할 수 있습니다.
Kubernetes RBAC 포드 생성 권한 - 사용자보다 더 많은 AWS 권한을 가진 IAM 역할에 매핑될 수 있는 Kubernetes ServiceAccount를 사용하여 포드를 생성하지 못하도록 방지합니다.
변형 웹후크를 배포할 Kubernetes RBAC 권한 - 사용자가 변형 웹후크를 사용하여 Amazon EMR on EKS에서 생성한 포드의 Kubernetes ServiceAccount 이름을 변경하지 못하도록 방지합니다.
Kubernetes 보안 암호를 읽을 수 있는 Kubernetes RBAC 권한 - 사용자가 이러한 보안 암호에 저장된 기밀 데이터를 읽지 못하도록 방지합니다.
노드 그룹 IAM 역할 또는 인스턴스 프로파일 보안 인증에 대한 액세스를 제한합니다.
노드 그룹의 IAM 역할에 최소 AWS 권한을 할당하는 것이 좋습니다. 이렇게 하면 EKS 워커 노드의 인스턴스 프로파일 보안 인증을 사용하여 실행할 수 있는 코드에 의한 권한 상승을 방지하는 데 도움이 됩니다.
Amazon EMR on EKS 관리형 네임스페이스에서 실행되는 모든 포드의 인스턴스 프로파일 보안 인증에 대한 액세스를 완전히 차단하려면 EKS 노드에서
iptables
명령을 실행하는 것이 좋습니다. 자세한 내용은 Amazon EC2 인스턴스 프로파일 보안 인증에 대한 액세스 제한을 참조하세요. 서비스 계정 IAM 역할의 범위를 적절하게 지정하여 포드에 필요한 모든 권한을 부여하는 것이 중요합니다. 예를 들어 노드 IAM 역할에는 Amazon ECR에서 컨테이너 이미지를 가져올 수 있는 권한이 할당됩니다. 포드에 이러한 권한이 할당되지 않은 경우 포드는 Amazon ECR에서 컨테이너 이미지를 가져올 수 없습니다. VPC CNI 플러그인도 업데이트해야 합니다. 자세한 내용은 안내: 서비스 계정에 IAM 역할을 사용하도록 Amazon VPC CNI 플러그인 업데이트를 참조하세요.