
✅ IAM(Identity and Access Management)이란?
IAM은 AWS Identity and Access Management의 줄임말로, AWS 리소스에 누가, 무엇을, 어디까지 사용할 수 있는지를 제어하는 서비스이다.
쉽게 말하자면, “이 사용자는 EC2는 못 쓰고, S3는 읽기만 가능하게 해줘!” 또는 “이 키를 가진 애플리케이션만 S3에 접근할 수 있게 해줘!” 이런 식으로 접근 권한을 세밀하게 설정할 수 있도록 한다.
🧩 IAM의 구성 요소
| 구성 요소 | 설명 |
| 사용자(User) | AWS에 접근할 수 있는 주체 (사람 or 시스템) |
| 그룹(Group) | 여러 사용자에게 공통 권한을 부여할 수 있는 묶음 |
| 정책(Policy) | JSON 형식으로 작성된 권한 정의서. "무엇을 할 수 있는가"를 명시 |
| 역할(Role) | 임시로 부여되는 권한 묶음. 다른 AWS 서비스나 애플리케이션이 사용 |
💡 IAM은 왜 중요한가?
- AWS는 기본적으로 모든 리소스가 잠겨 있는 상태이다.
- 누구에게 어떤 권한을 줄지 명확히 지정해야만 접근할 수 있다.
- 특히 S3는 퍼블릭 접근이 이슈가 될 수 있는 서비스이기 때문에, IAM + 버킷 정책을 잘 설정하는 것이 보안상 매우 중요하다

☁️ Amazon S3(Simple Storage Service)란?
- Amazon S3는 업계 최고 수준의 확장성, 데이터 가용성, 보안, 성능을 제공하는 AWS의 객체 스토리지 서비스입니다.
- 웹 기반의 스토리지 시스템으로, 파일, 이미지, 영상, 로그, 백업 데이터 등 다양한 데이터를 무한에 가깝게 저장하고 관리할 수 있다.
- 저렴한 비용으로 안정적인 데이터 저장소를 확보할 수 있어, 백엔드 개발자 및 인프라 관리자들에게 널리 사용되고 있습니다.
🪣 S3 버킷(Bucket) 특징
| 특징 | 설명 |
| ✅ 버킷 이름은 전 세계에서 유일 | DNS 기반 주소 체계를 사용하므로 중복 불가 |
| 🌎 리전(region) 선택 필수 | 생성 시 AWS 리전을 지정해야 하며, 리전 간 자동 공유는 불가 |
| 🌐 버킷 주소 형식 | https://<버킷이름>.s3.<리전>.amazonaws.com 형태로 접근 가능 |
| 🕐 버전 관리 기능 지원 | 파일의 이전 버전 복원이 가능하여 사용자 실수에 대비 가능 |
✅ S3 사용 이유
1. 파일 및 데이터 저장
- 문서, 이미지, 동영상, 로그 파일 등 다양한 데이터를 저장할 수 있는 안정적인 공간 제공
- 파일들은 버킷 단위로 그룹화되어 저장됨
2. 무제한에 가까운 확장성
- 수천만 개의 객체 저장이 가능하며, 별도 서버 확장 없이 유연하게 용량을 늘릴 수 있음
3. 강력한 보안 및 권한 제어
- IAM 정책, 버킷 정책, ACL 등을 통해 세밀한 접근 제어 가능
- 서버 측 암호화(SSE) 및 클라이언트 측 암호화 지원
4. 데이터 백업 및 복원
- 중요한 데이터의 복사본을 저장하거나, 삭제/변경된 데이터를 쉽게 복원 가능
- Cross-Region Replication을 통한 다중 리전 백업 가능
5. 정적 웹 사이트 호스팅
- HTML, CSS, JS 등 정적 파일을 저장하고 웹사이트처럼 접근 가능
- CloudFront(CDN)와 연동 시 전 세계 빠른 응답 속도 확보
6. 글로벌 데이터 전송 및 배포
- AWS CloudFront와 함께 사용하여 전 세계 사용자에게 빠르게 콘텐츠 전송 가능
- 대용량 데이터도 빠르고 안정적으로 업로드/다운로드 가능
7. 비용 효율적인 과금 구조
- 사용한 만큼(pay-as-you-go) 과금
- 자주 접근하지 않는 데이터를 위한 스토리지 클래스(예: Glacier) 제공 → 비용 절감 가능
🔐 IAM 설정 정리
이제 본격적으로 S3를 사용하기 위한 IAM 설정 과정을 단계별로 살펴보자
우리가 원하는 건? 특정 사용자 혹은 애플리케이션이 S3 버킷에 접근할 수 있는 권한을 부여하는 것!
(1) IAM 사용자(User) 생성
- 상단 검색창에 IAM 검색 → 클릭
- 좌측 메뉴에서 사용자(Users) 선택

- "사용자 생성" 버튼 클릭

- 사용자 이름 입력 (예: s3-access-user)

(2) 권한 설정 (직접 정책 연결)

(3) AmazonS3FullAccess 정책 선택 → 모든 S3 리소스 접근 허용

(4) 설정들을 한번에 보여주는데, 확인 후 사용자 생성 버튼 클릭

(5) 사용자 생성 완료

(6) 액세스 키 발급을 위해 보안 자격 증명 클릭

(7) 액세스 키 발급 (외부에서 S3를 사용하기 위해 무조건 발급 !)

(8) AWS 외부에서 실행되는거니까 AWS 외부에서 실행되는 애플리케이션을 선택 후 다음

(9) 선택 사항이니 그냥 넘어가도 상관 없지만 일단 적어봄

(10) 키 생성 완료 시 .csv 파일 다운로드 클릭

🔐 S3 접근을 위한 IAM과 콘솔 액세스 설정
(1) 콘솔 로그인 > 콘솔 액세스 활성화
IAM 사용자를 만들 때 프로그래밍 방식 접근(Access Key) 외에도, AWS 콘솔(웹 화면)에서 직접 로그인할 수 있는 권한을 줄 수 있다.
- 자동 생성된 암호를 선택하면 임시 암호가 생성됩니다.
- 아래 옵션에서 사용자는 다음 로그인 시 새 암호를 생성해야 합니다.를 체크하면, 첫 로그인 시 비밀번호를 변경하도록 유도할 수 있습니다.


(2) 버킷 정책 설정
S3 버킷에 대한 접근 정책을 JSON 형식으로 작성 (이 정책은 모든 사용자("Principal": "*")에게 파일 읽기(s3:GetObject) 권한을 허용)



- Effect: Allow → 허용
- Principal: "*" → 누구나 (public 접근)
- Action: s3:GetObject → S3 파일 다운로드
- Resource → vybz라는 버킷 내의 모든 객체(/*)에 적용
{
"Version": "2012-10-17",
"Id": "Policy1748329520145",
"Statement": [
{
"Sid": "Stmt1748329519098",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::vybz/*"
}
]
}

'Study > TIL | AWS' 카테고리의 다른 글
| Route53부터 Certbot까지 : HTTPS 서버 구축 초기 과정 (2) | 2025.07.21 |
|---|---|
| EC2 인스턴스 메모리 부족 문제 해결기 (2) | 2025.07.14 |
| EC2 인스턴스 EBS 볼륨 확장 및 파일 시스템 확장 방법 (0) | 2025.06.15 |
| 2차 개인 프로젝트 CI/CD 배포 자동화 구축 (0) | 2025.05.22 |
| 처음부터 끝까지! GitHub Actions로 EC2 자동 배포하기 (8) | 2025.05.19 |