포스트

AWS 해부 (2) 계정과 IAM: root user, access key, CLI

root user를 잠그는 두 가지 조치, IAM의 user, group, policy, role 네 개념, IAM user 생성과 access key 발급, AWS CLI 설정과 확인까지 계정 기반 작업을 정리합니다.

AWS 해부 (2) 계정과 IAM: root user, access key, CLI

AWS 해부 시리즈의 2편입니다. 전체 목차는 0편에 있습니다.

root user는 잠그고 시작한다

계정을 만들 때 쓴 이메일로 로그인하는 계정이 root user입니다. 모든 권한을 갖고, 결제 정보를 바꿀 수 있고, 계정 자체를 닫을 수 있습니다. 이 계정이 유출되면 복구 수단이 없으므로, 생성 직후 두 가지만 하고 일상 작업에는 쓰지 않습니다.

  1. MFA 활성화: 콘솔의 Security credentials 메뉴에서 인증 앱(OTP)을 등록합니다
  2. access key를 만들지 않기: root user의 access key는 만들 이유가 없습니다. 이미 있다면 삭제합니다

일상 작업은 아래에서 만드는 IAM user로 합니다.

IAM의 네 가지 개념

개념역할
user사람 또는 애플리케이션 하나의 신원. 비밀번호와 access key를 가짐
groupuser의 묶음. policy를 group에 붙여 일괄 부여
policy권한의 명세. “어떤 리소스에 어떤 작업을 허용하는가”의 JSON 문서
roleaccess key 없이 임시 자격 증명으로 신원을 빌려주는 장치. EC2 instance 같은 AWS 리소스에 부여

핵심 구분은 user와 role입니다. user는 access key라는 고정 비밀을 갖고, role은 고정 비밀 없이 임시 자격 증명을 발급받습니다. 서버에는 key를 두지 않고 role을 붙이는 것이 원칙이고, 4편에서 EC2에 role을 붙여 이 원칙을 적용합니다.

IAM user 만들기

콘솔의 IAM 메뉴에서 user를 만듭니다. 동선은 세 단계입니다.

  1. user 이름을 정하고 콘솔 로그인을 허용합니다
  2. 권한은 학습 단계에서는 AdministratorAccess 관리형 policy를 붙입니다. 실무 원칙은 필요한 권한만 주는 최소 권한(least privilege)이지만, 어떤 권한이 필요한지 모르는 학습 초기에는 전체 권한으로 시작하고 좁혀가는 것이 현실적입니다
  3. CLI에서 쓸 access key를 발급합니다. secret access key는 발급 화면에서 한 번만 표시되므로 이 시점에 안전한 곳에 저장합니다

이 user에도 MFA를 등록합니다.

AWS CLI 설치와 설정

1
2
3
brew install awscli   # macOS 기준
aws --version         # aws-cli/2.x 확인
aws configure

aws configure는 네 가지를 묻습니다. access key, secret access key, 기본 region(ap-northeast-2), 출력 형식(json)입니다. 입력한 값은 ~/.aws/credentials~/.aws/config에 저장됩니다.

설정 확인은 이 명령으로 합니다.

1
aws sts get-caller-identity

계정 ID와 user의 ARN이 나오면 자격 증명이 동작하는 것입니다. 계정을 여러 개 쓰게 되면 aws configure --profile work처럼 프로필을 나누고, 명령마다 --profile을 붙입니다.

자주 밟는 함정

  1. access key를 git에 커밋합니다. 공개 저장소에 올라간 key는 크롤링 봇이 수 분 안에 찾아 암호화폐 채굴 instance를 띄우는 데 씁니다. key는 코드와 설정 파일에 적지 않고 ~/.aws/credentials에만 둡니다. 커밋했다면 삭제 커밋으로는 부족하고, 그 key를 즉시 비활성화하고 새로 발급합니다
  2. root user로 일상 작업을 계속합니다. 당장은 문제가 없어서 습관이 되는데, 유출 시 피해 범위가 계정 전체와 결제까지 넓어집니다. IAM user 생성을 미루지 않습니다
  3. aws configure의 기본 region을 넘깁니다. region 없이 실행한 명령이 다른 region에 리소스를 만들고, 콘솔에서는 보이지 않아 과금만 계속됩니다. 기본 region을 반드시 설정하고, 1편의 region 확인 습관과 같이 갑니다

다음 편에서 첫 리소스로 S3 bucket을 만들고 데이터를 올립니다.

다음 글: AWS 해부 (3) S3: bucket, object, boto3

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.