- [실습] 2. EKS 인증/인가 - 데브옵스 신입 사원을 위한 myeks-bastion-2에 설정 해보기2024년 04월 13일
- yeongki0944
- 작성자
- 2024.04.13.:05
1. [myeks-bastion] testuser 사용자 생성
# testuser 사용자 생성 aws iam create-user --user-name testuser
# 사용자에게 프로그래밍 방식 액세스 권한 부여 aws iam create-access-key --user-name testuser
# testuser 사용자에 정책을 추가 aws iam attach-user-policy --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --user-name testuser
# get-caller-identity 확인 aws sts get-caller-identity --query Arn
kubectl whoami
# EC2 IP 확인 : myeks-bastion-EC2-2 PublicIPAdd 확인 aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,PrivateIPAdd:PrivateIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output table
2. [myeks-bastion-2] testuser 자격증명 설정 및 확인
# get-caller-identity 확인 >> 왜 안될까요? aws sts get-caller-identity --query Arn
# testuser 자격증명 설정 aws configure AWS Access Key ID [None]: *AKIA5ILF2F...* AWS Secret Access Key [None]: *ePpXdhA3cP....* Default region name [None]: *ap-northeast-2*
# get-caller-identity 확인 aws sts get-caller-identity --query Arn
# kubectl 시도 >> testuser도 AdministratorAccess 권한을 가지고 있는데, 실패 이유는? kubectl get node -v6 ls ~/.kube
실패이유 : ~/.kube/config 가 없어서 생긴 문제임
3. [myeks-bastion] testuser에 system:masters 그룹 부여로 EKS 관리자 수준 권한 설정
# 방안1 : eksctl 사용 >> iamidentitymapping 실행 시 aws-auth 컨피그맵 작성해줌 # Creates a mapping from IAM role or user to Kubernetes user and groups eksctl get iamidentitymapping --cluster $CLUSTER_NAME eksctl create iamidentitymapping --cluster $CLUSTER_NAME --username testuser --group system:masters --arn arn:aws:iam::$ACCOUNT_ID:user/testuser
# 확인 kubectl get cm -n kube-system aws-auth -o yaml | kubectl neat | yh
~~# 방안2 : 아래 edit로 mapUsers 내용 직접 추가! kubectl edit cm -n kube-system aws-auth --- apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::911283464785:role/eksctl-myeks-nodegroup-ng1-NodeInstanceRole-LHQ7DWHQQRZJ username: system:node:{{EC2PrivateDNSName}} mapUsers: | - groups: - system:masters userarn: arn:aws:iam::911283464785:user/testuser username: testuser ...~~
# 확인 : 기존에 있는 role/eksctl-myeks-nodegroup-ng1-NodeInstanceRole-YYYYY 는 어떤 역할/동작을 하는 걸까요? eksctl get iamidentitymapping --cluster $CLUSTER_NAME
4. [myeks-bastion-2] testuser kubeconfig 생성 및 kubectl 사용 확인
# testuser kubeconfig 생성 >> aws eks update-kubeconfig 실행이 가능한 이유는?, 3번 설정 후 약간의 적용 시간 필요 aws eks update-kubeconfig --name $CLUSTER_NAME --user-alias testuser
# 첫번째 bastic ec2의 config와 비교해보자 cat ~/.kube/config | yh
# kubectl 사용 확인 kubectl ns default kubectl get node -v6
# rbac-tool 후 확인 >> 기존 계정과 비교해보자 >> system:authenticated 는 system:masters 설정 시 따라오는 것 같은데, 추가 동작 원리는 모르겠네요??? kubectl krew install rbac-tool && kubectl rbac-tool whoami
5. [myeks-bastion] testuser 의 Group 변경(system:masters → system:authenticated)으로 RBAC 동작 확인
# 방안2 : 아래 edit로 mapUsers 내용 직접 수정 system:authenticated ~~~~kubectl edit cm -n kube-system aws-auth
# 확인 eksctl get iamidentitymapping --cluster $CLUSTER_NAME
6. [myeks-bastion-2] testuser kubectl 사용 확인
# 시도 kubectl get node -v6 kubectl api-resources -v5
7. [myeks-bastion]에서 testuser IAM 맵핑 삭제
# testuser IAM 맵핑 삭제 eksctl delete iamidentitymapping --cluster $CLUSTER_NAME --arn arn:aws:iam::$ACCOUNT_ID:user/testuser
# Get IAM identity mapping(s) eksctl get iamidentitymapping --cluster $CLUSTER_NAME kubectl get cm -n kube-system aws-auth -o yaml | yh
8. [myeks-bastion-2] testuser kubectl 사용 확인
# 시도 kubectl get node -v6 kubectl api-resources -v5
9. (참고) config 샘플 - 링크
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: **mapRoles**: | *- groups:* - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/my-role username: system:node:{{EC2PrivateDNSName}} *- groups:* - eks-console-dashboard-full-access-group rolearn: arn:aws:iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role **mapUsers**: | *- groups:* - system:masters userarn: arn:aws:iam::111122223333:user/admin username: admin *- groups:* - eks-console-dashboard-restricted-access-group userarn: arn:aws:iam::444455556666:user/my-user username: my-user
10. iam 삭제 명령어
aws iam list-access-keys --user-name testuser --query 'AccessKeyMetadata[].AccessKeyId' --output text | xargs -I {} aws iam delete-access-key --access-key-id {} --user-name testuser && aws iam list-attached-user-policies --user-name testuser --query 'AttachedPolicies[].PolicyArn' --output text | xargs -I {} aws iam detach-user-policy --user-name testuser --policy-arn {} && aws iam delete-user --user-name testuser
aws iam get-user --user-name testuser
다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)