ㅁAWS IAM(Identity and Access Management): AWS 클라우드 리소스에 대한 접근을 제어하는 보안 및 권한 관리 서비스
IAM을 사용하면 사용자, 그룹, 역할(Role), 정책(Policy)을 생성하여 AWS 서비스에 대한 접근 권한을 세밀하게 설정할 수 있다
(IAM의 핵심 역할)
- RBAC(Role-Based Access Control) 기반의 보안 관리
- AWS 리소스에 대한 인증(Authentication) 및 권한 부여(Authorization)
- IAM 사용자, 그룹, 역할(Role) 기반의 권한 제어
- 정책(Policy) 기반의 세부적인 접근 제어 설정 가능
- Multi-Factor Authentication(MFA) 및 보안 강화 기능 제공
IAM의 주요 구성 요소 - 역할들(Roles)
1) 정책 (Policy)
- AWS 리소스에 대한 세부적인 권한(허용/거부)을 정의하는 JSON 문서
- 정책은 사용자(User), 그룹(Group), 역할(Role)에 연결되어 권한을 부여
[정책의 기본 구조]
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "ec2:StartInstances"],
"Resource": [
"arn:aws:s3:::example-bucket/*",
"arn:aws:ec2:region:account-id:instance/*"
]
}
]
}
- Effect: "Allow" or "Deny" (허용/거부 설정)
- Action: 허용할 작업 (예: s3:GetObject, ec2:StartInstances)
- Resource: 허용할 AWS 리소스 (예: 특정 S3 버킷, EC2 인스턴스)
2) 사용자 (User)
- AWS에 접근할 수 있는 개별 사용자 계정
- IAM 정책(Policy)을 적용하여 특정 AWS 서비스에 대한 접근 권한을 부여 가능
- 예제:
- 개발자 계정 → EC2 인스턴스 시작/중지 권한 부여
- 데이터 분석가 계정 → S3 읽기 전용(Read-Only) 권한 부여
3) 그룹 (Group)
- 여러 IAM 사용자를 논리적으로 묶어 공통된 권한을 적용
- 그룹에 정책을 연결하면, 그룹 내의 모든 사용자에게 동일한 권한이 부여됨
- 예제:
- Developers 그룹 → EC2, RDS 사용 권한
- Admin 그룹 → 모든 AWS 서비스에 대한 관리자 권한
4) 역할 (Role)
- IAM 사용자가 아닌, AWS 서비스(AWS Lambda, EC2 등) 또는 외부 애플리케이션이 AWS 리소스에 접근할 수 있도록 권한을 부여하는 개체
- IAM 역할(Role)은 고정된 자격 증명이 없으며, 임시 보안 인증을 통해 접근 권한을 부여
- 예제:
- EC2 인스턴스가 S3에 접근할 수 있도록 S3 Read 권한을 가진 IAM 역할(Role)을 부여
- EKS 클러스터에서 Kubernetes 컨트롤러가 AWS 리소스를 관리할 수 있도록 IAM 역할(Role) 부여
IAM 역할(Role)과 정책(Policy)이 적용된 예시 (Amazon EKS 관련 IAM Role 적용)
- 위 이미지에서, *****EKSClusterRole 역할(Role)이 생성되어 있음
- AdministratorAccess, AmazonEKSClusterPolicy 정책이 연결됨
- 이를 통해 EKS 클러스터가 AWS 리소스를 제어할 수 있는 권한을 가짐
IAM 정책 평가 순서
1️⃣ 기본적으로 모든 요청은 "명시적 거부(Deny)"
2️⃣ 허용(Allow) 정책이 적용되면 요청이 승인됨
3️⃣ 명시적 거부(Deny) 정책이 있을 경우, "허용(Allow)"보다 우선 적용됨
※ 즉, 명시적 거부(Deny) 정책이 있다면, Allow 정책이 있어도 접근할 수 없음!
5. IAM 보안 Best Practices(모범 사례)
1) Root 사용자 사용 최소화
- AWS 계정 생성 시 제공되는 Root 계정은 모든 권한을 가진 관리자 계정
- Root 계정은 보안 위험이 크므로 일반 사용자 계정을 생성하여 사용하고, 필요할 경우에만 Root 계정을 사용
2) 최소 권한 원칙(Least Privilege) 적용
- 사용자가 꼭 필요한 권한만 부여하여 보안 위험을 최소화
- 예: 개발자는 S3에 업로드할 수 있지만, S3 버킷 삭제는 불가능하게 설정
3) IAM 사용자 대신 IAM 역할(Role) 사용
- AWS 서비스 간 접근 권한을 부여할 때는 IAM 사용자 대신 IAM 역할(Role)을 사용하는 것이 권장됨
- 예: EC2 인스턴스가 S3에 접근해야 할 경우, IAM Role을 EC2에 부여하여 Access Key 없이 S3에 접근하도록 설정
4) IAM 정책을 주기적으로 감사(Audit)
- IAM 정책이 과도한 권한을 부여하고 있지 않은지 주기적으로 점검
- AWS IAM Access Analyzer를 사용하여 잘못된 정책을 감지하고 수정
5) 다중 인증(MFA) 활성화
- 모든 IAM 사용자 계정에서 MFA를 필수로 설정하여 계정 보안을 강화
- 특히 관리자(Admin) 계정은 반드시 MFA를 적용해야 함
[정리]
- AWS IAM은 AWS 리소스에 대한 접근을 제어하는 핵심적인 보안 서비스이다.
- IAM 정책(Policy), 사용자(User), 그룹(Group), 역할(Role)을 활용하여 세밀한 권한 관리를 수행할 수 있다.
- 보안 모범 사례를 준수하면 IAM을 안전하게 운영하고, AWS 환경을 보호할 수 있다.
IAM을 올바르게 활용하면 AWS 보안을 강화하고, 최소 권한 원칙을 적용하여 안전한 클라우드 환경을 구축할 수 있다 🚀
'클라우드 > AWS' 카테고리의 다른 글
[AWS] Storage - EFS, EBS (0) | 2025.03.07 |
---|---|
[AWS] Amazon ECR(Elastic Container Registry)이 궁금해요(feat.도커) (0) | 2025.03.07 |
[AWS] Amazon EKS가 궁금해요(feat.쿠버네티스) (0) | 2025.03.06 |
[AWS] ELB(Elastic Load Balancer)란? (1) | 2025.03.06 |
[AWS] Route 53 - DNS 서비스 (0) | 2025.03.06 |