Ssoon
AWS EKS - Security - Amazon EKS Pod Identity 본문
CloudNet@ 팀의 AWS EKS Workshop Study 2기 - 6주차
# EKS Workshop 참고
- Amazon EKS Pod Identity는 Kubernetes 클러스터 내에서 AWS IAM 서비스 계정을 사용하여 AWS 리소스에 액세스할 수 있는 기능을 제공
- 각각의 Kubernetes 파드가 고유한 IAM 역할을 가지고 AWS 리소스와 상호 작용
- Kubernetes 워크로드가 AWS 리소스에 대한 접근 권한을 필요할 때마다 동적으로 IAM 역할을 할당받아 사용
- 동적 IAM 역할 할당: 각 파드는 자신에게 할당된 IAM 역할을 사용하여 AWS 리소스에 액세스할 수 있습니다. 이는 각 파드가 필요한 권한을 동적으로 가져와서 AWS 리소스에 접근할 수 있도록 해줍니다.
- Fine-grained 권한 제어: 각 파드는 IAM 역할을 통해 할당된 권한만큼만 AWS 리소스에 액세스할 수 있습니다. 이는 보안을 강화하고 최소한의 권한을 가진 서비스 계정만을 사용하여 리소스에 접근할 수 있도록 합니다.
- IAM OIDC 공급자와의 통합: Amazon EKS Pod Identity는 IAM OIDC 공급자를 사용하여 Kubernetes 서비스 계정과 IAM 역할 간의 매핑을 관리합니다. 이를 통해 Kubernetes 클러스터 내에서 파드와 IAM 역할 간의 신뢰 관계를 설정할 수 있습니다.
- AWS 리소스 접근 제어: Amazon EKS Pod Identity를 사용하면 각 파드가 AWS 리소스에 액세스할 때 AWS 리소스에 대한 액세스 제어를 수행할 수 있습니다. 이는 AWS에서 제공하는 다양한 보안 기능을 활용하여 리소스에 대한 접근을 제한하고 모니터링할 수 있도록 해줍니다.
✅ 실습준비
- Workshop 실습 환경 준비
더보기


- Amazon DynamoDB 테이블 생성
- AmazonEKS 워크로드가 DynamoDB 테이블에 액세스할 수 있도록 IAM 역할을 생성
- EKS 포드 아이덴티티 에이전트용 EKS 관리형 애드온을 설치
- Amazon EKS 클러스터에 AWS 로드 밸런서 컨트롤러를 설치
- carts 구성 요소는 Amazon EKS와 비관계형 데이터베이스 Amazon DynamoDB를 스토리지 백엔드로 사용
- carts API 가 배포되는 방식은 EKS 클러스터에서 컨테이너로 실행되는 경량 버전의 Amazon DynamoDB를 사용
✅ Using DynamoDB
- 이미 생성된 DynamoDB 테이블을 사용하도록 카트 서비스를 다시 구성
- 'carts' 네임스페이스에 있는 'carts' ConfigMap 확인
- 브라우저를 사용하여 애플리케이션의 현재 상태를 확인
- 애플리케이션의 UI에 액세스할 수 있는 UI 네임스페이스에 ui-nlb라는 이름의 로드밸런서 유형 서비스가 프로비저닝
- Kustomization Patch
- 컨피그맵을 덮어쓰고, SDK가 테스트 포드 대신 실제 DynamoDB 서비스를 기본값으로 사용하도록 지시하는 DynamoDB 엔드포인트 구성을 제거
- 이미 생성된 DynamoDB 테이블의 이름을 환경 변수 CARTS_DYNAMODB_TABLENAME에서 가져와서 제공
- ~/environment/eks-workshop/modules/security/eks-pod-identity/dynamo/kustomization.yaml
- ~/environment/eks-workshop/modules/security/eks-pod-identity/dynamo/carts-configMap.yaml
- CARTS_DYNAMODB_TABLENAME의 값을 확인한 다음 Kustomize를 실행하여 실제 DynamoDB 서비스를 사용
- 컨피그맵을 새 값으로 변경
- 새로운 컨피그맵 콘텐츠를 가져오려면 카트 애플리케이션의 모든 파드를 재활용
- 브라우저에서 로드하면 페이지에 액세스할 수 없습니다
✅ Understanding Pod IAM
- 카트 서비스 로그 확인
- 애플리케이션은 파드가 DynamoDB에 액세스하는 데 사용하는 IAM 역할에 필요한 권한이 없음을 나타내는 Exception을 생성
- 이는 기본적으로 파드에 연결된 IAM 롤이나 정책이 없는 경우, 실행 중인 EC2 인스턴스에 할당된 인스턴스 프로빌에 연결된 IAM 롤을 사용하기 때문에 발생
- 롤에는 DynamoDB에 대한 액세스를 허용하는 IAM 정책이 없음
- EKS 파드 아이덴티티를 사용하여 파드 수준에서 카트 애플리케이션에 필요한 특정 액세스를 허용
✅ Using EKS Pod Identity
- 클러스터에서 EKS 파드 아이덴티티를 사용하려면, EKS 클러스터에 EKS 파드 아이덴티티 에이전트 애드온을 설치
- 새 애드온에 의해 EKS 클러스터에 생성된 것을 확인
- kube-system 네임스페이스에 배포된 데몬셋이 클러스터의 각 노드에서 파드를 실행하는 것을 확인
- 실습의 준비단계에서 prepare-environment 스크립트를 실행할 때 카트 서비스가 DynamoDB 테이블을 읽고 쓰는 데 필요한 권한을 제공하는 IAM 역할이 생성되었습니다. 아래와 같이 정책을 확인할 수 있습니다.
- 역할은 EKS 서비스 주체가 포드 ID에 대해 이 역할을 맡을 수 있도록 허용하는 적절한 신뢰 관계로 구성
- Amazon EKS 포드 ID 기능을 사용하여 배포에 사용될 Kubernetes 서비스 계정에 AWS IAM 역할을 연결
- carts Deployment 가 카트 서비스 계정을 사용하고 있는지 확인
- 서비스 계정이 확인되면 카트 포드를 재활용
✅ Verifying DynamoDB Access
- 승인된 IAM 역할과 연결된 카트 서비스 계정을 사용하면 카트 포드에 DynamoDB 테이블에 액세스할 수 있는 권한이 있습니다.
- 다시 웹 스토어에 접속하여 장바구니로 이동
- AWS IAM 역할이 서비스 계정과 연결되면 해당 서비스 계정을 사용하여 새로 생성된 포드는 EKS 포드 ID 웹훅에 의해 차단
- 이 웹후크는 Amazon EKS 클러스터의 제어 플레인에서 실행되며 AWS에서 완전히 관리
- AWS_DEFAULT_REGION
- AWS_STS_REGIONAL_ENDPOINTS
- AWS_CONTAINER_CREDENTIALS_FULL_URI
- AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY
'AWS EKS Workshop Study 2기' 카테고리의 다른 글
AWS EKS - Security - Sealed Secrets 을 사용하여 Secrets 보호 (0) | 2024.04.10 |
---|---|
AWS EKS - Security - AWS Secrets Manager로 Secrets 관리 (0) | 2024.04.10 |
AWS EKS - Autoscaling - Workloads (1) | 2024.03.31 |
AWS EKS - Autoscaling - Compute (0) | 2024.03.31 |
AWS EKS - Observability - Cost visibility with Kubecost (0) | 2024.03.30 |
Comments