클러스터에 대한 Amazon EKS 보안 그룹 요구사항 보기
클러스터에 대한 Amazon EKS 보안 그룹 요구사항 보기 (View Amazon EKS security group requirements for clusters)
이 주제는 Amazon EKS 클러스터의 보안 그룹 요구사항을 설명해요.
출처: 문서
본문
기본 클러스터 보안 그룹 (Default cluster security group)
클러스터를 만들 때 Amazon EKS는 eks-cluster-sg-my-cluster-uniqueID라는 이름의 보안 그룹을 만들어요. 이 보안 그룹에는 다음과 같은 기본 규칙이 있어요.
| 규칙 유형 | 프로토콜 | 포트 | 소스 | 대상 |
|---|---|---|---|---|
| 인바운드(Inbound) | 모두 | 모두 | Self | |
| 아웃바운드(Outbound) | 모두 | 모두 | 0.0.0.0/0(IPv4) 또는 ::/0 (IPv6) |
|
| 아웃바운드(Outbound) | 모두 | 모두 | Self (EFA 트래픽용) |
기본 보안 그룹에는 대상이 같은 보안 그룹인 EFA(Elastic Fabric Adapter) 트래픽을 허용하는 아웃바운드 규칙이 포함돼 있어요. 이는 클러스터 내 EFA 트래픽을 활성화하며, AI/ML 및 HPC(고성능 컴퓨팅) 워크로드에 유용해요. 자세한 내용은 Amazon Elastic Compute Cloud 사용 설명서의 Amazon EC2에서 AI/ML 및 HPC 워크로드용 Elastic Fabric Adapter를 참고하세요.
중요
클러스터에
0.0.0.0/0(IPv4),::/0(IPv6)으로 가는 아웃바운드 규칙이 필요하지 않다면 제거할 수 있어요. 제거하더라도 클러스터 트래픽 제한에 나열된 최소 규칙은 여전히 있어야 해요. 클러스터 보안 그룹 자체와의 트래픽을 허용하는 인바운드 또는 아웃바운드 규칙을 제거하면 Amazon EKS는 클러스터가 업데이트될 때마다 이를 다시 만들어요.
Amazon EKS는 보안 그룹에 다음 태그를 추가해요. 태그를 제거하면 Amazon EKS는 클러스터가 업데이트될 때마다 보안 그룹에 다시 추가해요.
| 키 | 값 |
|---|---|
kubernetes.io/cluster/my-cluster |
owned |
aws:eks:cluster-name |
my-cluster |
Name |
eks-cluster-sg-my-cluster-uniqueid |
Amazon EKS는 이 보안 그룹을 자동으로 다음 리소스에도 연결해요.
- 클러스터를 만들 때 생성되는 2~4개의 탄력적 네트워크 인터페이스(이 문서의 나머지 부분에서는 네트워크 인터페이스로 지칭).
- 만든 관리형 노드 그룹의 모든 노드 네트워크 인터페이스.
기본 규칙은 클러스터와 노드 사이의 모든 트래픽이 자유롭게 흐르게 하고 모든 아웃바운드 트래픽이 모든 대상으로 나가도록 허용해요. 클러스터를 만들 때 (선택 사항으로) 자신의 보안 그룹을 지정할 수 있어요. 지정하면 Amazon EKS는 여러분이 지정한 보안 그룹도 클러스터용으로 만든 네트워크 인터페이스에 연결해요. 하지만 만든 노드 그룹에는 연결하지 않아요.
클러스터 보안 그룹 ID를 AWS Management Console의 클러스터 Networking 섹션에서 확인할 수 있어요. 또는 다음 AWS CLI 명령을 실행해 확인할 수 있어요.
aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId
클러스터 트래픽 제한하기 (Restricting cluster traffic)
EKS 컨트롤 플레인과 노드 사이의 열린 포트를 제한해야 한다면 0.0.0.0/0(IPv4)/::/0(IPv6)으로 가는 기본 아웃바운드 규칙을 제거하고 클러스터에 필요한 다음 최소 규칙을 추가할 수 있어요.
- 소스가 self(클러스터 보안 그룹에서 오는 트래픽)인 모든 트래픽을 허용하는 기본 인바운드 규칙을 제거하면 Amazon EKS는 클러스터가 업데이트될 때 이를 다시 만들어요.
- 대상이 self(클러스터 보안 그룹으로 가는 트래픽)인 모든 트래픽을 허용하는 기본 아웃바운드 규칙을 제거하면 Amazon EKS는 클러스터가 업데이트될 때 이를 다시 만들어요.
| 규칙 유형 | 프로토콜 | 포트 | 대상 |
|---|---|---|---|
| 아웃바운드(Outbound) | TCP | 443 | 클러스터 보안 그룹 |
| 아웃바운드(Outbound) | TCP | 10250 | 클러스터 보안 그룹 |
| 아웃바운드(Outbound, DNS) | TCP 및 UDP | 53 | 클러스터 보안 그룹 |
다음 트래픽에 대한 규칙도 추가해야 해요.
- 노드가 노드 간 통신에 사용할 것으로 예상되는 프로토콜과 포트.
- 노드가 시작 시 클러스터 인트로스펙션과 노드 등록을 위해 Amazon EKS API에 접근할 수 있도록 하는 아웃바운드 인터넷 접근. 노드에 인터넷 접근이 없다면 추가 고려 사항에 대해 제한된 인터넷 접근으로 프라이빗 클러스터 배포하기를 검토하세요.
- 노드가 이미지를 가져올 Amazon ECR 또는 DockerHub 같은 다른 컨테이너 레지스트리 API에서 컨테이너 이미지를 가져올 수 있는 접근. 자세한 내용은 AWS 일반 참조의 AWS IP 주소 범위를 참고하세요.
- 노드의 Amazon S3 접근.
IPv4와 IPv6 주소에는 별도의 규칙이 필요해요.
하이브리드 노드를 사용한다면 온프레미스 노드와 Pod와의 통신을 허용하도록 클러스터에 추가 보안 그룹을 추가해야 해요. 자세한 내용은 하이브리드 노드용 네트워킹 준비하기를 참고하세요.
규칙을 제한하는 것을 고려한다면 변경된 규칙을 프로덕션 클러스터에 적용하기 전에 모든 Pod를 철저히 테스트하는 것을 권장해요.
Kubernetes 1.14 및 플랫폼 버전 eks.3 또는 이전 버전으로 클러스터를 원래 배포했다면 다음을 고려하세요.
- 컨트롤 플레인과 노드 보안 그룹도 있을 수 있어요. 이 그룹이 만들어졌을 때 이전 표에 나열된 제한된 규칙을 포함했어요. 이 보안 그룹은 더 이상 필요하지 않으므로 제거할 수 있어요. 하지만 클러스터 보안 그룹에 이 그룹들이 포함하는 규칙이 있는지 확인해야 해요.
- API를 직접 사용하거나 AWS CLI나 AWS CloudFormation 같은 도구를 사용해 클러스터를 배포했고 클러스터 생성 시 보안 그룹을 지정하지 않았다면, VPC의 기본 보안 그룹이 Amazon EKS가 만든 클러스터 네트워크 인터페이스에 적용됐어요.
공유 보안 그룹 (Shared security groups)
Amazon EKS는 공유 보안 그룹을 지원해요.
- Security Group VPC Associations는 보안 그룹을 같은 계정과 리전의 여러 VPC와 연결해요. 보안 그룹을 여러 VPC와 연결하는 방법은 Amazon VPC 사용 설명서를 참고하세요.
- 공유 보안 그룹을 사용하면 보안 그룹을 다른 AWS 계정과 공유할 수 있어요. 계정은 같은 AWS 조직에 있어야 해요. 보안 그룹을 조직과 공유하는 방법은 Amazon VPC 사용 설명서를 참고하세요.
- 보안 그룹은 항상 단일 AWS 리전으로 제한돼요.
Amazon EKS 고려 사항
EKS는 표준 보안 그룹과 동일한 공유 또는 다중 VPC 보안 그룹 요구사항을 가져요.