실습
Authentication - EKS
kubeconfig 파일 리뷰
kubeconfig에 명시된 users 확인 - https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins
user에 명시된 명령어 실행
토큰값을 환경변수로 지정 - Base64로 인코딩된 부분만 캡쳐
Base64URL 유틸리티 설치
토큰값을 디코딩해서 환경변수로 지정
Node에 부여된 Label을 통해서 EKS 클러스터 이름 확인하고 환경변수로 저장
디코딩한 URL 호출
현재 설정된 AWS 자격증명을 확인
API 서버 주소를 확인하고 환경변수로 지정
Node 목록을 보는 API 호출
토큰값을 환경변수로 지정
Node 목록을 보는 API 호출
IAM 유저 생성
위에서 생성한 IAM 유저의 Access Key 생성
Access Key가 정상적으로 생성되었는지 확인
AWS CLI 자격증명 파일 및 설정 파일 백업
위에서 생성한 Access Key를 AWS CLI 자격증명 파일에 반영
위에서 명시한 프로필을 통해서 AWS API 호출
kubeconfig 파일 삭제
쿠버네티스 API 호출 시도
새로 생성한 IAM 유저의 자격증명으로 AWS CLI를 이용해서 kubeconfig 파일 생성
IAM 유저에서 eks:DescribeCluster 권한 부여
IAM 정책이 부여되었는지 확인
새로 생성한 IAM 유저의 자격증명으로 AWS CLI를 이용해서 kubeconfig 파일 생성 - 정책 적용까지 시간이 걸릴수 있음
새로 생성된 kubeconfig 파일 리뷰
쿠버네티스 API 호출 시도
user에 명시된 명령어 실행
토큰값을 환경변수로 지정 - Base64로 인코딩된 부분만 캡쳐
토큰값을 디코딩해서 환경변수로 지정
디코딩한 URL 호출
어드민 IAM 유저의 자격증명으로 AWS CLI를 이용해서 kubeconfig 파일 업데이트
Authorization
ClusterRole 목록 확인
cluster-admin ClusterRole 리뷰
ClusterRoleBinding 목록 확인
cluster-admin ClusterRoleBinding 리뷰
현재 kubeconfig에 설정된 유저의 자격증명으로 수행할수 있는 API 목록 확인
aws-auth ConfigMap에 명시된 MapRoles 내용 확인 - https://kubernetes.io/docs/reference/access-authn-authz/node/
한개의 Node의 인스턴스 ID를 확인하고 환경변수로 지정
Node에 부여된 IAM 인스턴스 프로필을 확인하고 환경변수로 지정
위에서 확인한 인스턴스 프로필에 연동된 IAM 역할 확인
view ClusterRole 리뷰
ClusterRoleBinding 생성
Node에 부여된 Label을 통해서 EKS 클러스터 이름을 확인하고 환경변수로 저장
EKS 클러스터가 생성되어 있는 AWS 계정번호 확인하고 환경변수로 저장
aws-auth ConfigMap에 규칙 추가
aws-auth ConfigMap 변경분 확인
john IAM 유저의 자격증명으로 AWS CLI를 이용해서 kubeconfig 파일 업데이트
현재 kubeconfig에 설정된 유저의 자격증명으로 수행할수 있는 API 목록 확인
클러스터에 생성된 Pod 목록 확인
Pod 생성 시도
IAM 역할 생성
aws-auth ConfigMap에 규칙 추가
aws-auth ConfigMap 변경분 확인
john IAM 유저의 자격증명으로 위에서 생성한 IAM 역할 전환하는 설정 추가해서 kubeconfig 파일 업데이트
새로 생성된 kubeconfig 파일 리뷰
쿠버네티스 API 호출 시도
john IAM 유저에서 sts:AssumeRole 권한 부여
IAM 정책이 부여되었는지 확인
쿠버네티스 API 호출 시도 - 정책 적용까지 시간이 걸릴수 있음
user에 명시된 명령어 실행
토큰값을 환경변수로 지정 - Base64로 인코딩된 부분만 캡쳐
토큰값을 디코딩해서 환경변수로 지정
디코딩한 URL 호출
어드민 IAM 유저의 자격증명으로 AWS CLI를 이용해서 kubeconfig 파일 업데이트
리소스 삭제
Service Account
Pod 생성
Pod 생성 확인
Pod에 부여된 ServiceAccount 확인
default 네임스페이스에 존재하는 ServiceAccount 목록 확인
ServiceAccount 생성
Pod 생성
생성된 Pod 안에서 포함된 kubectl을 통해서 kube-system 네임스페이스에 있는 Pod 목록 확인
위에서 생성한 ServiceAccount에 부여된 권한 확인
ClusterRole 생성
RoleBinding 생성
생성된 Pod 안에서 포함된 kubectl을 통해서 kube-system 네임스페이스에 있는 Pod 목록 확인
생성된 Pod 안에서 포함된 kubectl을 통해서 default 네임스페이스에 있는 Pod 목록 확인
위에서 생성한 ServiceAccount에 부여된 권한 확인
위에서 생성한 ServiceAccount에 kube-system 네임스페이스에 대해서 부여된 권한 확인
리소스 삭제
IAM roles for service accounts
Pod 생성
Pod 생성 확인
생성된 Pod에 부여된 AWS 자격증명 확인
Pod가 배포된 Node 확인
Pod가 배포된 Node의 인스턴스 ID를 확인하고 환경변수로 지정
Node에 부여된 IAM 인스턴스 프로필을 확인하고 환경변수로 지정
위에서 확인한 인스턴스 프로필에 연동된 IAM 역할 확인
Pod에 부여된 AWS 자격증명 확인
Pod에서 EC2 인스턴스 메타데이터를 통해서 상속받는 자격증명 확인
위에서 확인한 자격증명에 부여된 Access Key 확인
AWS CLI가 자격증명을 불러오는 순서 확인
Node에 부여된 Label을 통해서 EKS 클러스터 이름을 확인하고 환경변수로 저장
ServiceAccount 생성
생성된 ServiceAccount 확인
ServiceAccount에 명시된 IAM 역할 이을 확인하고 환경변수로 지정
ServiceAccount와 연동된 IAM 역할에 부여된 IAM 정책 확인
ServiceAccount와 연동된 IAM 역할에 부여된 신뢰관계 정책 확인
EKS 클러스터에 연동된 OIDC 제공자 확인
Pod를 재생성하고 위에서 생성한 ServiceAccount 부여
Pod에 부여된 AWS 자격증명 확인
Pod에서 EC2 인스턴스 메타데이터를 통해서 상속받는 자격증명 확인
AWS CLI가 자격증명을 불러오는 순서 확인
Pod에 지정된 환경변수 확인
Pod에 생성된 AWS 임시토큰 파일 내용 확인
위에서 확인한 토큰 내용 확인
ServiceAccount와 연동된 IAM 역할에 부여된 신뢰관계 정책 확인
Pod에서 AWS CLI를 통해서 S3 버킷 목록 확인
리소스 삭제
Last updated