01. IAM이란?
AWS의 거의 모든 동작은 결국 "이 사람(또는 이 서비스)이 이 작업을 해도 되는가?"라는 허가 판단을 거친다. IAM은 그 판단 기준을 한곳에서 정의하고 적용하는 서비스다. 다시 말해 AWS에서 일어나는 모든 조작 제어는 IAM을 통과한다고 봐도 된다.
사람에게 권한을 줄 수도 있지만, 사람이 아닌 서비스에 권한을 줄 수도 있고, 필요한 순간에만 잠깐 빌려주는 형태도 가능하다. 이 유연함이 IAM을 강력하게 만들면서 동시에 어렵게 만드는 지점이다.
02. IAM 사용자
실제로 AWS를 다루는 사람 한 명에 대응하는 것이 IAM 사용자다. 로그인할 때 인증(나는 누구인가)을 거치고, 로그인이 끝나면 그 사용자에게 붙어 있는 권한 범위 안에서 인가(무엇을 해도 되는가)된 작업을 한다.
사용자가 AWS를 다루는 통로는 크게 둘이다.
- 웹 콘솔에서 직접 클릭하는 방식
- 액세스 키를 발급받아 CLI나 코드에서 호출하는 방식
03. IAM 그룹
사람이 두세 명일 땐 한 명씩 권한을 챙겨줘도 된다. 하지만 인원이 늘면 같은 권한을 매번 개별로 붙이는 건 비효율적이고 실수도 잦다. 그래서 권한 묶음을 그룹에 한 번 설정해 두고, 사람을 그 그룹에 넣는 방식을 쓴다.
예를 들어 "데이터 분석 담당" 그룹에 필요한 권한을 정의해 두면, 새 분석가가 합류했을 때 그룹에 추가하는 것만으로 권한 세팅이 끝난다. 나갈 때도 그룹에서 빼면 된다. 권한 관리의 단위를 "사람"에서 "역할군"으로 끌어올리는 셈이다.
04. IAM 정책
"S3에서 파일을 읽을 수 있다", "RDS에 접근할 수 있다" 같은 구체적인 허용·거부 규칙을 모아 이름 붙인 것이 IAM 정책이다. 한 번 잘 만든 정책을 여러 사용자, 여러 그룹, 역할에까지 붙일 수 있고, 하나의 대상에 여러 정책을 겹쳐 적용할 수도 있다.
| 종류 | 설명 |
|---|---|
| AWS 관리형 정책 | AWS가 직접 만들어 제공하는 정책. 서비스가 업데이트되면 권한도 자동으로 따라붙는다. |
| 고객 관리형 정책 | 사용자가 직접 만드는 정책. 더 세밀한 권한 제어가 필요할 때 사용한다. |
05. IAM 역할
처음 IAM을 공부할 때 가장 헷갈렸던 부분이 사용자와 역할의 차이였다. 역할은 사람이 아닌 서비스에 권한을 줄 때 사용한다. Lambda가 EC2를 제어하거나, EC2가 S3를 읽어야 하는 상황이 대표적인 예다.
왜 액세스 키를 코드에 넣으면 안 되는가
가장 단순하지만 위험한 방법은 액세스 키를 발급받아 코드에 직접 넣는 것이다. 액세스 키는 변하지 않는 고정 문자열이고, 사실상 그 계정과 같은 권한을 들고 다닌다. 깃허브 같은 공개 저장소에 코드를 올리면서 키를 그대로 커밋해 제삼자에게 유출되는 사고가 실제로 흔하다.
IAM 역할로 해결하기
IAM 역할은 고정 키를 넘기지 않는 방식으로 이 문제를 해결한다. 역할에 필요한 정책을 붙여 두고, 필요한 순간에만 그 역할을 잠깐 빌려 쓰게 한다. 이때 발급되는 건 일정 시간이 지나면 만료되는 임시 자격 증명이다.
- 권한은 사용자 본인이 아니라 역할에 붙인다.
- 역할은 필요할 때만 사람이나 서비스에 부여된다.
- 임시 자격 증명이라 유출되더라도 피해 범위와 기간이 제한된다.
06. 계정이 여러 개일 때 — Role Switch
규모가 커지면 시스템마다 AWS 계정 자체를 나누는 것이 권장된다. 운영과 개발 환경을 섞지 않고, 비용 청구도 시스템별로 깔끔하게 관리하기 위해서다.
이때 계정마다 사용자를 따로 만들면 관리가 복잡해진다. 이걸 해결하는 것이 Role Switch(역할 전환)다. 사용자는 한 계정에 모아 두고, 각 시스템 계정에는 역할만 만들어 둔다. 사용자는 필요할 때 해당 역할로 전환해서 작업하면 된다. 사용자 자체에는 권한을 거의 두지 않고, 권한은 역할 쪽에 모아 두는 것이 핵심이다.
07. 정리
- IAM 사용자: AWS를 다루는 사람 한 명. 1인 1계정 원칙
- IAM 그룹: 같은 권한을 가져야 하는 사람들의 묶음
- IAM 정책: 권한의 실제 내용. 사용자·그룹·역할에 재사용 가능
- IAM 역할: 서비스나 임시 작업에 권한을 빌려주는 방식. 고정 키 유출 위험 없음
- Role Switch: 계정이 여러 개일 때 사용자는 한곳에 모으고 역할로 전환하는 방식
- 설계 원칙: 권한은 그때그때 막 붙이지 않고 사전에 설계한 뒤 부여한다
'AWS' 카테고리의 다른 글
| [AWS] S3 정적 웹 사이트 호스팅 실습 (1) | 2026.06.10 |
|---|---|
| [AWS] S3란? 버킷, 객체, 스토리지 클래스 개념 정리 (0) | 2026.06.10 |
| [AWS] EC2 인스턴스 생성 및 SSH 접속 실습 (1) | 2026.06.10 |
| [AWS] EC2란? 가상 서버 서비스 이해하기 (0) | 2026.06.09 |
| AWS & 클라우드 핵심 용어 정리 (0) | 2026.06.08 |