Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

DOing

[AWS] AWS의 IAM 본문

AWS

[AWS] AWS의 IAM

mangdo 2021. 4. 18. 13:42

AWS를 사용할 때는 '보안'에 항상 유의해야한다.

  실제로 AWS 계정이 해킹되어 과금이 나오는 사례들도 있다. 뿐만아니라 악의적인 사용자에 의해 AWS계정 내에 특정 리소스가 중지도거나 삭제될 수도 있고 회원정보와 같은 민감한 정보들이 유출될 수도 있다. 때문에 AWS에서는 하나의 AWS계정내에서 사용자별로 권한을 분리하고 인증 방식을 제어하는 통합관리체계 서비스인 IAM을 제공하고 있다. 이번 포스팅에서는 이러한 IAM에 대해서 알아보려고 한다.


💡 IAM

Identity & Access Management(신원 및 접근관리)

AWS IAM은 user, group, role을 만들고 관리하며 AWS 리소스에 대해 접근제어와 권한 관리를 제공한다.

AWS 계정안에 IAM 사용자(user)를 생성하여 어떤 IAM 사용자는 EC2만 관리할 수 있고 어떤 IAM 사용자는 S3를 읽을 수만 있도록 구성할 수 있다. 따라서 전체 권한이 아닌 필요한 권한만을 부여하기 때문에 보안성이 높아진다.

 

💡 IAM 객체 vs ROOT 계정

* ROOT 계정

: AWS에 처음 가입할때 생성하는 계정이다. 모든 권한을 가지고 있다.

* IAM 객체

: ROOT 계정 혹은 다른 IAM 계정으로부터 권한을 부여 받으며, 주어진 권한 내의 작업만 할 수 있다.

 

  보안상 ROOT계정은 최대한 자제해야하고 IAM 객체로 제한된 기능을 사용하는 것이 좋다. IAM에서 사용하는 객체는 크게 두가지 영역으로 구성되어있다. 하나는 사용자를 정의하는 IAM user, group, role 영역이고 다른 하나는 사용자의 권한을 정의하는 IAM Policy영역이다. 사용자와 권한은 1:N으로 매핑되어 IAM user+IAM Policy, IAM group+IAM Policy, IAM role+IAM Policy 형태로 각 단위 객체에 권한을 붙여 사용한다.

 

💡 IAM User

 IAM User란,  AWS와 서비스 및 리소스와 상호작용하기 위해 생성하는 사람 또는 서비스를 말한다.

 IAM User는 필요에 따라 신규 생성, 수정, 삭제될 수 있다. 하나의 AWS 계정에 최대 5000개의 IAM User계정을 생성할 수 있고 각 IAM 사용자는 오직 한개의 AWS Root 계정과 연결된다. IAM User를 생성하고나서 직접 권한을 할당하거나 IAM Group, IAM Role을 사용해서 권한을 할당할 수 있다. IAM User에게 다른 IAM User를 생성하고 관리하는 권한을 부여할 수도 있다.

Root Account - IAM User

💡 IAM Group

: IAM 사용자들의 집합을 말한다. 

IAM Group을 사용해서 다수의 사용자들에 대한 권한을 일괄적으로 지정함으로써 해당 사용자들에 대한 권한을 더 쉽게 관할 수 있다. 하나의 AWS 계정당 100개의 그룹을 생성할 수 있다.

 

💡 IAM Role

 : IAM User와 마찬가지로 자격증명을 처리하도록 권한 및 정책을 보유하고 있다. 하지만 IAM Role은 User와 달리 한 사용자에만 연결되지 않고 그 Role이 필요한 사용자 혹은 그룹이면 누구든지 연결할 수 있도록 고안되었다.

 

[ 동작방식 ]

 : IAM User의 경우 콘솔 로그인용 username/password방식이나 CLI용 Accesskey/SecretKey로 인증을 하지만 Role의 경우에는 임시키 방식을 사용한다. 발급된 임시키는 유효시간을 가지며, 유효시간 경과후에는 무효화된다. 이를 통해 보다 높은 보안성을 가질 수 있다.

AWS Role 동작방식

 

[ 활용예시 ]

-AWS 서비스 간 권한제어

: EC2에서 S3로 주기적으로 접근할때 EC2내에 IAM Role를 정의해놓으면 별도의 IAM User 인증키 쌍을 입력하지 않고도 S3로 접근할 수 있다.

 

💡 Root 계정 vs IAM User vs Role

  Root 계정 IAM User IAM Role
객체 수 1 다수 다수
콘솔용 암호설정 필수(최초가입시) 가능 불가
MFA 설정 가능 가능 불가
인증키 쌍생성
(SecretKey/Accesskey)
가능(권장x) 가능 불가
IAM Policy 할당 불필요
(모든 권한을 이미 보유)
가능 가능
IAM Group 산입 불가 가능 불가
다른 AWS 서비스에 연동 불가 불가 가능
타 AWS 계정 및 외부 자격증명과 연동 불가 불가 가능

관련 포스팅 : 2021.04.14 - [AWS] - [AWS] AWS MFA 설정

 

💡 IAM Group 생성하기

우선 IAM Group을 생성하고 Group에 속하는 User를 생성한다.

1. IAM 페이지 이동

2. 그룹 생성 클릭

3. 그룹이름을 설정

아직 User를 생성하지 않았기때문에 그룹에 사용자 추가하기는 넘어간다.

4. 권한 정책 연결(IAM Policy)

원하는 정책을 추가한다. 나의 경우에는 S3FullAccess를 추가하였다.

5. 그룹 확인

아직 User가 0입니다.

💡 IAM User 생성하기

1. 사용자 추가 클릭

2. User설정

User로 액세스하는 유형에는 두가지가 있다.

1. 프로그래밍 액세스(SecretKey/AccessKey의 인증키쌍)

2. 콘솔용 액세스(username/password)

 EC2서버에서 S3로 접근할 예정이고, 콘솔에서도 로그인하고 싶었기때문에 두가지 모두 만들었다.

 

3. 권한 설정(IAM Policy)

User의 권한 설정은 개별적으로 해줄 수도 있고 기존 사용자에서 복사해올 수도 있다. 현재는 그룹을 이용하여 권한설정을 해줄 예정이기 때문에, 아까 만든 그룹을 이용하여 권한 설정을 해준다.

 

4. 검토후, User 생성 완료

User가 생성완료 되었다면, 아래의 액세스키와 비밀액세스키를 잘 기록해둔다. 혹은 csv파일을 다운받는다.

5. 생성된 user 확인

6. 그룹에도 추가 완료 확인

User가 1로 변경되었다.

 

출처 :

예제를 통해 쉽게 따라하는 아마존 웹 서비스(최준승, 이현진 저)

아마존 웹 서비스(권영한 저)

아마존 웹 서비스를 다루는 기술(이재홍 저)