환경 구축 - AWS 다중 계정 구조에서 Assume Role로 권한 위임

Sb_chi·2025년 7월 10일
post-thumbnail

🔍 Intro

지난 시간에는 IAM User를 통해 관리자 권한을 가진 계정을 만들었다.
이 방식은 소규모 환경에서는 효율적이지만,
팀 단위나 프로젝트 단위로 운영하는 업무 환경에서 하나의 계정으로 모든 리소스를 관리하는 것이 제한적이다.
이번 시간에는 AWS에서 다계정을 운영할 때, 어떻게 리소스를 관리하고 계정 간 권한을 연동하는지에 대해 정리했다.


🔗 관련링크

AWS 계정 생성 후 초기 설정
https://velog.io/@go_sbchi/account-management

환경 구축 - AWS 계정 관리(IAM을 이용해 관리자 계정 만들기)
https://velog.io/@go_sbchi/env-aws-iam


다중 계정을 사용하는 이유

각 목적별, 용도별로 팀단위로 묶어서 관리하기 위해서이다.

  • 보안과 안정성
    하나의 계정으로 모든 것을 관리하게 되면 보안에 취약해지고, 계정을 사용하는 여러 개의 팀중에 하나의 팀만 문제가 생겨도, 전체 시스템에 문제가 생길 수 있기 때문에 분리하여 안정성과 보안을 높인다.

  • 비용 관리
    비용 청구가 계정 각각에 발생하기 때문에 계정을 사용하는 팀은 다른 팀의 비용청구 내용을 알 필요가 없어서 관리하기 좋다.

  • 관리 효율성
    각각의 계정별로 리소스나 권한 등을 관리하기 때문에 관리가 편하다.


계정 간 리소스 접근을 하는 방법

팀 단위로 계정을 분리하더라도,
계정 간에 리소스를 공유하거나 접근해야 하는 상황이 발생한다.
이때 사용하는 기능이 Assume Role이다.

Assume Role이란?

다른 계정의 역할을 임시로 해당 계정의 권한을 사용하는 기능

내 계정의 사용자가 다른 계정의 권한을 일시적으로 빌려서 그 계정의 리소스를 사용할 수 있도록 해주는 기능

👉 운영 계정에 로그인한 내가, 개발 계정의 S3 버킷을 잠깐 보고 싶을 때 , 개발 계정에서 운영 계정에서 사용할 수 있게 역할을 설정해 놓으면 운영 계정에서 나는 개발 계정의 역할을 잠깐 빌려와서 S3를 볼 수 있다.

  • 이후 원래 계정의 사용자는 다른 계정의 역할이 허용한 범위 내에서 권한 행사

  • AWS 콘솔 UI에서 스위칭 가능
    AWS 서비스 중 하나인 멀티 세션을 이용하면 세션 만료없이 두개 이상의 계정을 관리할 수 있다.


🧪 구성 흐름

  1. A계정에서 로그인 후 역할 생성

  2. 멀티 세션을 이용해 A,B 계정 세션 만료 없이 사용

  3. 역할 전환으로 B계정으로 A계정 접근

  4. B계정으로 접속중인 상태로 A계정에 S3 버킷 생성해보기


📕 Assume Role 활용해보기

💡 계정 구분

A계정 ID : 05**********

B계정 ID : 00**********

  1. A계정 접속
  • 계정 접속 ➡️ IAM 콘솔에 접속 ➡️ 역할 탭 클릭 ➡️ 역할 생성 ➡️ 다음 클릭

  1. 세부 정보 구성하기(역할 생성)
  • 엔터티 유형 : AWS 계정
  • 아래에 AWS 계정에서 다른 AWS 계정 클릭 : B계정의 계정 ID를 복사 붙여넣기한다. ➡️ 다음 클릭

  1. 권한 부여
  • 테스트이기 때문에 모든 접근이 가능한 AdministratorAccess를 권한으로 부여했다.

  1. 역할 이름 주기 후 완료 클릭
  • 역할 이름: aws-multi-account-management

이제 B계정에 만들어진 역할만 넘겨주면 A계정에 접근해 동작시킬 수 있다.

  1. 멀티 세션 키기
  • 멀티 세션 지원 켜기 클릭 ➡️ 세션 추가 클릭

서로 다른 세션이 켜진게 확인된다.

💡 멀티 세션이란?

  • 동시에 여러 개의 세션에 접속 유지 시켜주는 AWS 기능

  • 켜져 있지 않으면 브라우저창을 두 개 띄워놓고 각각 다른 계정으로 로그인 해도, 제일 최근에 로그인한 계정으로 두 개다 바뀐다.

  1. 역할 전환
  • B계정에서 아래쪽에 새 역할 클릭

  1. 구성하기(역할 전환)
  • Account ID : A계정 ID

  • IAM role name : aws-multi-account-management

  • Display name - optional : login-beom-account ➡️ 선택사항(별명)

  • Display color - optional : Blue ➡️ 선택사항(역할이 무슨 색으로 표시될 것인가)

  • 완료되면 Switch Role 클릭

B계정으로 A계정에 접속이 된게 확인된다.


  1. S3 생성해보기

A 계정에 접근했으니, 아까 주어진 AdministratorAccess 권한을 활용해 S3 버킷이 A계정에 만들어지는지 확인해보자

  • Region : ap-northeast-2 , Seoul로 변경

  • 간단한 S3버킷 생성

  • 이름 : test-bucket-beom

A계정에 돌아가 확인해 봐도 잘 만들어진게 확인된다.


🧾 정리

  • 계정을 분리하면 보안과 비용 관리를 강화되고, Assume Role로 계정 간 권한을 임시 위임해 리소스를 안전하고 효율적으로 공유할 수 있다.
항목설명
계정 분리의 장점보안 강화, 비용 관리 등등
Assume Role 기능계정 간 권한 위임을 위한 역할 전환
A 계정 역할을 생성하고 B 계정의 접근을 허용
B 계정 A 계정의 역할을 위임받아 임시 권한 획득 후 리소스 접근
멀티 세션 기능여러 계정 간 전환의 간편화
테스트B 계정이 A 계정의 S3 버킷에 접근 후 버킷 생성

0개의 댓글