# IAM 기본 구성

## IAM User 구성

AWS Identity and Access Management(IAM) 사용자는 AWS에서 생성하는 엔터티로서 AWS와 상호 작용하기 위해 그 엔터티를 사용하는 사람 또는 애플리케이션을 나타냅니다. AWS에서 사용자는 이름과 자격 증명으로 구성됩니다.

### 1.IAM 사용자 선택

AWS 관리 콘솔에서 "**서비스 - IAM - 사용자"** 를 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKOz4eJbjhbxWXuRqDF%2F-MKOzW739gnIb832cdVL%2Fimage.png?alt=media\&token=895d8716-da7e-44f8-8d05-f1367d1bceb8)

### 2. 사용자 추가

**사용자 추가**를 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKOz4eJbjhbxWXuRqDF%2F-MKOzltZFxfY7Uv6I9uw%2Fimage.png?alt=media\&token=88fda7fd-d477-474c-9751-dd27d87afdcc)

### 3. 사용자 세부 정보 설정

첫번째 단계로, 9명의 새로운 사용자를 추가합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKQdmgN-UJDAo-86E46%2F-MKTCtWkd6LYRDHz89y0%2Fimage.png?alt=media\&token=70fb6345-da26-4eda-a5a7-88dfb05d7533)

* 사용자 이름 - captain, hulk, thor, blackpanther,ironman,doctor,spiderman,hawkeye,thanos
* 액세스 유형 - 프로그래밍 액세스, AWS Management Console 액세스 선택
* 콘솔비밀번호 - 사용자 지정 비밀번호 선택 및 비밀번호 입력

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKOz4eJbjhbxWXuRqDF%2F-MKP04i9D4tHwDAurLeJ%2Fimage.png?alt=media\&token=f4f67e9a-8042-4aef-99a3-936a51432272)

### 4. 권한 설정

두번째 단계에서, 기존 그룹에 사용자를 추가하거나 , 기존 사용자에서 권한(permission) 복사, 기존 정책(Policy)에 직접 연결할 수 있습니다. 또한 권한 경계 설정을 할 수 있습니다.이 단계는 별도 설정하지 않습니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPEO8p4o1G0RFZ-y0t%2Fimage.png?alt=media\&token=32ec16f5-06de-42b8-a8b4-5e3b1f09722c)

### 5.태그 추가

세번째 단계에서는 태그를 추가할 수 있습니다. 이 단계에서는 별도 설정하지 않습니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPEiZHy3D_6tkYHrKF%2Fimage.png?alt=media\&token=63892f37-10bf-4192-aa22-5aec10b245ad)

### 6.설정 검토

네번째 단계에서는 앞서 구성된 단계들의 설정 내용을 검토합니다. 앞서 사용자 생성 이외에는 별도의 생성을 하지 않았습니다. 사용자 만들기를 최종 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPEtJLZXHQIyqLgQbg%2Fimage.png?alt=media\&token=b8b2a09b-3be7-456a-b705-df3519f6399d)

### 7.설정 확인

최종적으로 생성된 사용자(User)들의 구성 내역을 살펴봅니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPFUFyMlyccqeMtDcs%2Fimage.png?alt=media\&token=bed15c2a-3dec-417b-80bf-53009c25dfc9)

{% hint style="info" %}
생성된 각 사용자(user)는 Amazon 리소스 이름(ARN)입니다. 모든 AWS 전반에 사용자를 특별하게 식별할 필요가 있는 경우 ARN을 사용합니다. 예를 들어, ARN을 사용하여 사용자를 Amazon S3 버킷에 대한 IAM 정책에서 **`Principal`**&#xB85C;서 지정할 수 있습니다. IAM 사용자의 ARN은 다음과 같은 모습입니다.사용자의 ARN은 AWS 관리 콘솔 내 보안 자격 증명 또는 권한이 있는 사용자의 사용자요약에서 확인 할 수 있습니다.

arn:aws:iam::xxxxxxxxxxxx:user/whchoi
{% endhint %}

## IAM Group 구성

### 1.새로운 그룹 생성

AWS 관리 콘솔의 IAM Side Bar에서 그룹을 선택하고 **새로운 그룹 생성**을 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPFxq6scDXIFpgb4tQ%2Fimage.png?alt=media\&token=e423c5ae-c1c9-481e-a852-1d81df79888d)

### 2. 그룹 이름 설정

첫번째 단계에서 그룹이름을 설정합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPG9dVe2Dpvc_x-v_K%2Fimage.png?alt=media\&token=fda4911d-85f9-4d9b-9339-d499ed920795)

### 3. 그룹에 정책 연결

두번째 단계에서 정책(Policy)연결을 설정합니다.&#x20;

**필터 - 정책유형**에서 **EC2**를 입력하고, **"AmazonEC2FullAccess"**&#xB97C; 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPGbrT2191khniitXd%2Fimage.png?alt=media\&token=74b2a681-abb7-4f35-a73c-1b2042c0f09f)

### 4. 그룹 생성 검토

세번째 단계에서 검토를 확인하고, **그룹 생성**을 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPH-0gSRYOJCfBdq_s%2Fimage.png?alt=media\&token=d042899b-1c1a-4fcf-9d4e-b4fe776891c2)

그룹 생성 마법사를 반복해서 Dev2, PRD, SuperUser, Test 그룹을 생성합니다.

Dev2 그룹은 정책(Policy)연결 단계에서 "AmazonS3FullAccess"를 선택합니다. PRD 그룹은 정책(Policy)연결단계에서 "AmazonEC2FullAccess", "AmazonS3FullAccess"를 선택합니다. SuperUser 그룹은 정책(Policy)연결단계에서 "AdministratorAccess"를 선택합니다. Test 그룹은 정책연결단계에서 선택하지 않습니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKTCx0WSsIbEI2MSG0H%2F-MKTFNjOhWMynF9D8vYm%2Fimage.png?alt=media\&token=b859e88a-8f15-43e6-89a3-34f97b4e62a8)

| **그룹(Group)** | **정책(Policy)**                          |
| ------------- | --------------------------------------- |
| Dev1          | AmazonEC2FullAccess                     |
| Dev2          | AmazonS3FullAccess                      |
| PRD           | AmazonEC2FullAccess, AmazonS3FullAccess |
| SuperUser     | AdministratorAccess                     |
| Test          |                                         |

모든 단계를 완료하게 되면, 아래와 같이 구성됩니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPJB2Z4FHRlc0drXNh%2Fimage.png?alt=media\&token=3927ed4d-9aa9-4b70-9bb2-8de07124d96c)

## User 인증강화를 위한 MFA 구성

### 1. MFA 소개

보안 강화를 위해 멀티 팩터 인증(MFA)을 구성하여 AWS 리소스를 보호하는 것이 좋습니다. IAM 사용자 또는 AWS 계정 루트 사용자에 대해 MFA를 활성화할 수 있습니다. 루트 사용자에 대해 MFA를 활성화하면 해당 루트 사용자 자격 증명에만 적용됩니다. 이 계정의 IAM 사용자들은 자신의 자격 증명에 더하여 별도로 자격 증명을 갖게 되며, 이 별도의 자격 증명에 고유의 MFA가 구성됩니다.

MFA는 사용자가 AWS 웹 사이트 또는 서비스에 액세스할 때 사용자의 정규 로그인 자격 증명 외에도 AWS가 지원되는 MFA 메커니즘의 고유 인증을 제출하라고 요청함으로써 보안을 더욱 강화합니다.

현재 아래와 같이 4가지를 제공합니다.

**가상 MFA 디바이스** 스마트폰 또는 기타 디바이스에서 실행되며 물리적 디바이스를 에뮬레이션하는 소프트웨어 애플리케이션입니다. 디바이스가 동기화된 1회 암호 알고리즘에 따라 여섯 자리 숫자 코드를 생성합니다. 사용자는 로그인할 때 두 번째 웹페이지에서 디바이스의 유효 코드를 입력해야 합니다. 사용자에게 할당된 각 가상 MFA 디바이스는 고유해야 합니다. 사용자는 다른 사용자의 가상 MFA 디바이스의 코드를 입력하여 인증할 수 없습니다. 가상 MFA는 안전하지 않은 모바일 디바이스에서 실행될 수 있으므로 U2F 디바이스 또는 하드웨어 MFA 디바이스와 동일한 수준의 보안을 제공하지 않을 수 있습니다. (참조 멀티팩터 인증 앱 - <https://aws.amazon.com/ko/iam/features/mfa/?audit=2019q1>)

**U2F 보안 키**. 컴퓨터의 USB 포트에 연결하는 디바이스입니다. U2F는 [FIDO Alliance](https://fidoalliance.org) 에서 호스팅하는 공개 인증 표준입니다. U2F 보안 키를 활성화하려면, 코드를 수동으로 입력하는 대신, 본인의 자격 증명을 입력한 다음 디바이스를 터치하여 로그인합니다.&#x20;

**하드웨어 MFA 디바이스** 동기화된 1회 암호 알고리즘에 따라 여섯 자리 숫자 코드를 생성하는 하드웨어 디바이스입니다. 사용자는 로그인할 때 두 번째 웹페이지에서 디바이스의 유효 코드를 입력해야 합니다. 사용자에게 할당된 각 MFA 디바이스는 고유해야 합니다. 사용자는 다른 사용자의 디바이스의 코드를 입력하여 인증받을 수 없습니다. &#x20;

**SMS 문자 메시지 기반 MFA**. IAM 사용자 설정이 해당 사용자의 SMS 호환 모바일 디바이스의 전화번호를 포함하는 MFA 유형입니다. 사용자가 로그인하면 AWS가 SMS 문자 메시지로 여섯 자리 숫자 코드를 사용자의 모바일 디바이스로 전송합니다. 사용자는 로그인 시 두 번째 웹 페이지에서 이 코드를 입력해야 합니다. SMS 기반 MFA는 IAM 사용자만 사용할 수 있습니다. AWS 계정 루트 사용자에서는 이러한 유형의 MFA를 사용할 수 없습니다.&#x20;

### 2. MFA 구성을 위한 OTP 설치

이 랩에서는 captain 사용자(User)에 MFA 인증을 구성해 봅니다. 먼저 사용자가 소유한 스마트폰에서 OTP 인증 앱을 설치합니다. 안드로이드, iOS사용자는 Google의 OTP를 설치합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPDZ0Cohh-PA1jmWHj%2F-MKPLeAIZkrPTOeYz_Yk%2Fimage.png?alt=media\&token=2f58710e-618e-47a5-babe-a56f85fb747b)

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPNWMiHEla4y_E1raF%2F-MKPNlvz1A9OYSrHvHLG%2Fimage.png?alt=media\&token=6466ef4d-b406-4261-b13a-d60327c6f543)

### 3. MFA 구성을 위한 사용자 선택

AWS 관리 콘솔에서 IAM - 대시보드 - 사용자를 선택하고, 사용자 "captain"을 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPNWMiHEla4y_E1raF%2F-MKPTfoDsWgHpTtxlWbT%2Fimage.png?alt=media\&token=c2111bf0-489c-422a-80c7-726e5ccd7656)

### 4. 할당된 MFA 디바이스 구성

사용자 요약 화면에서 **"보안자격증명"**&#xC744; 선택하고, **할당된 MFA 디바이스 - 관리**를 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPNWMiHEla4y_E1raF%2F-MKPU3VOXgd9VRZmvbW0%2Fimage.png?alt=media\&token=71f52c4a-2152-4a80-9e75-da53d6f005d5)

MFA 디바이스 관리화면에서 **"가상 MFA 디바이스"**&#xB97C; 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPNWMiHEla4y_E1raF%2F-MKPUM8EFpYFJceulE5Z%2Fimage.png?alt=media\&token=e3deefa1-2504-4d15-869f-7176628904ea)

### 5. 가상 MFA 디바이스 설정

**QR 코드 표시**를 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPURrYNaJRXf__SxeX%2F-MKPUeMuFC4RZqfozhM0%2Fimage.png?alt=media\&token=ab31af2c-121d-4f8b-b2a2-d86fc60e1403)

QR 코드 표시를 선택하면, QR 코드가 나타납니다. 앞서 스마트폰에 설치한 Google Authenticator를 이용해서 QR Code를 촬영하고, 가상 OTP를 추가합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPURrYNaJRXf__SxeX%2F-MKPYJD4XUf6OF2VDFgS%2Fimage.png?alt=media\&token=053a9967-5bfb-4496-ae07-d471fe45d134)

가상 OTP를 추가하게 되면 아래와 같이 OTP가 생성되고, 2개의 MFA OTP  번호를 입력합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPURrYNaJRXf__SxeX%2F-MKPYxejXxdJx5d8Tn_A%2Fimage.png?alt=media\&token=d764c8c1-0af3-430b-9184-6e8775412d2d)

6\. 가상 MFA 디바이스 설정 완료

AWS 관리 콘솔에서 아래와 같이 가상 MFA 디바이스 설정을 완료합니다. 스마트폰 OTP에서 제공하는 MFA 2개를 생성해서 연속된 MFA에 입력하고, **MFA 할당**을 선택합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPURrYNaJRXf__SxeX%2F-MKPZE3DuyOwtS5JHLND%2Fimage.png?alt=media\&token=e61b9c77-4d84-4ab4-955f-1937df6d7ca9)

### 7. MFA 설정된 사용자 로그인

이제 관리 콘솔에서 로그아웃을 하고 "captain" 사용자로 로그인합니다.

![](https://2617780336-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKJhtKXpyXmaafkO7Me%2F-MKPZFoLTYkbkKtrKudw%2F-MKPZb_ZXSs1M7v6Ja8b%2Fimage.png?alt=media\&token=98408800-72ba-46fc-a6f0-61adabf7d745)

스마트폰에 설치된 가상 OTP를 이용해서 값을 입력하고 로그인합니다.

{% hint style="success" %}
필요에 따라서 몇개의 사용자를 선택해서 OTP 인증을 추가해 봅니다.
{% endhint %}
