westcold 2025. 2. 21. 00:22

AWS IAM 정리

https://digitalcloud.training/wp-content/uploads/2022/02/AWS-Identity-and-Access-Management.jpg


IAM: 사용자 및 그룹

  • IAM(Identity and Access Management): AWS 계정 내 사용자, 그룹, 역할, 정책 등을 관리하는 글로벌 서비스.
  • Root 계정: 기본적으로 생성되며, 사용하거나 공유하지 않아야 함
  • 사용자(User): 조직 내 개별 계정, 그룹에 속할 수 있음
  • 그룹(Group): 사용자만 포함 가능, 다른 그룹을 포함할 수 없음
  • 사용자는 그룹에 속하지 않아도 되며, 여러 그룹에 속할 수도 있음

 

AWS 계정 운영 방식

1️⃣ 회사가 AWS 루트 계정을 생성 (회사 = AWS 계정 소유)
2️⃣ 루트 계정에서 IAM 사용자들을 생성
3️⃣ 각 사용자에게 필요한 권한을 부여
4️⃣ 필요하면 IAM 사용자를 그룹으로 묶어서 관리

직원들이 개별적으로 AWS 가입하는 게 아니라, 회사 계정 내에서 IAM 사용자 계정을 부여받는 것!

 

*예시

개념 설명 예시
Root Account AWS 최상위 관리자 계정 회사 CEO
IAM User 개별 사용자 계정 직원 (팀원)
IAM Group 여러 사용자를 묶는 개념 부서 (개발팀, 운영팀 등)

IAM: 권한 (Permissions)

  • 사용자 또는 그룹에 JSON 정책(Policy)을 할당 가능
  • 정책은 사용자의 권한을 정의함
  • 최소 권한 원칙(Least Privilege Principle) 적용
    → 필요한 권한만 부여

예제 정책 (사용자에게 특정 서비스 조회 권한 부여)

{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Effect": "Allow",
   "Action": "ec2:Describe*",
   "Resource": "*"
  },
  {
   "Effect": "Allow",
   "Action": "elasticloadbalancing:Describe*",
   "Resource": "*"
  },
  {
   "Effect": "Allow",
   "Action": [
     "cloudwatch:ListMetrics",
     "cloudwatch:GetMetricStatistics",
     "cloudwatch:Describe*"
   ],
   "Resource": "*"
  }
 ]
}

IAM 정책 상속 (Policies Inheritance)

  • 정책은 사용자와 그룹에 할당됨
  • 그룹에 속한 사용자는 해당 그룹의 정책을 상속받음
  • Inline 정책: 특정 사용자에게 직접 적용 가능

IAM 정책 구조

  • Version: 정책 언어 버전 (항상 "2012-10-17" 포함)
  • Id: 정책 식별자 (선택 사항)
  • Statement (필수)
    • Sid: 문서 내 정책의 식별자 (선택 사항)
    • Effect: "Allow" 또는 "Deny" 설정
    • Principal: 정책이 적용될 계정/사용자/역할(Role)
    • Action: 허용 또는 거부할 액션 목록
    • Resource: 적용될 리소스
    • Condition: 특정 조건이 충족될 때만 정책이 적용됨 (선택 사항)

IAM 비밀번호 정책

  • 강력한 비밀번호 요구
  • 설정 가능 항목
    • 최소 길이 지정
    • 대문자, 소문자, 숫자, 특수 문자 포함
    • 사용자가 자신의 비밀번호를 변경하도록 허용
    • 일정 기간 후 비밀번호 변경 요구 (비밀번호 만료)
    • 이전 비밀번호 재사용 방지

MFA (Multi-Factor Authentication)

  • AWS 계정 보호를 위한 보안 기능
  • 비밀번호 + 보안 장치(2차 인증) 필요
  • MFA 사용 시 계정이 해킹당해도 접근 불가

MFA 장치 옵션

  1. 가상 MFA 디바이스
    • Google Authenticator (모바일)
    • Authy (모바일)
  2. Universal 2nd Factor (U2F) 보안 키
    • YubiKey (3rd Party)
  3. 하드웨어 키 FOB
    • Gemalto (3rd Party)
    • AWS GovCloud용 SurePassID (3rd Party)

AWS 접근 방법

  1. AWS 관리 콘솔 (비밀번호 + MFA)
  2. AWS CLI (Command Line Interface) (Access Key 필요)
  3. AWS SDK (Software Development Kit) (Access Key 필요)
  • Access Key
    • Access Key ID ≈ 사용자명
    • Secret Access Key ≈ 비밀번호
    • 외부 공유 금지

AWS CLI & SDK

  • AWS CLI
    • 명령어를 통해 AWS 서비스와 상호작용 가능
    • AWS 서비스의 API 직접 접근 가능
    • 스크립트를 작성하여 자동화 가능
  • AWS SDK
    • AWS 서비스에 프로그램적으로 접근할 수 있는 라이브러리
    • 여러 프로그래밍 언어 지원 (JavaScript, Python, Java, C++, Go 등)
    • 모바일 및 IoT SDK 지원
    • AWS CLI는 AWS SDK for Python(Boto3)을 기반으로 동작

IAM 역할 (IAM Roles)

  • 특정 AWS 서비스가 사용자의 대신 작업을 수행해야 할 경우 사용
  • AWS 서비스에 권한을 부여하는 방식
  • 대표적인 IAM 역할
    • EC2 인스턴스 역할
    • Lambda 함수 역할
    • CloudFormation 역할

IAM 보안 도구

  • IAM Credentials Report (계정 수준)
    • 계정의 모든 사용자 및 자격 증명 상태를 보고함
  • IAM Access Advisor (사용자 수준)
    • 사용자가 부여받은 권한과 마지막 사용 날짜 확인 가능
    • 불필요한 권한 제거에 활용 가능

IAM 모범 사례

Root 계정 사용 최소화
하나의 물리적 사용자 = 하나의 AWS 사용자
그룹을 활용하여 권한 관리
강력한 비밀번호 정책 설정
MFA 활성화 및 강제 적용
AWS 서비스에 권한을 부여할 때 역할(Role) 사용
CLI / SDK 사용 시 Access Key 사용
IAM Credentials Report 및 Access Advisor로 정기적인 감사 수행
IAM 사용자 및 Access Key 공유 금지


IAM 요약

  • 사용자(User): 개별 AWS 계정, AWS 콘솔 로그인 가능
  • 그룹(Group): 사용자만 포함 가능, 권한 관리 용이
  • 정책(Policy): JSON 형식으로 사용자의 권한을 정의
  • 역할(Role): EC2, Lambda 등 AWS 서비스에 권한 부여
  • 보안(Security): MFA 및 비밀번호 정책 활용
  • CLI / SDK: 프로그램적으로 AWS 자원 관리 가능
  • Access Key: CLI 및 SDK를 사용한 AWS 접근 방법
  • 감사(Audit): IAM Credential Report & Access Advisor 활용