본문 바로가기
개발 공부/AWS

[AWS] SAA 공부 (2) - IAM (Identity and Access Management)

by sngynhy 2025. 3. 17.

IAM (Identity and Access Management)

서비스와 리소스에 대한 액세스를 안전하게 관리

사용자 및 그룹을 생성하고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있도록 함

  • AWS Account 관리 및 리소스/사용자/서비스의 권한 제어
    • 서비스 사용을 위한 인증 정보 부여
  • 사용자의 생성 및 관리 및 계정의 보안
    • 사용자의 패스워드 정책 관리 (일정 시간마다 패스워드 변경 등)
  • 다른 계정과의 리소스 공유
    • Identity Federation (소셜 로그인)
  • 계정에 별명 부여 가능 => 로그인 주소 생성 가능
  • 글로벌 서비스

IAM 구성

사용자 실제 AWS를 사용하는 사람 혹은 애플리케이션을 의미
그룹 - 사용자의 집합
- 그룹에 속한 사용자는 그룹에 부여된 권한을 행사
정책 (Policy) - 사용자와 그룹, 역할이 무엇을 할 수 있는지에 관한 문서
- JSON 형식으로 정의
역할 (Role) - AWS 리소스에 부여하여 AWS 리소스가 무엇을 할 수 있는지를 정의
- 혹은 다른 사용자가 역할을 부여 받아 사용
- 다른 자격에 대해서 신뢰 관계를 구축 가능
- 역할을 바꾸어 가며 서비스 사용 가능

사용자

  • 루트 사용자
    • 결제 관리를 포함한 계정의 모든 권한을 가지고 있음
    • 관리(계정 설정 변경, 빌링 등) 목적 이외에 다른 용도로 사용하지 않는 것을 권장
    • 탈취 되었을 때 복구가 매우 어려움 => MFA를 설정하는 것을 권장
      ※ MFA(Multi-factor authentication)란? 일회용 패스워드를 생성하여 로그인
    • AWS API 호출 불가 (Access Key, Secret Access Key 부여 불가)
  • IAM 사용자
    • IAM 서비스를 통해 생성한 사용자
    • 기본 권한 없음 => 따로 권한 부여
    • 한 사람 혹은 하나의 애플리케이션을 의미
    • 설정 시 콘솔 로그인 권한 부여 가능
    • 설정 시 AWS 서비스 이용 가능
      •  AWS API 호출 시 Access Key(아이디 개념), Secret Access Key(패스워드 개념) 사용
    • AWS의 관리를 제외한 모든 작업은 관리용 IAM User를 생성하여 사용
    • AdminAccess를 부여하더라도 루트 사용자로 별도의 설정을 하지 않으면 청구 및 결제 사용 불가

IAM 정책

1. 자격 증명 기반 정책 (Indentity-based policies)

  • 자격증명(IAM 유저, 그룹, 역할)에 부여하는 정책
  • 해당 자격증명이 무엇을 할 수 있는지 허용

 

2. 리소스 기반 정책 (Resource-based policies)

  • 리소스 (ex. S3, SQS, VPC Endpoint, KMS 등)에 부여하는 방식
  • 해당 리소스에 누가 무엇을 할 수 있는지 허용

IAM 정책 JSON 구조

{
	"Version": "2012-10-17",
	"Id": "S3-Account-Permissions",
	"Statement": [...]
}
  • Version: IAM Policy JSON 문서 양식 버전
    • "2008-10-17"와 "2012-10-17" 두가지 버전이 있으며 2012 버전 사용
  • Id: 정책 식별자 지정 (optional)
  • Statement: 권한 부여 규칙 나열 (required)
  • IAM 정책은 하나 이상의 문장으로 구성
    • 시드, 효과, 원칙, 조치, 리소스, 조건 (버전은 IAM 정책 자체의 일부로, 문장의 일부가 아님)
{
	"Statement": [
    	{
            "Sid": "1", // 식별자 (optional)
            "Effect": "Allow or Deny", // 특정 API 접근 허용 여부
            "Principal": { // 특정 정책이 적용될 사용자, 계정 혹은 역할로 구성
            	"AWS": ["arn:aws:iam::123456789012:root"] // 접근을 허용 혹은 거부하고자 하는 대상
            },
            "Action": [], // effect에 기반하여 허용 및 거부되는 API 호출의 목록
            "Resource": [], // 적용될 Action의 리소스 목록
            "Condition": "" // Statement가 언제 적용될지를 결정하는 조건 (optional)
        }
    ]
}

IAM 기능 요약

Users IAM 사용자는 실제 물리적 사용자와 매핑되어야 하며, 해당 사용자는 AWS 콘솔 비밀번호를 갖게 된다.
Groups 사용자를 그룹화할 수 있으며, 그룹 안에는 IAM 사용자만 포함
Policies 사용자 또는 그룹에 대한 권한을 정의하는 정책을 생성할 수 있으며, JSON 형식으로 정의
Roles EC2 인스턴스 혹은 AWS 서비스를 위한 역할 생성 가능
Security 보안을 위한 MFA 인증 또는 비밀번호 정책 설정 가능
AWS CLI/SDK 커맨드 라인으로 CLI를 사용하여 혹은 SDK를 사용하여 프로그래밍 언어로 AWS 서비스 관리 가능
Access Keys CLI 또는 SDK를 사용하여 서비스에 접근할 수 있는 Access key 생성 가능
Audit IAM 사용량 감사, IAM 자격 증명 보고서 생성 가능