Amazon EKS 다중 IAM 사용자 구성 가이드

안녕하세요:)

베스핀글로벌 D&A실 김예지 님이 작성해 주신 ‘Amazon EKS 다중 IAM 사용자 구성 가이드’에 대해 알아보겠습니다.

[구성 가이드]


Bastion Host 에서 EKS 접근이 가능한 기존 사용자 확인 및 새로운 IAM 사용자 추가
// (1) 클러스터 내의 사용자 확인
eksctl get iamidentitymapping --cluster 클러스터이름 

// (2) aws-auth 내에 사용자 추가
// 네임스페이스가 kube-system 에서 , Configmap 의 aws-auth 를    수정하기 
kubectl edit configmap aws-auth -n kube-system

// (3) 사용자 추가 - mapRoles 하단에 mapUsers 를    삽입 
mapRoles: |
       - groups:
         - system:bootstrappers 
         - system:nodes
         rolearn: arn:aws:iam::{account_id}:role/{workernode-role} 
         username: system:node:{{EC2PrivateDNSName}}
// --------------------------------- 추가 ----------------------------------- 
mapUsers: |
    - userarn: arn:aws:iam::{account_id}:user/{user_name1} 
      username: user_name1
      groups:
        - system:mastsers
    - userarn: arn:aws:iam::{account_id}:user/{user_name2} 
      username: user_name2
      groups:
        - system:masters
// ------------------------------------------------------------------------- 
    - userarn: arn:aws:iam::{account_id}:user/{dev_user1}
      username: dev_user1 
      groups:
        - dev
    - userarn: arn:aws:iam::{account_id}:user/{dev_user2} 
      username: dev_user2
      groups: 
        - dev
AWS 콘솔에서 추가한 사용자에 대한 IAM 정책 부여 (최소 권한의 원칙) – EKSuserpolicy
{
"Version": "2012-10-17", 
"Statement": [
     {
            "Action": [
                 "eks:DescribeCluster" 
             ],
             "Resource": "arn:aws:eks:<region_name>:<account_id>:cluster/<eks_cluster_name>", 
             "Effect": "Allow"
           }
     }
}
추가 사용자로 aws configure 등록 및 확인
// aws configre 등록
aws configure
// aws credential 확인
aws sts get-caller-identity

[ 추가사항 ] RBAC 할당 – 특정 네임스페이스로 제한 시


Role 생성 – 특정할 네임스페이스 지정
apiVersion: rbac.authorization.k8s.io/v1 
kind: Role
metadata:
    namespace: 네임스페이스명 
    name: 롤이름
rules:
- apiGroups: 
   - "*" 
   resources:
   - "*" 
   verbs: 
   - "*"
Rolebinding 생성
apiVersion: rbac.authorization.k8s.io/v1 
kind: RoleBinding
metadata:
    name: nginx-rolebinding 
    namespace: 네임스페이스명
subjects:
- kind: Group
  name: 그룹명/사용자 지정
  apiGroup: rbac.authorization.k8s.io 
roleRef:
  kind: Role 
  name: role 이름
  apiGroup: rbac.authorization.k8s.io
다시 aws-auth 수정
// aws-auth 파일 접속
kubectl edit configmap aws-auth -n kube-system
// 파일 내에서 그룹 수정 
mapUsers: |
        - userarn: arn:aws:iam::계정ID:user/사용자명 
          username: 사용자명
          groups: 
            - 그룹명
aws credential 파일 수정
// aws credential 파일 수정 
vi ~/.aws/credentials

// 유저 변경
export AWS_PROFILE=Profile_Name 

// aws configure 확인
aws sts get-caller-identity

감사합니다 🙂

Written by 김 예지 / Yeji Kim

Cloud Engineer

Leave a Comment