IAM (Identity and Access Management) 은
AWS 리소스(예: EC2, S3, RDS 등)에 접근할 수 있는 사용자와 권한을 관리하는 서비스다.
쉽게 말하면 “누가(AWS User, Role, Principal)가 무엇(Resource)에 어떤 방식으로(Action) 접근할 수 있는가”를 정의하는 시스템이다.
인증(Authentication)
인가(Authorization)
보안 관리(Security Control)
| 구성 요소 | 설명 | 예시 |
|---|---|---|
| User | AWS에 로그인할 수 있는 개별 계정 | ex) dev_user, admin_user |
| Group | 여러 사용자를 묶어 동일한 권한 부여 | ex) Developers, Auditors |
| Role | 특정 서비스나 외부 사용자에게 임시 권한 부여 | ex) EC2 → S3 접근용 Role |
| Policy | 권한을 정의한 JSON 형식의 문서 | ex) "Action": "s3:*", "Resource": "*" |
| STS | 임시 자격 증명을 발급하는 서비스 | ex) AssumeRole, 연동 로그인 등 |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example-bucket"
}
]
}
Allow 또는 Denys3:GetObject)| 역할 | 설명 |
|---|---|
| 사용자 관리 | 사람·애플리케이션 계정 생성 및 접근 제어 |
| 권한 제어 | 리소스별 접근 정책 관리 |
| 보안 강화 | MFA, 비밀번호 정책, 세션 관리 |
| 교차 계정 접근 | Cross-account Role로 다른 계정 리소스 접근 가능 |
IAM은 필요에 의해 “누가, 무엇에, 어떻게 접근할 수 있는가”를 정의하는 AWS의 권한 관리 시스템이다.
모든 AWS 서비스는 IAM 위에서 동작하며, 보안 설계의 첫 단계는 항상 IAM 구조를 올바르게 잡는 것이다.