AWS IAM(Identity and Access Management)은 AWS 리소스에 대한 접근 제어를 담당하는 핵심 서비스입니다. 관리자 혼자 사용하는 소규모 계정부터, 수십 명이 협업하는 대규모 조직까지 모두 사용해야 할 필수 기능이죠.
이번 글에서는 IAM의 기본 개념부터, 사용자별 권한 세분화, 그리고 보안 강화를 위한 MFA(Multi-Factor Authentication) 설정 꿀팁까지 실용적인 내용을 담아 정리했습니다.
IAM이란? 왜 꼭 써야 할까?
IAM은 AWS 리소스에 대한 접근을 세밀하게 통제할 수 있는 서비스입니다. 기본적으로 AWS 루트 계정은 모든 권한을 가지고 있지만, 이 계정으로 모든 작업을 하면 보안상 매우 위험합니다.
IAM을 사용하면 다음과 같은 이점이 있습니다:
- 개별 사용자/그룹 생성 및 관리 가능
- 리소스에 대한 세분화된 권한 부여 가능
- MFA 등 보안 강화 기능 적용 가능
- 정책 기반 접근 제어로 조직/역할 분리 가능
즉, IAM을 제대로 설정하면 보안은 물론 협업 효율성까지 극대화할 수 있습니다.
IAM 사용자 만들기 – 실습으로 배우기
1. IAM 콘솔 접속
- AWS 콘솔 > “IAM” 검색 → 진입
- 좌측 메뉴 → Users → Add users 클릭
2. 사용자 이름 및 접근 방식 설정
- 사용자 이름:
developer01
,analyst02
등 - Access type:
- 콘솔 접근 (비밀번호 기반)
- 프로그래밍 접근 (API, CLI, SDK) → Access key 생성 필요
3. 권한 설정
- 기존 그룹에 사용자 추가하거나
- 기존 정책 연결 (
AdministratorAccess
,AmazonS3ReadOnlyAccess
등) - 또는 직접 권한을 JSON 형식으로 생성 가능
4. 태그 추가 및 사용자 생성 완료
- 역할, 프로젝트 이름 등을 태그로 입력하면 관리에 용이함
IAM 사용자 권한 세분화 꿀팁
IAM은 **정책(Policy)**을 기반으로 권한을 제어합니다. JSON 형식의 문서를 통해 매우 정밀한 제어가 가능합니다.
예: S3 특정 버킷만 접근 가능한 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::my-bucket-name/*"
}
]
}
권한 세분화 전략
역할 유형 | 예시 권한 |
---|---|
개발자 | Lambda 실행, CloudWatch 보기, S3 일부 접근 |
분석가 | Athena, S3 ReadOnly |
운영 담당자 | EC2, RDS 시작/중지, 로그 확인 |
외부 프리랜서 | 특정 프로젝트 리소스만 제한적 접근 |
Tip: 사용자 그룹을 만들어 역할별 정책을 붙이면 관리가 쉬워집니다.
MFA 설정으로 보안 강화하기
루트 계정이나 관리자 계정에는 반드시 MFA(다중 인증) 설정이 필요합니다. 단순한 비밀번호만으로는 계정이 해킹될 수 있어 위험합니다.
MFA 설정 방법
- IAM 콘솔 → 사용자 선택 → Security credentials 탭
- Assign MFA device 클릭
- Virtual MFA device 선택
- 스마트폰에 Google Authenticator 또는 Authy 설치
- QR 코드 스캔 → MFA 코드 두 번 입력
- 설정 완료
이제 로그인 시마다 일회용 MFA 코드 입력이 필요해집니다.
IAM 보안 모범 사례 요약
- 루트 계정은 사용 금지, 오직 IAM 사용자로 작업
- 모든 사용자에 개별 계정 생성 – 공유 계정 금지
- 필요 최소 권한 원칙(Least Privilege Principle) 적용
- IAM 정책은 그룹 기반으로 관리
- 관리자 계정에는 반드시 MFA 설정
- Access key는 주기적으로 교체하고, 노출 금지
- IAM Access Analyzer나 CloudTrail을 통해 사용 기록 모니터링
Q&A
Q1. IAM 정책을 직접 JSON으로 작성해야 하나요?
꼭 그렇진 않습니다. AWS는 **많은 기본 정책(Managed Policy)**를 제공하며, 대부분의 일반적인 역할은 클릭만으로 설정 가능합니다. 그러나 보다 세밀한 제어가 필요한 경우에는 직접 JSON으로 커스터마이징할 수 있어야 합니다. 정책 생성기는 GUI 기반으로 정책 생성을 도와주므로 처음에도 무리 없습니다.
Q2. 루트 계정을 완전히 차단해도 괜찮나요?
AWS에서는 루트 계정을 삭제할 수 없지만, 사용을 최소화하는 것이 보안상 필수입니다. MFA를 설정하고, 루트 계정은 결제 정보 확인, IAM 사용자 생성 등 일부 작업에만 제한적으로 사용하세요. 나머지 모든 작업은 IAM 사용자에게 위임해야 합니다.
Q3. 여러 사용자에게 동일한 권한을 주려면 어떻게 해야 하나요?
이럴 땐 **IAM 그룹(Group)**을 사용하세요. 예를 들어 ‘개발자’ 그룹을 만든 뒤, 필요한 정책을 그룹에 연결하고 사용자들을 그 그룹에 추가하면 됩니다. 권한 변경도 그룹 단위로 하면 일괄 적용되므로 관리가 매우 편해집니다.
Q4. IAM 사용자에게도 MFA를 강제로 적용할 수 있나요?
네, 가능합니다. IAM 정책이나 **AWS Organizations SCP(서비스 제어 정책)**를 통해 MFA 미설정 사용자는 AWS 리소스 접근 불가하게 만들 수 있습니다. 또는 로그인 시 MFA를 설정하지 않으면 콘솔 사용을 제한하는 조건도 추가할 수 있습니다. 보안 중심의 조직에서는 꼭 적용하세요.
Q5. IAM 사용 내역을 확인하려면 어떻게 하나요?
AWS CloudTrail과 IAM Access Analyzer를 이용하면 IAM 사용자의 활동 로그를 추적할 수 있습니다. 누가 언제 어떤 리소스에 접근했는지, 어떤 API를 호출했는지를 기록하며, 이상 접근이 탐지되면 알림도 받을 수 있습니다. CloudTrail은 모든 AWS 계정에 자동 활성화되며, 자세한 로그는 S3에 저장해 분석할 수 있습니다.