이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
EKS 기능에 대한 보안 고려 사항
이 주제에서는 IAM 역할 구성, Kubernetes 권한, 다중 클러스터 배포 및 교차 계정 AWS 리소스 관리를 위한 아키텍처 패턴을 포함하여 EKS 기능에 대한 중요한 보안 고려 사항을 다룹니다.
EKS 기능은 IAM 역할, EKS 액세스 항목 및 Kubernetes RBAC의 조합을 사용하여 AWS 서비스, 클러스터 내 Kubernetes 리소스 및 AWS CodeConnections, AWS Secrets Manager 및 기타 AWS 서비스와의 통합에 대한 보안 액세스를 제공합니다.
기능 IAM 역할
기능을 생성할 때 사용자는 EKS가 사용자를 대신하여 작업을 수행하는 데 사용하는 IAM 기능 역할을 제공합니다. 이 역할은 다음 조건을 충족해야 합니다.
-
클러스터 및 기능 리소스와 동일한 AWS 계정에 있어야 함
-
capabilities.eks.amazonaws.com서비스 위탁자가 역할을 수임하도록 허용하는 신뢰 정책이 있음 -
요구 사항에 따라 기능 유형 및 사용 사례에 적합한 IAM 권한이 있어야 합니다. 필요한 각 권한에 대한 자세한 내용은 AWS CodeConnections를 사용하여 Git 리포지토리에 연결, AWS Secrets Manager를 사용하여 애플리케이션 보안 암호 관리, ACK 권한 구성 섹션을 참조하세요.
특정 사용 사례에 필요한 권한 범위를 고려하고 요구 사항을 충족하는 데 필요한 권한만 부여하는 것이 모범 사례입니다. 예를 들어 Kube Resource Orchestrator의 EKS 기능을 사용하는 경우 IAM 권한이 필요하지 않을 수 있지만 AWS Controllers for Kubernetes의 EKS 기능을 사용하는 경우 하나 이상의 AWS 서비스에 대한 전체 액세스 권한을 부여할 수 있습니다.
중요
일부 사용 사례에서는 광범위한 관리 권한을 사용해야 할 수 있지만 특정 사용 사례에 필요한 최소 IAM 권한만 부여하여 최소 권한 원칙을 따름으로써 와일드카드 권한을 사용하는 대신 ARN 및 조건 키를 사용하여 특정 리소스에 대한 액세스를 제한합니다.
기능 IAM 역할 생성 및 구성에 대한 자세한 내용은 Amazon EKS 기능 IAM 역할 섹션을 참조하세요.
EKS 액세스 항목
IAM 역할로 기능을 생성하면 Amazon EKS는 클러스터에서 해당 역할에 대한 액세스 항목을 자동으로 생성합니다. 이 액세스 항목이 작동하려면 기능에 기준 Kubernetes 권한을 부여합니다.
참고
액세스 항목은 기능이 생성되는 클러스터에 대해 생성됩니다. Argo CD를 원격 클러스터에 배포하려면 Argo CD 기능이 애플리케이션을 배포 및 관리하기 위한 적절한 권한이 있는 액세스 항목을 해당 클러스터에서 생성해야 합니다.
액세스 항목에는 다음이 포함됩니다.
-
위탁자에 해당하는 IAM 역할 ARN
-
기준 Kubernetes 권한을 부여하는 기능별 액세스 항목 정책
-
기능 유형에 따라 적절한 범위(클러스터 전체 또는 네임스페이스 범위)
참고
Argo CD의 경우 네임스페이스 범위 권한이 기능 구성에 지정된 네임스페이스(기본값: argocd)에 부여됩니다.
기능별 기본 액세스 항목 정책
각 기능 유형은 다음과 같이 여러 기본 액세스 항목 정책을 설정하여 기능 역할에 필요한 권한을 부여합니다.
- kro
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSKROPolicy(클러스터 범위)ResourceGraphDefinitions를 감시 및 관리하고 RGD에서 정의한 사용자 지정 리소스의 인스턴스를 생성할 권한을 부여합니다.
-
- ACK
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSACKPolicy(클러스터 범위)모든 네임스페이스에서 ACK 사용자 지정 리소스에 대한 생성, 읽기, 업데이트 및 삭제를 수행할 권한을 부여합니다.
-
- Argo CD
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDClusterPolicy(클러스터 범위)Argo CD가 리소스를 검색하고 클러스터 범위의 객체를 관리하기 위한 사용할 클러스터 수준 권한을 부여합니다.
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDPolicy(네임스페이스 범위)Argo CD가 애플리케이션을 배포 및 관리하기 위한 네임스페이스 수준 권한을 부여합니다. 기능 구성에 지정된 네임스페이스(기본값:
argocd)로 범위가 지정됩니다.
-
자세한 내용은 액세스 정책 권한 검토 섹션을 참조하세요.
추가 Kubernetes 권한
일부 기능에는 기본 액세스 항목 정책 이외에 추가 Kubernetes 권한이 필요할 수 있습니다. 다음 중 하나를 사용하여 이러한 권한을 부여할 수 있습니다.
-
액세스 항목 정책: 액세스 항목에 추가 관리형 정책 연결
-
Kubernetes RBAC: 기능의 Kubernetes 사용자를 위해
Role또는ClusterRole바인딩 생성
ACK 보안 암호 리더 권한
일부 ACK 컨트롤러는 데이터베이스 암호와 같은 민감한 데이터를 검색하기 위해 Kubernetes 보안 암호를 읽어야 합니다. 다음 ACK 컨트롤러에는 보안 암호 읽기 액세스 권한이 필요합니다.
-
acm,acmpca,documentdb,memorydb,mq,rds,secretsmanager
보안 암호 읽기 권한을 부여하는 방법:
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicy액세스 항목 정책을 기능의 액세스 항목에 연결 -
ACK 리소스가 보안 암호를 참조하거나 클러스터 전체 액세스 권한을 부여하는 특정 네임스페이스로 정책 범위 지정
중요
보안 암호 읽기 권한은 액세스 항목 정책을 연결할 때 지정한 네임스페이스로 범위가 지정됩니다. 이를 통해 기능이 액세스할 수 있는 보안 암호를 제한할 수 있습니다.
kro의 임의 리소스 권한
kro에는 ResourceGraphDefinitions에 정의된 리소스를 생성 및 관리할 권한이 필요합니다. 기본적으로 kro는 RGD 자체만 감시하고 관리할 수 있습니다.
kro에 리소스를 생성할 권한을 부여하는 방법:
옵션 1: 액세스 항목 정책
AmazonEKSAdminPolicy 또는 AmazonEKSEditPolicy와 같은 사전 정의된 액세스 항목 정책을 기능의 액세스 항목에 연결합니다.
옵션 2: Kubernetes RBAC
기능의 Kubernetes 사용자에게 필요한 권한을 부여하는 ClusterRoleBinding을 생성합니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kro-cluster-admin subjects: - kind: User name: arn:aws:sts::111122223333:assumed-role/my-kro-role/kro apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
참고
kro의 Kubernetes 사용자 이름은 arn:aws:sts::ACCOUNT_ID:assumed-role/ROLE_NAME/kro 패턴을 따릅니다.
세션 이름 /kro는 EKS kro 기능에 의해 자동으로 설정됩니다.
기능에 필요한 IAM 권한
- Kube Resource Orchestrator(kro)
-
필요한 IAM 권한이 없습니다. 연결된 정책 없이 기능 역할을 생성할 수 있습니다. kro에는 Kubernetes RBAC 권한만 필요합니다.
- AWS Controllers for Kubernetes(ACK)
-
ACK가 생성 및 관리할 AWS 리소스를 관리할 권한이 필요합니다. 요구 사항에 따라 특정 서비스, 작업 및 리소스에 대한 권한 범위를 지정해야 합니다. IAM 역할 선택기를 사용하는 프로덕션 모범 사례를 포함하여 ACK 권한 구성에 대한 자세한 내용은 ACK 권한 구성 섹션을 참조하세요.
- Argo CD
-
기본적으로 IAM 권한은 필요하지 않습니다. 다음과 같은 경우에 선택적 권한이 필요할 수 있습니다.
-
AWS Secrets Manager: Secrets Manager에 Git 리포지토리 자격 증명을 저장하는 경우
-
AWS CodeConnections: Git 리포지토리 인증에 CodeConnections를 사용하는 경우
-
Amazon ECR: Amazon ECR에서 OCI 형식으로 저장된 헬름 차트를 사용하는 경우
-
보안 모범 사례
IAM 최소 권한
기능 리소스에 사용 사례에 필요한 권한만 부여합니다. 필요한 경우 기능에 광범위한 관리 권한을 부여할 수 없음을 의미하지는 않습니다. 이러한 경우 해당 리소스에 대한 액세스를 적절하게 규제해야 합니다.
기능 역할:
-
ACK: 가능하면 사용 사례 및 요구 사항에 따라 팀에 필요한 특정 AWS 서비스 및 리소스로 IAM 권한을 제한합니다.
-
Argo CD: 특정 Git 리포지토리 및 Kubernetes 네임스페이스에 대한 액세스 제한
-
kro: 신뢰 정책에 대한 기능 역할이 필요하지만 IAM 권한은 필요하지 않음(클러스터 RBAC만 사용)
예제: "Resource": "*" 대신 특정 리소스 또는 리소스 그룹에 대한 패턴을 지정합니다.
"Resource": [ "arn:aws:s3:::my-app-*", "arn:aws:rds:us-west-2:111122223333:db:prod-*" ]
IAM 조건 키를 사용하여 액세스를 추가로 제한합니다.
"Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } }
추가 IAM 구성 정보는 각 기능의 고려 사항 섹션을 참조하세요.
Argo CD 보안 암호에 대한 네임스페이스 격리
관리형 Argo CD 기능은 구성된 네임스페이스(기본값: argocd) 내 모든 Kubernetes 보안 암호에 액세스할 수 있습니다. 최적의 보안 태세를 유지 관리하려면 다음 네임스페이스 격리 사례를 따릅니다.
-
Argo CD 네임스페이스 내 Argo CD 관련 보안 암호만 유지
-
관련되지 않은 애플리케이션 보안 암호를 Argo CD와 동일한 네임스페이스에 저장하지 않음
-
Argo CD 작업에 필요하지 않은 애플리케이션 보안 암호에 별도의 네임스페이스 사용
이 격리를 통해 Argo CD의 보안 암호 액세스는 Git 리포지토리 인증 및 기타 Argo CD 관련 작업에 필요한 자격 증명으로만 제한됩니다.
Kubernetes RBAC
기능 리소스를 생성 및 관리할 수 있는 사용자 및 서비스 계정을 제어합니다. 적절한 RBAC 정책을 사용하여 전용 네임스페이스에 기능 리소스를 배포하는 것이 모범 사례입니다.
예제: ACK에서 작업할 RBAC 역할. 이를 통해 app-team 네임스페이스에서 S3 버킷 리소스를 관리할 수 있습니다.
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ack-s3-manager namespace: app-team rules: - apiGroups: ["s3.services.k8s.aws"] resources: ["buckets"] verbs: ["get", "list", "create", "update", "delete"]
감사 로깅
CloudTrail: 모든 EKS 기능 API 작업(생성, 업데이트, 삭제)이 AWS CloudTrail에 기록됩니다.
다음을 추적하도록 CloudTrail 로깅을 활성화합니다.
-
기능을 생성하거나 수정한 사람
-
기능 구성이 변경된 시점
-
사용 중인 기능 역할
네트워크 액세스 및 VPC 엔드포인트
프라이빗 Argo CD API 액세스
하나 이상의 VPC 엔드포인트를 호스팅된 Argo CD 엔드포인트에 연결하여 Argo CD API 서버에 대한 액세스를 제한할 수 있습니다. 그러면 퍼블릭 인터넷을 통과하지 않고도 VPC 내에서 Argo CD UI 및 API에 프라이빗으로 연결할 수 있습니다.
참고
호스팅된 Argo CD API 엔드포인트(eks-capabilities.region.amazonaws.com 사용)에 연결된 VPC 엔드포인트는 VPC 엔드포인트 정책을 지원하지 않습니다.
프라이빗 클러스터에 배포
Argo CD 기능은 애플리케이션을 완전한 프라이빗 EKS 클러스터에 배포하여 VPC 피어링 또는 복잡한 네트워킹 구성에 대한 필요성을 없앰으로써 운영상 상당한 이점을 제공합니다. 그러나 이 아키텍처를 설계하는 경우 Argo CD가 Git 리포지토리(퍼블릭일 수 있음)에서 구성을 가져와 프라이빗 클러스터에 적용하는지 고려합니다.
다음을 확인합니다.
-
민감한 워크로드에 대해 프라이빗 Git 리포지토리 사용
-
적절한 Git 리포지토리 액세스 제어 및 인증 구현
-
병합하기 전에 풀 요청을 통해 변경 사항 검토 및 승인
-
배포가 발생할 수 있는 시점을 제어하기 위해 Argo CD의 동기화 기간 사용 고려
-
권한 없는 구성 변경 사항에 대한 Argo CD 감사 로그 모니터링
규정 준수
EKS 기능은 완전관리형이며 Amazon EKS의 규정 준수 인증을 받았습니다.
최신 규정 준수 정보는 AWS Services in Scope by Compliance Program
다음 단계
-
ACK 권한 구성 - ACK에 대한 IAM 권한 구성
-
kro 권한 구성 - kro에 대한 Kubernetes RBAC 구성
-
Argo CD 권한 구성 - Argo CD에 대한 Identity Center 통합 구성
-
EKS 기능 문제 해결 - 보안 및 권한 문제 해결