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 자격 증명 보고서 생성 가능 |
'개발 공부 > AWS' 카테고리의 다른 글
[AWS] SAA 공부 (3)-3 EC2 - 가격 정책 (0) | 2025.03.19 |
---|---|
[AWS] SAA 공부 (3)-2 EC2 - 보안 그룹 (0) | 2025.03.19 |
[AWS] SAA 공부 (3)-1 EC2 - EBS / Snapshots / AMI (0) | 2025.03.19 |
[AWS] SAA 공부 (3) EC2 (Elastic Compute Cloud) (0) | 2025.03.18 |
[AWS] SAA 공부 (1) - 클라우드 기초 개념 (0) | 2025.03.11 |