yjzini 2025. 1. 21. 01:29

도입 배경

프로젝트의 배포와 사진 업로드 등에 aws 서비스를 이용해 진행하였다. 

ec2, RDS 뿐만 아니라 S3, CodeDeploy 등 aws의 여러 서비스를 이용하였고, 다른 백엔드 팀원과 협업하는 과정에서 의문이 생겼다. 처음엔 계정의 아이디와 비밀번호를 공유하며 진행하다 한 달뒤 2단계 인증이 의무적으로 도입되면서 나 이외의 다른 팀원은 로그인이 불가능한 상황이 생긴 것이다. 

'여러 팀원이 작업해야하는 상황이 매우 많을 것인데 어떤 방식으로 클라우드 서비스를 이용하는 거지?'

이 의문을 가지고 있을 때 마침 전공과목인 [CloudComputing] 과목에서 AWS의 IAM을 배우게 되었다. 

IAM을 통해 적절히 접근을 제어하고 부여하며 협업을 진행할 수 있음을 알게되었고 이를 우리 프로젝트에 도입해보려한다. 

 


IAM 이란?

IAM (Identity and Access Management)

기본적으로 데이터나 자원에 대해 최소한의 permission을 주는 것을 원칙으로 하는데, 이를 위해 IAM을 사용하는 것

Principle of Least Privilege : Grant only th eminimal privileges needed to a user, based on the needs
(최소 권한 법칙 : 최소한의 권한으로 시작하고 유저가 더 필요한 권한이 생기면 그때 줘라)

 

IAM Entity에는 3가지가 존재 (IAM users, IAM groups, IAM role)

  • IAM users 
    • 한 유저 또는 애플리케이션을 대표하는 엔티티
    • 일반적으로 AWS에서 한 account에 해당
  • IAM groups
    • 특정 집단의 유저가 같은 permission을 가질 수 있게 함 (같은 group은 같은 policy를 가진다.)
    • 즉, user마다 일일이 권한을 줄 필요없이 group에 한번에 부여 가능
    • 한 명의 유저가 여러 group에 있을 수 있음 
    • root account안에 여러개의 IAM user를 만들 수 있어, 같은 리소스를 여러 유저들이 볼 수 있게 함
    • default로 permission 아무 것도 없고, 하나씩 줘야함 (최소권한 법칙)
  • IAM role
    • IAM user, AWS service, 외부 사용자 등에 특정 권한을 부여할 수 있음
    • 즉. policy를 떼었다 붙였다 쉽게 하기 위해 만든 것
    • permission을 role에 '부여(assume)'하고 이 role를 EC2나 어떤 리소스에 '부여 (assume) '할 수 있는 것
    • role이 부여된 유저나 서비스는 해당 policy의 권한을 가지게 되고 role이 반납되면 권한이 사라진다. 
    • ex) EC2 서버에 S3에 대한 접근 권한을 가진 role를 부여함으로써 해당 서버가 S3에 접근가능하게 함 
  • cf) IAM Policy
    • 어떤 리소스에 어떤 액션들을 취할 수 있게 or 없게 할 건지 JSON으로 작성해 둔 문서
    • user, group, role과 같은 IAM 엔티티에 붙음
  • cf) Root User
    • 처음 AWS 계정을 생성하게되면, 해당 계정에 root user로 접근하게 됨
    • 모든 AWS 서비스와 계정의 리소스에 대해 완전한 접근 권한을 가짐
    • AWS에서는 root user 계정을 통해 사용하지 않는 것을 강하게 권장하고, 실제 회사에서도 쓰지 않도록 하고 있음 (모든 권한을 가진다는 것은 결국 보안과 직접적으로 연결되는 사항이므로)
    • => 이것이 바로 우리가 IAM user를 사용해 프로젝트를 진행해야하는 이유 

 


IAM User 도입

이제 실제로 IAM user를 생성하고 권한을 부여해보자 

 

1. 먼저 AWS에 IAM을 검색한다.

2. '사용자' 클릭

3. '사용자 생성' 클릭

4. 사용자 세부 정보 지정

사용자 이름과 콘솔에서 로그인하여 사용할 수 있도록 설정

이름 입력 & 체크 표시 후 [다음] 클릭

 

[Identity Center에서 관리] 클릭
[활성화] 클릭
[계속] 클릭
성공적으로 생성되었다는 알림 문구

여기까지하면 IAM User 인스턴스는 생성된 것!

 

 

이제 여러 사용자에게 같은 권한을 줄 수 있도록 IAM gruop을 생성해보자

 

1. 그룹 생성

2. 그룹 세부 정보 

그룹 이름 및 설명을 작성

(미리 생성해둔 사용자가 있다면 여기서 추가 가능)

3. 그룹에 사용자 추가

생성된 그룹 클릭
[그룹에 사용자 추가] 클릭
[사용자 추가] 클릭
기본 정보 입력후 [다음] 클릭
그룹 선택 후 [다음] 클

 

입력한 내용 확인 후 [사용자 추가] 클릭
사용자 추가 완료

4. 다시 그룹 '관리 그룹' 페이지로 돌아가서 사용자 추가됨 확인!

5. 이제 등록한 이메일로 발송된 메일을 통해 비밀번호 설정 

비밀번호 생성

그 다음 생성한 user 이름과 비밀번호로 로그인 진행

추가 인증과정인 MFA 등록

 

여기까지 했다면 AWS 액세스 포털로 이동함 (아직 아무 권한 없음)

 

 

이제 권한을 부여해보자

 

1. 다중 계정 권한 > 권한 세트 > [권한 세트 생성] 클릭

[권한 세트 생성] 클릭

2. 권한 세트 생성

권한 세트 유형 선택

사전 정의된 템플릿을 이용, AWS의 모든 서비스와 리소스에 접근 가능한 AdministratorAccess 선택 (이 부분은 상황에 맞게 선택하면 됨)

세부 정보 지정 

[다음] 클릭

검토 및 생성

[생성] 클릭
권한 세트 생성됨 확인!

3. 다중 권한 계정 > AWS 계정 > 관리계정 클릭

4. [사용자 또는 그룹 할당] 클릭

[사용자 또는 그룹 할당] 클릭

그룹 선택

위에서 생성한 그룹 선택 후 [다음] 클릭

권한 세트 선택

위에서 생성한 권한 세트 선택 후 [다음] 클릭

검토 및 제출

[제출] 클릭
적용 완료 문구 확인!

 

5. 이제 다시 해당 user의 액세스 포탈로 들어가면 AWS account가 생성됨 확인 가능

해당 계정 클릭
부여된 접근 권한 유형 클릭

 

6. 부여된 접근 권한 내에서 사용가능한 콘솔 화면으로 연결됨 

 

이렇게 하면 이제 IAM 사용자를 만들고 group 생성 후 권한 부여까지 완료한 것이다. 

 

이제 IAM user로 접근 권한을 제어하면서 협업할 수 있다!

 

 

 

참고 자료

이화여대 - [CloudComputing] 컴퓨터공학과 전공 수업

https://goddaehee.tistory.com/327