반응형

AWS Account의 운영 업무를 맡게된 당신에게 ~

Hi OkMan,

이번에 AWS 클라우드 운영 업무를 맡아 취업하게 된 걸 축하해. 
앞으로 학교 학원에서 배운 것 이상의 다양한 환경을 마주하게 될테니 AWS Document와 더더욱 친하게 지내길 바래.
그렇다고 AWS Document 만 너무 맹신하지 말길 바래. AWS는 기능 변경이 자주 있어서 Document가 바뀐 기능을 따라가지 못하는 경우가 많아. Document에서 본 화면과 실제 접속한 Console의 메뉴 배치나 기능이 약간씩 다른 경우가 아주 많으니까 놀라지 말고, 필요한 기능은 꼭 테스트를 해본 뒤에 사용하는 것을 추천한다.


이제 회사에서 사용하는 여러개의 AWS Account의 운영 업무를 맡게 됬으니, 여러 Account의 Console을 로그인 로그아웃하면서 환경을 바꿔가면서 일을 하는게 여간 번거로운게 아닐거야.
만일, AWS Account가 두세개 정도라면 몇가지 웹브라우저(크롬, 파이어폭스, 아파치, 엣지 등)을 동시에 열어놓고, 각각 다른 Account의 Console을 로그인해두고 사용하면 되겠지.
하지만, Account 갯수가 그 보다 더 많다면 그렇게 작업하긴 곤란하겠지. 회사에 프로젝트는 여러개인데 AWS 운영자는 그보다 수가 적은게 보통이니까, 운영자 한명당 맡게 되는 AWS Account가 십여개씩 되는 건 일반적인 상황일걸.
그런 환경에서 이쪽 저쪽 Account를 옮겨다니면서 작업하는 불편을 덜어줄 수 있는 AWS 의 Switch Role을 소개해볼게.
 
SwitchRole의 기본개념은 Gateway 개념과 유사해.
먼저, 내가 주로 사용할 AWS Account를 하나를 정해야되. 일명 Gateway Acoount라고 부를게.
그리고, 관리해야할 여러개의 AWS Account들에서 위의 Gateway Account의 Console Access 권한을 허용해주는거야.
그러면, Gateway Account에만 로그인한 상태로 SwitchRole 기능을 이용해서 별도의 로그인 없이 
한번의 클릭만으로 다른 AWS Account의 Console을 접속할 수 있어.

그러면, SwitchRole을 사용하기 위한 환경 설정을 해볼게.

우선, 테스트할 환경을 소개하지.
AWS Account 두개 또는 세개를 준비해.
 AWS Account ID는 12자리 숫자로 되어있지. 여기선 별칭으로 A, B, C라고 할게.
  - AWS Account ID "A" (1111 1111 1111)   
  - AWS Account ID "B" (2222 2222 2222)   
  - AWS Account ID "C" (3333 3333 3333)

SwitchRole Test Diagram


 위 ID 중에서 Account A를 Gateway 역할로 사용할게.
 그리고, 관리할 대상은 Account B와 C라고 할게.
 
그럼 이제부터 설정을 시작할거야.
 


Chapter 1. AWS Account "A" 콘솔에서 설정할 내용

 1.1) create an IAM user

    웹브라우저(예:크롬)에서 AWS Account ID "A"로 AWS Management Console에 로그인한다. 
    IAM 메뉴에서 AWS Switch Role (역할전환)에 사용할 IAM user 를 원하는 이름으로 만든다.

    내 경우에는  IAM user 를'maestro'라는 이름으로 만들었다.
    root Account를 그대로 이용할 수도 있겠지만, 
    user별 역할 분리와 보안성 강화를 위해서는 SwitchRole에 사용할 IAM user 를 이용하고,
    콘솔 로그인 옵션에 MFA(멀티 팩터 인증)을 추가할 것을 권장한다.
    물론, 기존에 사용하던 IAM user가 있다면 그대로 이용해도 관계는 없다.

create a IAM user ' maestro'


    IAM user 만드는 방법과 MFA 설정하는 방법은 다른 문서를 참고하길 바란다.
    이제 Account A 콘솔에서는 더 이상 설정할 것이 없다.
  


Chapter 2. AWS Account "B"콘솔에서 설정할 내용 

 2.1) create a role for allow IAM user 'maestro' of Account "A"

    이번 작업은 다른 웹브라우저(예:파이어폭스)를 이용하는게 편할 것이다. 
    Account ID B의  AWS Management Console에 접속할 Account ID A의 maestro user를 위한 권한을 허용하는 Role을 설정을 하자.

    Account ID B의  AWS Management Console에 로그인하고, IAM 메뉴에서 아래와 깉이 역할(Role)을 하나 만든다.

Create Role

    ---------------------------------------------------------------------------------------------------------------------------------
    Role Name : switchrole-maestro-of-A-to-B

    Step 1. Select trusted entity
     - Trusted entity type : select "AWS account"
     - An AWS account
       > select "Another AWS account"
       > Account id [ 111111111111 ] <-- 여기엔 AWS Account A의 ID 번호 12자리 숫자를 입력해.
       > Options : select "Require MFA"   

step 1.Select trusted entity



Step 2. Add permissions
 - Permissions policies
   . select "AdministratorAccess"
   여기에서는 maestro user에게 허용할 권한을 필요한 만큼 설정해주면 된다.
   이 예제에서는 쉬운 설명을 위해 full access 권한인 AdministratorAccess를 선택하였는데,
   실제 적용할 때는 user가 하는 일과 역할에 맞게 권한을 나눠서 주는것을 검토해보길 바래.

Step 2. Add permissions

Step 3. Name, review, and create

   처음 계획했던 Role name을 입력하고,  필요한 tag를 추가하고,  [Create role] 버튼을 클릭하여 작업을 완료한다.
   이 단계에서는 Trust policy를 수정하지 말고, 이후에 policy를 완성한 후 필요한 부분을 수정하는 것을 추천한다.

Step 3. Name, review, and create

   ---------------------------------------------------------------------------------------------------------------------------------

그러면, 역할(Role)이 아래와 같이 만들어졌어.

Role review



 2.2) Edit  role 


    위 1)과 같이 역할(Role)을 만든 후 신뢰관계(Trust relationships) 의 JSON 코드를 보면 root 계정을 기준으로 설정이 되어있다. 
처음 계획했던 대로 AWS Account "A"의 'maestro' user에게만 권한을 주기 위해 신뢰할 수 있는 엔터티(Trusted entities)의 Principal 부분의 내용을 이렇게 수정한다.

(before) "arn:aws:iam::111111111111/root"
(after)    "arn:aws:iam::111111111111:user/maestro"

role의 Trust relationships 항목의 json code - user부분을 수정했다 -


 * 변경 후의 JSON code


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/maestro"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]

 

이렇게 하면 AWS Account ID "B"에서 설정을 마쳤다.

* AWS Account ID "C"의 콘솔에서도 이 chapter 2의 내용과 동일하게 설정해주면 되므로, AWS Account ID "C"의 콘솔에서 설정할 내용은 생략한다.

Chapter 3. switchrole 링크 만들기 

이제, AWS Management Console에 Account ID A의 maestro user로 로그인했을 때,
Account ID B와 C의 콘솔로 연결되는 switchrole 링크를 만들어야 한다.


 3.1) Account ID A의 maestro user에서 역할전환(SwitchRole) 정보 등록하기


AWS Management Console에 Account ID A의 maestro user로 로그인하고,
Console 우측 상단의 "maestro" id를 클릭하면 역할전환(SwitchRole) 버튼이 보일것이다.

Account A의 IAM user인 maestro 로그인하기


역할전환(SwitchRole) 버튼을 클릭하고, Account B 와 C에서 설정했던 Role 정보를 등록해주면 된다.

역할전환(Switch Role) 버튼


a. Account B(222222222222)에 만들었던 Role 정보를 등록한다 
   [Switch Role]
   Account ID : 222222222222
   IAM role name : switchrole-maestro-of-A-to-B
   Display name (optional) : maestro-of-A-to-B
   Display color (optional) : Red 
   내용 입력하고 [Switch Role] 버튼을 클릭한다.

maestro user에서, B에 대한 Switch Role 정보를 등록하기



b. Account C(333333333333)에 만들었던 Role 정보를 등록한다 
   [Switch Role]
   Account ID : 333333333333
   IAM role name : switchrole-maestro-of-A-to-C
   Display name (optional) : maestro-of-A-to-C
   Display color (optional) : Orange
   내용 입력하고 [Switch Role] 버튼을 클릭한다.

maestro user에서 , C에 대한 Switch Role 정보를 등록하기


 3.2) 역할전환(SwitchRole) 링크를 클릭하여 다른 계정의 콘솔에 접속하기 

이제, WS Management Console에 Account ID A의 maestro user로 로그인하고,
Console 우측 상단의 "maestro" id를 클릭하면 역할전환(SwitchRole) 버튼 위쪽에 B와 C로 이동하는 링크가 보일 것이다. 

maestro user화면에 보여지는 B와 C로 연결하는 switchrole 링크들

 

[maestro-of-A-to-B] 링크를 클릭하면 Account B의 Console로 접속이 된다.

Accout B의 console로 전환된 화면, 상단에 Display Name에 작성한 ...B... 가 표시된다


ID를 클릭하면 [다시 전환] 이라는 버튼이 표시되며, 이것은 Account ID A의 maestro 의 Console로 다시 돌아갈 때 사용하는 링크이다.

Account B로 switch된 상태에서 maestro로 다시전환하는 링크가 보인다



정리하면,

 이제부터는 새로운 AWS 클라우드 계정을 만들 때마다 위와 같이 역할전환 설정을 해두면 되고, 
 클라우드 운영업무를 할 때는, Account ID A의 maestro user로 콘솔 로그인한 뒤, 관리할 계정으로 역할전환하면 된다.
 
그럼 오늘도 Good Luck 하길 ~
 

반응형

+ Recent posts