IAM, Identity and Access Management

global service

Users, Group

  • root account created by default, should not be used
    • 루트 계정은 사용자를 생성할 때만 사용해야한다.
  • 사용자를 그룹에 포함할 수 있고 한 사용자는 여러 그룹에 포함될 수 있다.
  • 그룹은 사용자만을 포함할 수 있고 다른 그룹을 포함할 수 없다.

Permissions

  • Users and groups can be assigned JSON
  • These policies define the permissions; 사용자의 권한을 관리한다.
  • the least privilege principle(dont give more permissions); 최소 권한의 원칙

Policy

AWS 서비스에 요청을 생성하기 위한 일련의 권한을 정의하며, iam 사용자, 사용자 그룹 및 iam 역할에서 사용하게 될 json 문서

정책 구성 요소

  • Version: 보통 2012-10-17로 설정.
  • Id: optional, 정책 id
  • Statement: required

Statement 구성 요소

  • Sid: optional
  • Effect: Allow or Deny; whether the statement allows or denies access
  • Principal: account or users or role
  • Action: list of actions that policy allows or denies
  • Resource: to which the actions applied to
  • Condition: optional

사용자 권한 추가하기

위 그림에 나타나있듯이 사용자를 그룹에 넣거나 다른 사용자의 권한을 복사, 직접 정책을 연결할 수 있다. 또 다른 방법으로는 인라인 정책이 있다.

MFA

Multi Factor Authentication

  • root account, iam users 보호하기 위해서 설정
  • MFA = password + security device
  • Google Authenticator(one phone only), Authy(multi device)
  • YubiKey, Universal 2nd Factor
  • third parties hardware

MFA 실습

  • My security credentials(보안 자격 증명), My profile에서 확인 가능
    • 루트 계정으로만 접근 가능
  • 원하는 방식으로 MFA를 등록하면 된다.

Role

ec2, lambda 같은 aws service가 권한이 필요할 때 해당 인스턴스에 부여한다.

  • Some aws service will need to perform actions on your behalf, and we will assign permissions to aws services with iam roles.
  • ec2 instance에서 aws cli로 aws configure을 통해 액세스 키를 넣을 수도 있다. 이 방식은 권장하지 않는데, 왜냐하면 액세스 키 id와 private key가 터미널을 통해 노출되고 저장되기 때문이다. 다른 실제 사용자가 ec2에 접근해서 해당 액세스 키에 접근할 수도 있다. 이럴 때 ec2 instance에 iam role을 적용하여 적절한 권한을 갖도록 한다.

IAM security tools

  • IAM Credentials Report, 자격 증명 보고서(account-level): a report that lists all your account's users and the status of their various credentials. csv 파일로 제공된다. IAM 좌측 탭의 Credentials Report에서 확인할 수 있다.
  • IAM Access Advisor(user-level): service permissions granted to a user and when those services were last accessed. 최소 권한 원칙을 지킬 때 모니터링할 수 있어 편하다. 사용자 세부 페이지의 Access Advisor(혹은 액세스 관리자)에서 확인할 수 있다.

aws CLI에 액세스 키 등록하기

root 계정으로 액세스 키를 발급할 사용자로 접근한 뒤에, 보안 자격 증명 탭에서 액세스 키 생성을 한다. 위 그림은 터미널에 aws 액세스 키를 등록하는 과정을 나타낸다.

위 그림은 aws configure 을 통해 등록된 사용자를 나타낸다. 그림의 UserId는 Key ID와 다른 값이다.

aws cloudshell을 통해 브라우저에서 터미널을 사용할 수 있다. 모든 리전에서 제공하는 서비스는 아니기 때문에 Management Console의 상단에 아이콘이 없다면 지원하지 않는다는 의미이다.

IAM best practices

  • 루트 계정은 account setup에만 사용하기
  • 실제 사용자(physicla user)는 aws user와 일대일 대응되도록
  • strong password policy를 지정하자
  • MFA 사용 권고
  • Audit permissions of your accout with the IAM credentials report; 자격 증명 보고서를 통해 계정의 권한 관련 작업을 감사할 수 있다.
  • Never share IAM users Access keys

기타

현재 계정이 루트 계정인지 아닌지

계정 ID만 뜨는 것을 보면 루트 계정임을 알 수 있다.
아래는 IAM 사용자 이름도 표시되므로 IAM 사용자로 로그인한 경우라는 것을 알 수 있다.

별칭 생성 방법

여기서 별칭을 생성할 수 있다.