본문 바로가기
클라우드/AWS

[AWS] IAM(Identity and Access Management): 롤 플레이

by 클레어몬트 2025. 3. 6.

 

 

 

ㅁAWS IAM(Identity and Access Management): AWS 클라우드 리소스에 대한 접근을 제어하는 보안 및 권한 관리 서비스

AWS IAM 역할(Role) 관리 화면


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 적용)

AWS IAM 정책(Policy) 적용된 실제 AWS 콘솔 화면 예시

  • 위 이미지에서, *****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 보안을 강화하고, 최소 권한 원칙을 적용하여 안전한 클라우드 환경을 구축할 수 있다 🚀