IAM 역할 생성

인증 및 자격증명 환경을 구성합니다.

1. IAM 역할 만들기

IAM 서비스 대쉬보드 접속 및 역할(Role) 생성을 합니다. AWS 서비스에서 IAM을 선택하고, 역할 만들기를 선택합니다.

  • AWS ServiceEC2가 선택 되었는지 확인한 다음 Next를 클릭하여 권한을 봅니다.

  • AdministratorAccess가 선택하고 다음 Next를 클릭합니다.

  • 이름 : eksworkshop-admin 라고 입력하고, Create Role을 클릭하여 생성합니다.

2. Cloud9에 IAM 역할 부여하기

AWS 서비스 검색 창에서 EC2를 검색하고 클릭합니다.

Cloud9 인스턴스를 선택하고 Actions > Security > Modify IAM Role 순서대로 메뉴를 선택합니다.

IAM Role 리스트에서 방금 생성한 eksworkshop-admin 을 선택하고 적용합니다.

3. Cloud9에 IAM 설정 수정하기

Cloud9는 일반적으로 IAM 자격 증명을 동적으로 관리합니다. 현재 aws-iam-authenticator 플러그인과 호환되지 않으므로 이를 비활성화하고 대신 IAM 역할을 사용합니다.

Cloud9으로 돌아가서 우측상단의 setting(톱니바퀴 버튼)을 클릭하거나 새 탭을 실행하여 환경설정 탭을 엽니다.

  • AWS SETTINGS을 선택합니다.

  • Credentials > AWS managed temporary credentials 설정을 Off 한 후 환경설정 탭을 닫습니다. (우측상단의 setting 버튼 클릭)

임시 자격 증명이 없는지 확실히 하기 위해 기존의 자격 증명 파일도 제거합니다.

rm -vf ${HOME}/.aws/credentials

현재 리전을 기준으로 aws-cli를 구성해야 합니다 :

export ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
export AZS=($(aws ec2 describe-availability-zones --query 'AvailabilityZones[].ZoneName' --output text --region $AWS_REGION))

AWS_REGION이 원하는 지역으로 설정되어 있는지 확인 합니다. (서울은 ap-northeast-2 입니다.)

test -n "$AWS_REGION" && echo AWS_REGION is "$AWS_REGION" || echo AWS_REGION is not set

bash_profile에 저장합니다.

echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profile
echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bash_profile
echo "export AZS=(${AZS[@]})" | tee -a ~/.bash_profile
aws configure set default.region ${AWS_REGION}
aws configure get default.region

4. IAM 역할 확인

GetCallerIdentity CLI 명령을 사용하여 Cloud9 IDE가 올바른 IAM 역할을 사용하는지 확인합니다.

먼저 AWS CLI에서 IAM 역할 이름을 가져옵니다.

aws sts get-caller-identity --query Arn | grep eksworkshop-admin -q && echo "IAM role valid" || echo "IAM role NOT valid"

IAM role valid 가 출력됩니다.

다음 명령어를 수행하여 Role을 확인합니다.

aws sts get-caller-identity

Arn 의 역할 이름과 인스턴스 ID를 포함하는 경우에만 실습을 계속 진행할 수 있습니다.

ArnTeamRole, MasterRole을 포함하거나 역할 이름과 일치하지 않으면 더 이상 진행하지 마시고, 처음으로 돌아가 다시 수행합니다.

Last updated