본문 바로가기
Knowledge/Cloud

[AWS] IAM에 대한 설명, 사용 방법에 대한 고찰 및 적용 사항

by 미네마네모 2021. 4. 27.

AWS IAM 계정은 크게 아래와 같이 구분 됩니다.

  • group
  • user
  • role
  • policy

Group

사용자(user)를 분류 하는 단위 입니다.
개발하는 파트마다 사용하는 AWS 서비스가 다릅니다.
우리는 아래와 같이 개발하는 파트 따라서 사용자들을 구분합니다.

* 관리자를 제외한 나머지 그룹은 서비스마다 Remove 권한은 제외됩니다.

  • Administrator : 관리자 권한을 가진 사용자가 속한 그룹입니다. (기본적으로 전체 서비스 접근 가능합니다.)
  • DevOps : 전체적인 인프라 관리하는 개발자가 속한 그룹입니다. (기본적으로 전체 서비스 접근 가능합니다.)
  • Device : Device 개발자가 속한 그룹입니다. Device 개발자가 사용하는 관리형 서비스의 권한이 Assign 되어있습니다.
  • Data : Data 개발자가 속한 그룹입니다. Data 개발자가 사용하는 관리형 서비스의 권한이 Assign 되어있습니다.
  • Back-End : 백앤드 개발자가 속한 그룹입니다. Back-End 개발자가 사용하는 관리형 서비스의 권한이 Assign 되어있습니다.
  • Front-End : 프론트 앤드 개발자가 속한 그룹입니다. Front-End 개발자가 사용하는 관리형 서비스의 권한이 Assign 되어있습니다.

User

AWS에서 제공하는 관리 서비스들을 사용하는 주체들 입니다.

보통 IAM User는 아래의 두가지와 같은 목적으로 사용합니다.

 

1. AWS에서 제공하는 관리 서비스를 설정, 모니터링하는 사용자들 (서비스 관리자들)
ex. minhoe1122@gmail.com

개인 정보를 가렸습니다! AWS Console 접속할 사용자들의 접속 ID 입니다.

2. AWS에서 제공하는 관리 서비스들을 사용하는 우리가 개발하는 서비스의 사용자
ex. 우리가 개발하는 서비스에서 AWS 관리형 서비스에 접근하기 위한 계정을 생성 후 키를 발급하여 접근

 

 

기본적으로 개발하는 서비스에서 IAM User의 Account Key 사용을 지양해야합니다.

(그 이유는? 바로가기)

따라서 우리는 최대한 1번의 목적으로만 IAM User를 사용할 것입니다.

단, 부득이하게 2번의 목적으로 사용자를 생성 및 사용해야하는 경우가 있습니다
예를 들면 아래와 같습니다.

ex) GCP에서 개발된 서비스에서 AWS 서비스에 접근해야될 때

 

그러면 우리가 개발하는 Software들은 어찌 AWS 관리형 서비스에 접근해야할까요?

정답은 IAM Role 이용입니다!

 

Role

AWS IAM에는 Role이라는 개념이 있습니다.

단어 그대로 AWS Cloud 내에서의 역할을 의미합니다.

이해하기 어렵죠? 아래 예시를 들어드리겠습니다.

 

아래는 AWS에서 Role을 사용하는 예시의 입니다.

[ EC2 인스턴스에 배포된 백앤드 서비스를 개발 중 저장소가 필요하여 S3에 접근해야할때 ]

  • Bad example
    back-end 사용자(IAM User)를 생성 후 AWS S3 Full Access 정책 연결
    back-end 사용자에게 access Key를 발급한 후 백앤드 서비스에서 access Key를 사용

    😅 access key가 만료되면 교체 해줘야하고 access key가 코드상에 또는 설정 파일에 하드코딩 될 수 있어요

  • Good example
    백앤드 서비스에서 필요한 AWS S3 Full Access 정책을 연결한 Role을 생성
    백앤드 서비스가 구동될 EC2 인스턴스에게 해당 Role을 연결

Policy

AWS 관리형 서비스에 접근하는 권한을 정책으로 만들어 둘 수 있습니다.

AWS에서 만들어진 정책이 있고 (ex. AWS S3 Full Access)
우리가 직접 Custom 정책을 만들 수 있습니다.

IAM 내에서 Policy는 아래와 같이 맵핑 됩니다.

  • Group - Policy : 개발자들
  • User - Policy : 외부 서비스가 접근
  • Role - Policy : Motov AWS Cloud 내에서

그럼 어떤 상황에 어떤걸 사용해야될까요? 정리하자면...

  • AWS Console을 사용하는 사용자 👉 IAM User 사용
  • AWS에서 제공해주는 관리형 서비스 위에서 동작하는 우리가 만든 서비스(소프트웨어) 👉 IAM Role 사용

다른 환경(ex. GCP, Azure)에서 AWS 관리형 서비스에 접근해야하는 경우 👉 IAM User의 Key를 발급하여 사용

댓글