[AWS] IAM 기초 개념 정리

2025. 12. 16. 17:52·AWS

AWS를 처음 시작하면 가장 먼저 마주치는 서비스 중 하나가 IAM이다.
EC2나 S3보다 먼저 설정해야 하고,
“이걸 왜 이렇게 까다롭게 나누지?”라는 생각도 들 수 있다.

 

하지만 IAM은
AWS 계정 보안의 핵심이자 모든 서비스의 출발점이다.

 

이번 글에서는 AWS를 사용하기 전에 반드시 이해해야 할
IAM의 기본 개념과 구성 요소를
최대한 쉽게 정리해본다.

 

1. IAM이란 무엇인가?

IAM은 다음 한 문장으로 정리할 수 있다.

IAM = AWS에서 누가, 무엇을, 어디까지 할 수 있는지를 관리하는 서비스

IAM은
서버를 생성하거나 저장소를 만드는 서비스가 아니다.

대신,

  • 누가 AWS에 로그인할 수 있는지
  • 어떤 AWS 서비스를 사용할 수 있는지
  • 어디까지 접근 가능한지

를 관리한다.

즉,
AWS 리소스에 대한 접근 권한을 통제하는 보안 서비스가 IAM이다.

 

2. IAM이 필요한 이유

AWS는 기본적으로
권한이 없으면 아무것도 할 수 없는 구조다.

만약 모든 사람이
하나의 계정, 하나의 권한으로 AWS를 사용한다면,

  • 실수로 서버 삭제
  • 데이터 유실
  • 요금 폭탄
  • 사고 발생 시 책임 추적 불가

같은 문제가 발생할 수 있다.

그래서 AWS는
IAM을 통해 권한을 세분화하고 통제하는 방식을 사용한다.

 

필요한 사람에게
필요한 권한만
필요한 만큼만

 

이게 IAM의 핵심 철학이다.

 

3. Root 사용자란?

AWS 계정을 처음 생성하면
자동으로 하나의 계정이 만들어진다.
이 계정이 바로 Root 사용자다.

 

Root 사용자의 특징

  • 계정 생성과 동시에 자동 생성
  • AWS 모든 서비스에 대한 무제한 권한
  • 결제 정보, 계정 설정 변경 가능
  • 권한 제한 불가능

즉,

Root 사용자 = AWS 계정의 주인

이라고 보면 된다.

 

4. Root 사용자는 왜 위험한가?

Root 사용자는
모든 권한을 가지고 있기 때문에 매우 강력하다.

하지만 동시에
탈취되었을 때의 위험도 가장 크다.

만약 Root 계정이 해킹되면,

  • 모든 리소스 삭제
  • 수백 대 서버 생성 → 요금 폭탄
  • 계정 자체 탈취

까지 가능하다.

그래서 AWS에서는
Root 계정을 일상적인 작업에 사용하지 말 것을 강력히 권장한다.

 

5. MFA(Multi-Factor Authentication)는 필수다 (중요)

AWS를 처음 만들었을 때
가장 먼저 해야 할 보안 설정은 MFA 설정이다.

특히,

  • Root 사용자
  • 모든 권한을 가진 IAM 사용자

이 두 계정에는
반드시 MFA를 설정해야 한다.

 

MFA는 다음과 같이 정리할 수 있다.

MFA = 비밀번호 + 추가 인증 수단을 함께 사용하는 로그인 방식

즉,

  • 비밀번호만 알아서는 로그인 불가능
  • 추가 인증(OTP 등)이 있어야 접근 가능

AWS에서는 보통
인증 앱을 통한 일회용 코드(OTP)를 사용한다.

 

 

왜 MFA가 꼭 필요한가?

비밀번호는 생각보다 쉽게 유출될 수 있다.

  • 피싱 메일
  • 같은 비밀번호 재사용
  • 깃허브에 실수로 키 업로드
  • 악성 코드 감염

AWS 계정은
털리는 순간 피해 규모가 커진다.

그래서 AWS는
Root 사용자에는 MFA를 사실상 필수 보안 설정으로 취급한다.

실무에서는 보통,

  • Root 계정: MFA 설정 후 거의 사용하지 않음
  • 실제 작업: IAM 사용자로 수행

이 패턴을 사용한다고 한다.

 

6. IAM 사용자(User)

IAM 사용자는
AWS에서 실제 작업을 수행하는 주체다.

사람일 수도 있고,
애플리케이션일 수도 있다.

 

IAM 사용자의 특징

  • 직접 생성해야 함
  • 기본적으로 권한 없음
  • 정책을 통해 권한 부여
  • 콘솔 로그인 또는 API 접근 가능

중요한 점은
IAM 사용자는 생성만 하면 아무것도 할 수 없다는 것이다.

반드시 권한을 따로 부여해야 한다.

 

7. 그룹(Group)

그룹은
IAM 사용자들의 묶음이다.

그룹을 사용하는 이유는 단순하다.

  • 사용자마다 권한을 따로 관리하기 어렵기 때문

예를 들어,

  • 개발자 그룹
  • 운영자 그룹
  • 읽기 전용 그룹

처럼 역할 기준으로 그룹을 만들고
그룹에 권한을 부여하는 방식으로 관리한다.

사용자는 그룹에 속함으로써
그룹의 권한을 그대로 상속받는다.

 

8. 역할(Role)

역할(Role)은
IAM에서 가장 헷갈리기 쉬운 개념이다.

한 문장으로 정리하면 다음과 같다.

Role = 특정 주체에게 잠시 빌려주는 권한

역할은
특정 사용자에 고정되지 않는다.

주로,

  • EC2
  • Lambda
  • 기타 AWS 서비스

가 다른 AWS 리소스에 접근할 때 사용된다.

이 방식 덕분에
액세스 키를 코드에 직접 넣지 않아도 되며
보안이 크게 향상된다.

 

9. 정책(Policy)

정책은
“무엇을 할 수 있는지”를 정의한 규칙 문서다.

IAM의 실제 권한은
모두 정책으로 결정된다.

 

정책의 구성 요소

  • Resource: 어떤 리소스인지
  • Action: 어떤 행동인지
  • Effect: 허용 또는 거부
  • Condition: 조건(IP, 시간 등)

즉,

정책 = 권한 그 자체

라고 보면 된다.

 

다음과 같이 JSON형식으로 작성된다.

 

 

10. IAM 권한이 동작하는 방식

AWS는 요청이 들어오면
다음 순서로 권한을 검사한다.

  1. 요청을 보낸 주체 확인
  2. 사용자/그룹 정책 확인
  3. 역할(Role)이 있다면 역할 정책 확인
  4. 명시적 거부(Deny)가 있으면 무조건 거부
  5. 허용 정책이 있으면 실행

이 구조 덕분에
AWS는 매우 정교한 권한 제어가 가능하다.

 

마무리하며

이번 글에서는
AWS를 처음 시작할 때 반드시 알아야 할
IAM의 핵심 개념과 보안 원칙을 정리해보았다.

  • Root 계정의 위험성
  • MFA가 왜 필수인지
  • IAM 사용자, 그룹, 역할, 정책의 역할

IAM은 처음엔 복잡해 보이지만,
차근차근 하나씩 이해해보길 바란다.

 

감사합니다.

'AWS' 카테고리의 다른 글

[AWS] 클라우드 컴퓨팅과 AWS 기초 개념 정리  (0) 2025.12.16
'AWS' 카테고리의 다른 글
  • [AWS] 클라우드 컴퓨팅과 AWS 기초 개념 정리
0kingki_
0kingki_
자바 + 스프링 웹 개발
  • 0kingki_
    0kingki_
    0kingki_
  • 전체
    오늘
    어제
    • 분류 전체보기 (134)
      • 코딩 테스트 (54)
      • 자바 (21)
      • 스프링 (27)
      • 타임리프 (16)
      • 스프링 데이터 JPA (8)
      • 최적화 (2)
      • QueryDSL (4)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BFS
    예외처리
    쿼리dsl
    SOLID
    코딩테스트
    최적화
    Java
    스프링
    타임리프
    백준
    재귀
    spring
    JPA
    fetch join
    QueryDSL
    다형성
    스프링 데이터 JPA
    쿼리
    thymeleaf
    컬렉션
    LocalDateTime
    객체지향
    자바
    dfs
    코딩 테스트
    예외 처리
    스프링 컨테이너
    불변객체
    SpringDataJpa
    mvc
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
0kingki_
[AWS] IAM 기초 개념 정리
상단으로

티스토리툴바