> For the complete documentation index, see [llms.txt](https://whchoi98.gitbook.io/aws-iam/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://whchoi98.gitbook.io/aws-iam/iam-role.md).

# IAM 역할(Role)과 Switch

## 역할 (Role)

IAM 역할(Role)은 신뢰하는 개체에 권한(Permission)을 부여하는 안전한 방법입니다.특정 권한을 가진 계정에 생성할 수 있는 IAM 자격 증명, IAM 역할은 IAM 사용자와 몇 가지 점에서 유사합니다. 역할과 사용자 모두 AWS에서 자격 증명으로 할 수 있는 것과 할 수 없는 것을 결정하는 권한 정책을 포함하는 AWS 자격 증명입니다. 그러나 역할은 한 사람과만 연관되지 않고 해당 역할이 필요한 사람이라면 누구든지 맡을 수 있어야 합니다. 또한 역할에는 그와 연관된 암호 또는 액세스 키와 같은 표준 장기 자격 증명이 없습니다. 그 대신, 역할을 수임하면 역할 세션을 위한 임시 보안 자격 증명을 제공합니다.

역할(Role)은 하나 이상의 정책(Policy)을 기반으로 구성됩니다. 앞서 소개한 데로 정책(Policy)는 서비스 별로 할 수 있는 작업을 정의하고 있는 규칙들입니다.

역할은 다음의 주체들이 사용할 수 있습니다.

* 동일한 AWS 계정의 IAM 사용자
* 역할과 다른 AWS 계정의 IAM 사용자
* Amazon Elastic Compute Cloud(Amazon EC2)와 같은 AWS가 제공하는 웹 서비스
* SAML 2.0, OpenID Connect 또는 사용자 지정 구축 자격 증명 브로커와 호환되는 외부 자격 증명 공급자(IdP) 서비스에 의해 인증된 외부 사용자

## Role Switch

### 1.RBAC(Role-Based Access Control)

&#x20;RBAC을 사용하게 되면 그룹 또는 사용자에게 직접 권한을 주지 않고, 여러 권한의 논리적인 집합들을 역할(Role)로 만들고 그룹 또는 사용자에게 연결 할 수 있습니다. 이렇게 되면 필요에 따라 역할을 부여할 수 있으므로 복잡하고, 경직되게 권한을 관리하지 않아도 됩니다.&#x20;

### 2. Role Switch 구성

사용자 "thor"는 그룹 "Test"에 속해 있으며, 그룹에는 정책이 구성되어 있지 않습니다. 또한 사용자에는 "EC2ReadOnly", "S3ReadOnly" 정책이 할당되어 있습니다.&#x20;

사용자 "thor"는 해당 계정에서 , 시험 목적으로 EC2FullAccess, S3FullAccess 권한이 필요합니다. 이러한 경우 정책을 할당하고, 제거하는 방식은 번거로울 수 있습니다.&#x20;

Role Switch는 역할을 이용해서 간단하게 , 필요한 역할을 그룹이나 사용자에게 할당 할 수 있습니다.

![](/files/-MKUvgfsVb2PVT-zU08e)

&#x20;먼저 현재 계정을 복사 해 둡니다.

<div align="left"><img src="/files/-MKUTm6nrJfgilZFfrWP" alt=""></div>

### 3.새로운 역할(role) 구성

새로운 역할을 만들기 위해서 "AWS 관리 콘솔 - IAM - 역할 - 역할만들기"를 선택합니다.

![](/files/-MKUTGD8s-GU_T2Ap2ke)

다른 AWS 계정을 선택합니다. 계정 ID는 앞서 복사 해둔 현재 계정을 입력합니다.

![](/files/-MKUU9C092PjKBxoC0go)

### 4. 역할 만들기-권한정책 연결

EC2FullAccess,S3FullAccess 정책을 선택합니다.

![](/files/-MKUxp-hiv4ZSspLBhkv)

### 5.역할 이름 구성

역할(Role)의 이름을 구성합니다.

![](/files/-MKUUqQjioOLeqZ49M7d)

### 6.생성된 역할 확인

생성된 역할을 확인하고, 역할 ARN을 복사해 둡니다.

![](/files/-MKUV6b3io-e7qv2WHE2)

### 7.위임을 위한 새로운 정책 생성

이제 사용자가 새로 만든 역할(Role)을 사용하기 위해, STS 기반의 위임(Assume) 정책을 생성합니다. 이 정책은 고객관리형 정책으로 해당 계정에서만 존재하게 됩니다.

**"AWS 관리 콘솔 - IAM - 정책 - 정책생성"**&#xC744; 선택합니다.

![](/files/-MKUWkJY5N8__57ZXscN)

정책 생성에서 시각적 편집기 또는 JSON으로 정책을 생성합니다.

* **서비스 - STS**
* **작업 - STS에서 허용되는 작업 지정 - AssumeRole**
* **리소스 - 앞서 복사해둔 Role의 ARN을 입력합니다. 아래와 같은 구성입니다.**

  ```
  Resource": "arn:aws:iam::ACCOUNT-NUMBER:role/ROLE-NAME
  ```

![](/files/-MKUZlpwX43yqJLW8XfJ)

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::ACCOUNT-NUMBER:role/ROLE-NAME"
        }
    ]
}
```

정책이름을 정의합니다.

![](/files/-MKU_yC7cD9YgVbeCoRr)

### 8.사용자에 권한 추가

앞서  생성한 정책 권한을 추가합니다.

**"AWS 관리 콘솔 - IAM -사용자 - "thor" - 요약 - 권한 추가"**

![](/files/-MKUVIw0303M1KnXHjjO)

앞서 생성한 고객관리형 기반 정책으로 만들어진, 위임을 위한 정책을 선택합니다.

![](/files/-MKUb39e-jOD1DUNF45i)

### 9. 사용자에 관리형정책 확인

사용자에 정상적으로 관리형 정책이 할당되었는지 확인합니다.

![](/files/-MKUbBiDa4GbVqz-WZhr)

### 10. 사용자 재로그인과 역할 전환

위임정책이 할당된 사용자 "thor"로 로그인을 합니다. 로그인 후에 메뉴 상단의 사용자를 선택하고 **역할 전환(Role Switch)**&#xB97C; 선택합니다.

<div align="left"><img src="/files/-MKUbY2-xIibDCySfb2q" alt=""></div>

![](/files/-MKUbpUVh70rfYDJolH6)

현재 계정번호와 새롭게 생성한 역할(Role)을 입력합니다.

* **계정 - 현재 계정번호**
* **역할 - 새롭게 생성한 역할(Role)이름**
* **색상 - 원하는 색상을 선택.**

![](/files/-MKUcOldATRLJXK6yuSY)

### 11. 역할 전환 확인

이제 역할이 정상적으로 전환되었는지 메뉴 상단을 확인합니다. 역할이름과 계정번호로 전환된 것을 확인 할 수 있습니다.

![](/files/-MKUcWkdpDgtmqSTlCmo)

사용자 "thor"에게는 S3 버킷을 생성할 수 있는 권한이 없었습니다. 역할 전환을 통해 정상적으로 새로운 역할을 부여 받았는지 확인합니다. S3 버킷을 생성해 봅니다. 정상적으로 생성된 것을 확인할 수 있습니다.

![](/files/-MKUcthC51t3HljW5H_9)

{% hint style="info" %}
아래는 역할 전환에 대한 소개 그림입니다. 역할 전환은 AWS 자원, 사용자 계정, 그룹등에 다양하게 사용되며, STS assumerole을 통해 안전하게 단기 임시 보안 Token을 사용할 수 있습니다. 이러한 방식은 자원등에 보안정보를 바인딩하지 않아도 되므로 보안도 강화할 수 있습니다.
{% endhint %}

![](/files/-MKVJYltBIO8Z-RFa9_j)

## 교차계정 Role Switch

### 1.교차계정 역할전환 소개

역할전환은 단일 계정에서만 사용가능한 것이 아니라 교차계정에서도 가능합니다. 예를 들어 Account-Dev의 그룹 Test는 개발이 완료된 이후 , Account-Dev에서의 사용자를 통해서 Account-PRD에 자원을 직접 생성하거나 조회할 수 있습니다. 대부분의 조직과 Account는 개발, 시험, 스테이징, Production 등으로 세분화 되므로, 이러한 경우에 교차계정 역할전환을 사용하면 편리하고 보안을 강화할 수 있습니다.

![](/files/-MKVOOPfOwSzFXKBoqjX)

### 2. 교차계정에서 역할(Role)만들기

교차계정에서 역할만들기를 선택합니다.

**"AWS 관리 콘솔 - IAM - 역할 - 역할만들기"**

![](/files/-MKVPuiAJGplbzWx5-UJ)

### 3. 교차계정에서 다른 계정 선택

교차계정의 역할 만들기 - 신뢰할 수 있는 유형의 개체 선택에서 "다른 AWS 계정"을 선택합니다. 이때 계정 ID는 사용자 "thor"가 있는 계정의 ID를 입력합니다.

![](/files/-MKVUKYktaGSy-i-PaE6)

### 4. 교차계정 역할에 정책 연결

교차계정의 역할에서 권한 정책을 연결합니다. "EC2FullAcess", "S3FullAccess" 를 선택해서, EC2,S3 자원에 대한 권한을 부여합니다.

![](/files/-MKVUkdjKtJCYQxSFIx2)

### 5. 교차계정 역할 이름 입력

교차계정 역할에 대한 이름을 입력하고 , 완료합니다.

![](/files/-MKVhY-c_NELTqimwJv8)

### 6. 교차계정 역할 정보 확인

교차계정 역할을 완료한 후 , 정책연결 내용 및 역할 ARN을 확인합니다. **ARN은 상대방 계정에서 사용되므로 복사 해 둡니다.**

![](/files/-MKVhw6HERLddI3YAB4-)

### 7. 위임을 위한 새로운 정책 만들기

사용자 "thor"가 존재하는 계정에서 정책을 설정합니다.

**"AWS 관리 콘솔 - IAM - 정책 - 정책생성"**

![](/files/-MKVd16-TjAeZQBLbnZQ)

정책 생성에서 시각적 편집기 또는 JSON으로 정책을 생성합니다.

* **서비스 - STS**
* **작업 - STS에서 허용되는 작업 지정 - AssumeRole**
* **리소스 - 앞서 복사해둔 교차계정 Role의 ARN을 입력합니다. 아래와 같은 구성입니다.**

![](/files/-MKViyhJi74WNCfTMvFL)

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::133802754686:role/cross-switch-role"
        }
    ]
}
```

ARN 편집을 통해 교차계정의 역할 ARN을 입력합니다.

![](/files/-MKViTuBejKoeZx0B7nK)

새로운 정책이 정상적으로 생성되었는지 확인합니다.

![](/files/-MKVjBc_GZpnZ_7YAqgR)

### 8. 그룹에 권한 추가

사용자 "thor"가 속해 있는 , 그룹 "Test"에 생성된 정책 권한을 추가합니다.

**"AWS 관리 콘솔 - IAM -  그룹 - Test - 정책연결"**

![](/files/-MKVfGvwlTEkiBt1NsBj)

앞서 생성한 위임을 위한 정책을 연결합니다.

![](/files/-MKVjfRh6cGDiZ5xQTU-)

### 9. 사용자 재로그인과 교차계정 역할 전환

사용자 "thor" 로 로그인하고, 사용자 정보 메뉴에서 역할 전환을 선택합니다.

<div align="left"><img src="/files/-MKVgJNfEo7jXuX9vfYx" alt=""></div>

역할 전환 창에서 교차계정번호와 교차계정에서 선언한 역할 이름을 정의해 줍니다.

* **계정 - 교차계정번호**
* **역할 - 교차계정에서 선언한 역할 이름.**

![](/files/-MKVgiw_YHtM_fKxA3Bs)

10\. 역할전환 확인

이제 정상적으로 역할전환이 이뤄집니다. 아래와 같이 교차계정에서 선언한 역할 이름으로 교차계정 역할전환이 이뤄진 것을 확인 할 수 있습니다.

![](/files/-MKVjyjU3wNjiSrb2J0V)

이제 교차계정의 자원을 정상적으로 생성할 수 있는 지 확인하기 위해, S3 버킷을 생성해 봅니다. 정상적으로 생성되는 것을 확인합니다.

![](/files/-MKVkG33khrwgJK87ZlI)

교차계정 AWS 관리콘솔에서 S3 서비스로 접근해서 , 실제 S3 버킷이 만들어졌는지 확인합니다.

![](/files/-MKVkSdhW691wDsaAOga)
