반응형

 

이번 포스팅에서는 계정 및 사용자를 관리하기 위한 IAM의 기본적인 개념 및 활용법에 대해서 살펴보려고 한다.

 

 


계정(Account)와 사용자(User)

 

 

https://docs.aws.amazon.com/whitepapers/latest/setting-up-multi-user-environments/setting-up-scenario-3-separate-aws-account-for-each-user.html

 

AWS에서 계정과 사용자의 용어는 구분된다.

 

계정 : AWS 리소스를 소유하는 주체. 계정을 생성하면 기본적으로 Root 사용자가 생성된다.

사용자 : Root 사용자, IAM 사용자, 심지어 Application 등 생성된 AWS 리소스를 이용하는 사용 주체

 

예를 들어, 회사에서 AWS 계정을 하나 생성하면 해당 계정은 회사 소유가 되며, 모든 리소스(예: EC2, S3, RDS 등)는 이 계정에 속한다.

회사는 계정에서 사용자를 생성하여 아래의 예시처럼 특정 리소스에 대한 행위를 할 수 있도록 한다.

  • 재무관리 역할을 하기 위해 Budget에 대한 조회를 할 수 있는 A의 IAM 사용자 A
  • 개발 프로덕션 역할을 하기 위해 EC2의 제어를 할 수 있는 B의 IAM 사용자 B

AWS에서는 계정 간 상호작용을 지원하는 교차 계정 액세스 및 리소스 공유를 지원한다. 따라서 목적에 따라서 여러개의 계정을 운영하는 전략을 택할 수도 있다. 

예를 들어 데브 계정과 프로덕션 계정을 분리하여, 데브 계정의 리소스 접근에 대한 권한 정책은 느슨하게 하되, 프로덕션 계정은 엄격하게 설정하여 개발자들이 실수로 프로덕션 환경에 장애를 초래하는 사태를 막고, 고위 권한자들만이 통제할 수 있도록 설정할 수 있다.

 

 

 


사용자(User)의 종류

 

Root 사용자

계정을 생성할 때 같이 생성되는 사용자, 계정의 모든 권한을 가지고 있는 사용자.

  • 탈취당했을 때 복구가 매우 어려움 → MFA 필수 (Multi-factor Authentication → OTP, 생체인식 등)
  • Root 사용자만이 할 수 있는 행위 : AWS 계정 설정, 요금 관련 설정(IAM 유저에게 위임 가능), AWS 지원 플랜 변경 등 가능.
  • Root 사용자는 위의 행위 외의 용도로 사용하는 것을 권장하지 않는다. (보안의 이유)
    • 일반적으로 부여 가능한 권한 전권을 위임한 Admin 사용자를 생성하여 최상위 사용자로서 사용하는 것을 권장한다.
    • 하위 작업은 IAM 사용자를 생성하여 수행한다.

 


IAM 사용자

Identity and Access Management(IAM)을 통해 생성한 사용자.

  • 초기 생성 시 권한이 없으며, 정책, 그룹을 통해 역할 권한을 부여받아야 함.
  • 사람 뿐만 아니라 Application과 같은 다른 주체를 포함. 사용자의 자격증명을 이용하여 접근 가능.

 

 

 

 


IAM (Identity and Access Management)

 

 

  • AWS 인프라의 보안 및 관리를 담당하는 글로벌 서비스
  • 계정 관리 및 리소스, 사용자, 서비스의 권한 제어

IAM의 구성

 

사용자 (User) : 실제 AWS를 사용하는 사람 혹은 Application

  • 정책을 통해 직접 권한을 할당받거나, 그룹 정책을 통해서 권한을 할당받을 수 있음.

 

그룹 (Group) : 사용자의 집합, 그룹에 속한 사용자는 그룹 정책에 따른 권한 부여

  • IAM 사용자들의 권한을 부여하기 위한 방식. 그룹에 정책을 직접 연결하여 지속되는 권한 정책을 부여한다.
  • 장기 자격 증명 (Access Key, Secret Key)를 사용하여 권한 인증 이후 리소스 접근 가능.
  • ex) 개발팀 그룹에 속한 사용자들에게 EC2 인스턴스 관리를 위한 EC2FullAccess 정책을 부여.

 

역할 (Role) : 권한의 집합. 다양한 주체는 Role을 통해 임시로 정책을 할당받음.

  • 주로 IAM 사용자를 포함한 외부 계정이나 Applciation, 리소스의 임시적인 권한 정책을 할당할 때 사용.
  • 클라우드 보안상의 이유로 영구적인 권한을 부여하는 것을 최소화하고 대체하기 위한 방법.
  • 임시 보안 자격 증명(Access Key, Secret Key, Session Token)을 기반으로 인증 이후 임시적인 리소스 접근 가능
  • ex) 애플리케이션 또는 외부 계정이 S3 버킷에 접근해야 하는 경우, 역할을 생성하고 해당 주체가 역할을 Assume하도록 설정

 

정책 (Policy) : 해당 사용자, 그룹, 역할, 리소스가 행동 가능한 권한을 JSON으로 정의된 문서.

  1. 해당 정책을 기반으로 리소스에 대한 해당 주체의 접근 허용 여부를 결정한다.
  2. 그룹 혹은 역할에 정책을 연결하면, 그 정책에 명시된 권한이 그룹의 모든 사용자, 역할을 부여받은 Application 에게 일괄적으로 적용
  3. [정책 : 그룹 혹은 역할]의 관계는 1:N으로 복수의 정책이 결합되어 할당될 수 있음.
  4. 정책의 종류
    • Identity 기반 정책: 관리형 정책 혹은 인라인 정책을 IAM 아이덴티티(IAM 사용자, 그룹, 역할)에 연결, 해당 주체가 특정 작업을 수행할 수 있는 권한 부여. 
    • Resource 기반 정책: 인라인 정책을 S3 버킷, SQS 대기열 등 리소스 자체에 연결되어 특정 주체에게 권한 부여
      • 관리형 정책 : AWS 계정에 속한 다수의 사용자, 그룹 및 역할에 독립적으로 연결할 수 있는 자격 증명 기반 정책
      • 인라인 정책 : 단일 사용자, 그룹 또는 역할에 1대 1 관계로 직접 추가하는 정책

 

 


정책(Pollicy)의 구성

 

1. Identity 기반 정책 : 작업(Action), 결과(Effect), 리소스(Resource), 조건(Condition)으로 구성

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
  }
}

 

특정 IAM 사용자, 그룹, 역할이 S3 버킷 amzn-s3-demo-bucket에서 객체 목록을 나열(ListBucket)할 수 있도록 허용(Allow)

 

 

 

2. Resource 기반 정책 : 주체(Principal), 작업(Action), 리소스(Resource), 조건(Condition)으로 구성

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example-bucket/*"
        }
    ]
}

 

AWS 계정 123456789012의 Root 사용자가 S3 버킷 example-bucket 내의 모든 객체를 읽을 수 있는 권한(GetObject)을 허용(Allow)

 

 

 

 

 


IAM 사용자 생성 및 권한 정책 부여해보기

 

1. IAM 콘솔에서 사용자 생성 클릭

 


2. 사용자 세부 정보 지정

우리는 Admin 역할을 하는 IAM 사용자를 생성해 볼 것이다. 따라서 AWS Console(웹)에 접근이 가능하도록 설정해주자.

콘솔 암호는 해당 IAM 사용자의 비밀번호를 지정해주는 것이다. 위에서는 초기 암호를 지정해주고, IAM 사용자가 최초 로그인 시 암호를 변경할 수 있도록 설정해주었다.

 

 


3. 권한 설정

 

이제 해당 사용자에 대한 권한 정책을 할당해보자.

직접 Policy를 연결하는 방법을 사용하여 AdministratorAccess 정책을 할당하여 관리자 엑세스 권한을 부여하였다.

 

 

 

일반 IAM 사용자의 경우에는 "그룹에 사용자 추가"를 통해서 그룹에 할당된 정책을 사용하도록 하는 경우가 많다.

아래에서 다룰 그룹 생성을 통해서 developer의 그룹의 권한 정책들을 할당해주는 방식이다.

 

 

 


4. IAM 사용자로 로그인해보기

 

 

IAM 사용자로 콘솔에 로그인하기 위해서는 계정 ID 혹은 별칭, IAM 사용자 이름, 비밀번호가 필요하다.

기본적으로 계정 ID는 12자리의 수로 할당되어 있지만, 이를 기억하기 어렵다면 계정 설정을 통해서 별칭을 별도로 설정할 수 있다.

 

 

 


그룹 생성 및 정책 부여

 

1. IAM 콘솔에서 그룹 생성 클릭

 


2. 그룹 설정

그룹의 이름을 지정하고, 기존에 존재했던 사용자들을 그룹에 추가할 수도 있다. 위의 그림에서는 developer 그룹을 생성하였다.

개발자 그룹이 사용할 정책으로 EC2에 모든 엑세스가 가능한 정책을 연결해주었다.

 

 

 

 

 


역할 생성 및 정책 부여

 

1. IAM 콘솔에서 역할 생성 클릭

 

 

 


2. 신뢰할 수 있는 엔터티 선택

해당 역할을 사용할 수 있는 주체를 지정하는 설정이다.

 

1. AWS 서비스 : 특정 AWS 서비스가 역할을 부여받을 수 있도록 설정

  • ex) Lambda 함수가 다른 서비스 S3와 상호작용하도록 역할 부여

2. AWS 계정 : 주로 다른 AWS 계정에서 역할을 부여받을 수 있도록 설정

3. 웹 자격 증명 : 외부 인증 공급자를 통해 역할을 부여받을 수 있도록 설정

  • ex) OAuth : Facebook, Google 등

4. SAML : SAML 프로토콜을 사용하는 외부 인증 공급자를 통해 역할을 부여받을 수 있도록 설정

  • ex) 기업 내 SSO(Single Sign-On) 환경에서 사용

5. 사용자 지정 신뢰 정책 : AWS 서비스, 특정 AWS 계정, IAM 사용자/역할, 외부 인증 공급자를 혼합하거나 특별한 조건을 추가하고 싶을 때 사용

  • ex) 특정 IAM 사용자의 일시적 권한 부여

 

 


3. 권한 정책 할당

임시 자격 증명을 통해서 EC2에 대한 읽기 권한을 부여하기 위해서 정책을 설정한다.

 


4. 자격 만료 시간 설정

 

역할은 임시적으로 권한 정책을 부여하기 위한 방식이라고 하였다.

역할이 생성되었다면, 역할 편집에서 임시 자격 증명의 최대 유효 시간을 설정할 수 있다. 따라서 자격 증명 이후 일정 기간이 경과된다면 접근 권한이 사라지게 된다.

 

 

 

 


영구적 정책 부여 vs 임시 정책 부여

 

1. 역할(Role)을 활용한 임시 정책 부여 

  • 임시 자격 증명 (Access Key, Secret Key, Session Token)를 통해 정책 부여
  • 만료 시간이 정해져 있어 자격 증명이 자동으로 폐기된다. 
  • 단기간 작업, 다른 계정이나 서비스의 접근 제어, 보안이 중요한 환경(자격 증명이 탈취되더라도 만료됨)에서 사용

2. IAM 사용자, 그룹, 리소스에 직접 영구적인 정책을 부여

  • 장기 자격 증명 (Access Key, Secret Key)을 통해 정책 부여
  • 정책은 명시적으로 제거하거나 수정하지 않는 한 계속 유효하다.
  • IAM 사용자 및 그룹 기반의 접근제어, 지속적인 장기적 권한이 필요한 경우에서 사용.
  • 보안상의 이유로 가능한 임시 자격 증명 방식을 권장.

 

 

<함께 보기> 자격 증명을 통한 인증과 접근 방식

https://sjh9708.tistory.com/247

 

[AWS] IAM : 인증과 접근 방식 (장기 자격 증명 & 임시 자격 증명)

이전 포스팅에서 다루어보았던 권한 정책 부여 방식에 따라, 서비스를 사용하기 위해서 자격 증명을 통해 인증하는 방법을 살펴보려고 한다. 영구적 정책 부여 vs 임시 정책 부여 1. 역할(Role)을

sjh9708.tistory.com

 

 

 


References

 

https://docs.aws.amazon.com/

 

https://docs.aws.amazon.com/

 

docs.aws.amazon.com

https://going-to-end.tistory.com/entry/AWS-IAM-%EC%A0%95%EC%B1%85policy-%EC%99%80-%EC%97%AD%ED%95%A0role-%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

AWS IAM 정책(policy) 과 역할(role) 의 차이

이번 포스팅에서는 역할에 대해 알아보고자 합니다. 역할은 정책과 차이를 가지는 개념으로서 이 두 개의 차이가 무엇인지에 대해 알아보고자 합니다. 우선 AWS 에서 정의하는 역할의 뜻은 아래

going-to-end.tistory.com

https://www.inflearn.com/course/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-aws-%EA%B8%B0%EC%B4%88/dashboard

 

쉽게 설명하는 AWS 기초 강의 강의 | AWS 강의실 - 인프런

AWS 강의실 | AWS 여정을 시작하기 위해 가장 필요한 내용을 담았습니다., 안녕하세요. AWS 강의실입니다.AWS 공식 커뮤니티 빌더이자 2만명의 구독자를 보유한 AWS Only 강의 유튜브의 경험으로 AWS를

www.inflearn.com

 

반응형

BELATED ARTICLES

more