IAM으로Role Switch하기

이번에는 Role Switch에 대해서 입니다. 자신의 계정에서 Role Switch를 하는 방법 다른 계정끼리 Role Switch를 하는 2가지의 방법을 준비해 보았습니다.
2020.05.20

이번에는 IAM의 Role Switch에 대해서

자신의 계정에서 Role Switch를 하는 방법,다른 계정끼리 Role Switch를 하는 2가지의 방법을 해보았습니다.

IAM이란

AWS Identity and Access Management(IAM)는AWS의 리소스를 안전하게 관리할 수 있도록 도와주는 서비스 입니다.

- 왜root계정으로 관리하면 안되는가

root 사용자 자격 증명을 사용하면 AWS 계정의 모든 리소스에 완전히 무제한으로 액세스할 수 있습니다. 여기에는 결제 정보에 대한 액세스 및 암호 변경 권한이 포함됩니다. 이러한 수준의 액세스는 계정을 처음 설정했을 때 필요합니다. 그러나 일상적인 액세스에는 루트 사용자 자격 증명을 사용하지 않는 것이 좋습니다. 특히 루트 사용자 자격 증명을 타인과 공유하면 타인이 내 계정에 무제한으로 액세스할 수 있으므로 공유하지 않는 것이 좋습니다. -AWS-

- Access방법

  • AWS Management Console
  • AWS CLI
  • AWS SDK
  • IAM HTTPS API

이번에는 이방법중 AWS Management Console를 이용해 보았습니다.

RBAC(Role-based Access Control)란

잠시 RoleSwitch를 하기전에 RBAC에 관해서 설명하겠습니다. 이 내용을 이해하시면 왜 Role Switch가 필요한지 더욱 이해가 될것 같아서 넣어 보았습니다.

RBAC(Role-based access control)란

역할(Role)에 권한을 부여해서 관리하는 방법

RBAC가 필요한 이유

예를 들어 설명해 보겠습니다.

  • 개발부Group
    • 시니어엔지니어 ⇒ 서버 액세스 권한 필요
    • 엔지니어 ⇒ 서버 액세스 권한 필요없음

가장 간단한 해결 방법 입니다.

  • 개발부 시니어엔지니어Gruop
    • 시니어엔지니어 ⇒ 서버 액세스 권한 있음
  • 개발부 엔지니어Gruop
    • 엔지니어 ⇒ 서버 액세스 권한 없음

이와 같이 하나의 Group이지만 필요한 권한에 따라서 Group을 나눌 필요가 있습니다. 이때마다 Group을 나누어 관리하는 것은 수가 많아질 수록 힘들게 될 것입니다.

그럼RBAC으로 관리한다면?

예를들면 이렇게

  • 개발부
  • 시니어엔지니어 ⇒ 시니어엔지니어역할
  • 엔지니어 ⇒ 엔지니어역할

이와같이Group을 늘릴 필요없이 간단하게 역할을 붙여서 관리하기만 하면 됩니다.

screen

RBAC에 해당하는 구성도 입니다.

Demo

  • 준비
    • 사용자를 만들어 주세요
    • 타계정에 사용자를 만들어 주세요.

자신의 계정에서

먼저 Roles로가서 Create Role을 눌러주세요.

아래의 화면대로 선택해 주세요. Options선택은 생략하고 진행하도록 하겠습니다.

screen

AccountID 는 MyAccount에서확인 하실 수 있습니다.

screen

다음으로는 원하시는 정책을 선택해서 만들어 주시면 됩니다.

screen

screen

만들어 졌다면 아래의 페이지로 가서

  • Role ARN 정보와
  • Give this link to users who 의 링크를

기억해 두세요.

screen

screen

자이제 거의 마지막입니다.

  • Users든 Groups이든 자신이 SwitchRole하고 싶은 유저가 포함된 곳에 가서 만들어 줍니다.
    • Policies에서 만들어 Users나 Groups 에 들어가 해당하는 유저가 포함된 곳에 등록해도 괜찮습니다.
    • 직접 Users나Groups에 들어가 inline policy로 등록해도 괜찮습니다.

여기에서는 inline policy로 만들겠습니다.

inline policy: User, Group, Role에 1대1로 할당되는 정책입니다.

screen

처음 가면 이런 모습입니다.

{
    "Version": "2012-10-17",
    "Statement": []
}
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect":"Allow",
        "Action":"sts:AssumeRole",
        "Resource":"arn:aws:iam::myAccount:role/만든Role"
    }
}

Resource에 방금 기억해 두라고 했던 Role ARN 정보를 넣으시면 됩니다.

그럼 끝입니다.

inline policy로 등록을했다면 연결해둔 Groups의 User나 Users에들어가서 등록했다면 등록한 User로 로그인합니다.

그리고 방금 기억두라고 했던 2번째 URL로 접속해줍니다.

screen

이제 Role Switch를 하실 수 있습니다.

screen

타인의 계정에서

이제 서로 다른 계정끼리의 Role Switch입니다. 사실 앞의 과정대로 하셔서 성공하셨다면 어려운건 없습니다.

다른 정보는 단 하나입니다.

screen

처음 설정할때의 화면입니다.

AccountID를 지금 만든 역할을 연결하고 싶은 계정의 AccountID로 설정해 주시면 됩니다.

그 이후 과정은 자신의 계정에서와 같으므로 생략하도록 하겠습니다.

그리고 역할을 연결할 User는 당연히 역할을 연결하고 싶은 계정의 User(처음 Role을 만들때 설정한 AccountID의 User)입니다.

그럼 자신의 계정에서 했던 대로 정책을 연결해주시면 됩니다. 물론 User가 포함된 Groups에 등록해도 되고Users에 등록해도 됩니다.

이번에는 MyAdiminAccess라는 역할을 만들어 보았습니다.

screen

그럼 다른 계정에서 Role Switch를 해보겠습니다.

등록은 자신의 계정에서와 동일합니다. 기억한 2번째 URL을 통해 접속후 등록해주세요.

screen

TIP

마지막으로 좋은 확장 프로그램이 있어서 추천하고 싶습니다.

만약 Role Switch을 등록한후 다른 PC로 접속해보시면 등록된 역할을 보실 수 없게됩니다. 또는 Cookie의 정보를 지우시면 보실 수 없게 됩니다.

왜냐하면 Role Switch는 브라우저 Cookie에 저장되기 때문입니다. 그뿐만아니라 최대 5개의 밖에 등록하실 수 없습니다.

지금 추천하는 프로그램은 앞에서 말했던

  • 단점
    • Cookie에 저장됨
    • AWS Management Console에서 등록 가능한 수는 최대 5개

을 해결할 수 있는 방법입니다.

screen

사용방법은 간단합니다.등록을 마치면

screen

screen

Configuration에 위와 같이 등록해주세요.

role_arn 은 아마 짐작하신대로 처음 Role을 등록후 첫번째로 기억해야할 정보 입니다. color 정보는 하셔도 되고 안하셔도 됩니다.

  • 그럼 이제 단점이였던
    • Cookie에 저장됨 -> Cookie저장되지 않음 정보를 잃지 않음
    • AWS Management Console에서 등록 가능한 수는 최대 5개 -> 5개 이상 등록가능

을 해결하실 수 있습니다.

이상이였습니다. 정리를 잘했는지 모르겠습니만 도움이되었으면 좋겠습니다. ^^

아래의 참고자료는 일본어로 되어있지만 보시면 이해하시는데 도움이 될것같습니다.

참고자료

AWS IAM

AWS IAM-역할을 만들어 IAM 사용자에게 권한 위임

Role Switch

AWS Extend Switch Roles 소개