AWS Identity Access Management 란?

AWS IAM을 사용하면 AWS 리소스에 대한 개별 액세스 및 그룹 액세스안전하게 제어할 수 있다. 사용자 자격증명을 생성 및 관리하고, 이러한 IAM 사용자에게 리소스에 액세스할 수 있는 권한을 부여할 수 있다.

IAM

  • AWS 계정의 중앙 집중식 제어
  • AWS 계정에 대한 공유 액세스
  • 세분화된 권한
  • ID 연합
  • 다중 인증
  • 필요한 경우 사용자 / 장치 및 서비스에 대한 임시 액세스를 제공한다
  • 고유한 비밀번호 교체 정책을 설정할 수 있다
  • 다양한 AWS 서비스와 통합
  • PCI DSS 준수 지원

주요 단어

Users - 최종 사용자

Groups - 하나의 권한 집합 아래있는 사용자 모음

Roles - 역할을 생성하고 이를 AWS 리소스에 할당할 수 있다

Policies - user/group/role에 대한 허가들을 정의해놓은 문서

IAM 만드는 순서

set user detail

access type : programmatic access / aws management console access

  • programmatic access는 access key ID, Secret access key를 생성해줌
  • aws management console access 는 콘솔에서 접근할 수 있게 아이디랑 비밀번호 넣는거

set permission

add users to group / copy permissions from existing user / attach existing policies directly

group은 developer, administrator 등등으로 관리할 수 있다.

policy는 그 그룹이 접근할 수 있는 document이다. group을 생성할 때 policy를 선택해서 생성해준다. policy는 키 밸류 형식으로 되어있는 document이다.

IAM 요약

  • IAM은 global로 되어있다. users, groups, roles, policies들을 생성하는데 지역이 상관없기 때문이다
  • “root account”는 처음 계정을 만들 때 생성되는 계정이다. Admin 계정
  • 새로운 user를 만들때 처음에는 permission이 정해져있지 않는다. 권한이 아무것도 없다. 지정해줘야한다.
  • 새로운 user에는 access key ID와 secret access key가 부여된다.
  • ID와 password는 console에 접근할 때 사용하는 것이고, access key ID와 secret access key는 programmatic 접근을 할 때 (command 창이나 개발에서나 API에서 접근할 때) 사용한다.
  • access key ID와 secret access key는 한번만 보여주는데 csv 형식으로 다운 받아서 로컬에 저장할 수 있고, 잃어버리면 다시 재발급 받을 수 있다.
  • Multifactor Authentication (다중인증)을 루트계정에 설정해야한다.
  • 설정에서 비밀번호 교체 정책을 만들 수 있다.

IAM Policies - IAM 정책

  • 허가를 정의하는 JSON 문서
  • Identity 정책
  • Resource 정책
  • 첨부된 정책만 적용됨
  • statements 목록
  • 명시적으로 허용되지 않음 == 암묵적으로 거부됨

Statement 설명

  • 각 statement가 AWS API 요청과 매칭된다.
  • Effect는 Allow 아니면 Deny이다
  • Action에 있는 것들과 매칭된다
  • Resource는 Action이 상대한다

IAM Policies

Permission Boundaries - 권한경계

  • 다른 사용자에게 관리를 위임하는데 사용된다
  • 권한 상승 또는 불필요하게 광범위한 권한을 방지한다.
  • IAM 정책이 부여할 수 있는 최대 권한제어
  • 사용 케이스
    • 람다 함수에 대한 역할을 생성하는 개발자
    • EC2 인스턴스에 대한 역항르 생성하는 애플리케이션 소유자
    • 임시 사용자를 만드는 관리자.

Resource Access Manager (RAM)

AWS Resource Access Manager (RAM)을 통해 계정 간 리소스 공유 가능

예시)

RAM

계정 2에서 계정 1에 private subnet에 있는 인스턴스를 접근하고 사용하고 싶을 때 RAM을 사용한다. RAM에서 리소스를 계정끼리 공유할 수 있다. 계정 1에서 리소스를 공유해주고 계정 2에서 공유된 리소스를 허용하면 공유 가능하다.

AWS Single Sign-On (AWS SSO)

AWS SSO는 여러 AWS 계정 및 비즈니스 애플리케이션에 대한 액세스를 중앙에서 손쉽게 관리하고 사용자에게 Single Sign-On 액세스를 제공하여 할당된 모든 계정 및 애플리케이션한 곳에서 액세스하도록 할 수 있는 AWS 서비스

AWS Organizations

AWS Organizations는 여러 AWS 계정을 생성하고 중앙에서 관리하는 조직으로 통합할 수 있는 계정 관리 서비스이다.

AWS Organizations의 모범 사례

  • 항상 루트 계정에서 다단계 인증을 활성화한다
  • 항상 루트 계정은 강하고 복잡한 비밀번호를 사용한다
  • 지불 계정은 청구 목적으로만 사용해야한다. 지불 계정에 리소스를 배포하지 마시오.
  • OU(Organizaion Unit?) 또는 개별 계정에서 서비스 제어 정책을 사용하여 AWS 서비스를 활성화/비활성화한다.

재무팀이 EC2를 접근하지 못하게 하려면 Policies에 가서 Service control policies에서 바꿔주면 된다.