AWS IAM(Identity and Access Management)은 AWS 리소스에 대한 접근 권한을 세밀하게 제어하는 핵심 보안 서비스다. 사용자, 역할, 정책을 통해 누가 어떤 작업을 할 수 있는지 정의하며, 루트 사용자 권한 남용을 방지하는 것이 핵심 목적이다.
AWS에서 사용자(User)는 AWS 서비스에 접근하는 실체(사람 또는 애플리케이션)를 의미한다.
| 구분 | 로그인 방식 | 특징 |
|---|---|---|
| 루트 사용자 | 이메일 + 비밀번호 | 계정 소유자, 모든 권한 보유. 엑세스키 발급 금지 권장 |
| IAM 사용자 | 계정 ID(12자리) + 사용자명 + 비밀번호 | 세분화된 권한 부여 가능 |
aws configure 시 입력.IAM 정책과 역할은 최소 권한 원칙(Least Privilege)을 구현한다.
IAM 정책:
JSON 형식 문서로, "누가(Principal) → 어떤 작업(Action) → 어떤 리소스(Resource)"를 정의.
{
"Statement": [{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}]
}
역할(Role):
임시 권한 세트로, EC2 인스턴스가 S3에 접근하거나 Lambda가 DynamoDB를 호출할 때 사용.
장기 엑세스키 대신 STS(보안 토큰 서비스)를 통해 짧은 시간 동안 권한 부여.
예시: EC2 인스턴스에 S3 읽기 전용 역할 부여 → 인스턴스 재시작 시 자동 권한 적용.
AWS CLI는 IAM 인증 정보를 활용해 명령어로 AWS 리소스를 관리한다.
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
# macOS
brew install awscli
# Windows
AWS CLI MSI(64비트) 다운로드 → 설치 실행
# 버전 확인
aws --version
# IAM 사용자 엑세스키로 구성
aws configure
입력값 예시:

AWS Access Key ID: [IAM 사용자 엑세스키]
AWS Secret Access Key: [비밀키]
Default region name: ap-northeast-2
Default output format: json
IAM 구성 후 바로 테스트 가능한 명령어들.

# 버킷 목록 조회
aws s3 ls
# 버킷 삭제 (빈 버킷만 가능)
aws s3 rb s3://버킷명
# 실행 중인 EC2 목록
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running"
# 현재 계정 IAM 사용자 조회
aws iam list-users
간단한 배포 스크립트가 복잡해지고 고도화되면 IaC(Infrastructure as Code)와 자동화 도구로 확장된다.
Terraform : "인프라를 코드로" (AWS 리소스 생성/삭제)
Ansible : "서버를 코드로" (패키지 설치/서비스 설정)
*(모든 리소스), AdministratorAccess 정책 남발
체크활성/비활성 확인
위 권한의 경우 root 사용자 권한과 유사하므로 주의해야함
권한 요약 확인
<콘솔 로그인 URL, 사용자 이름, 콘솔 암호>을 통해 콘솔 로그인 및 엑세스키 발급 후 CLI 작업 수행