본문 바로가기

Study/TIL | AWS

AWS S3 사용 전 꼭 알아야 할 IAM 권한 설정 가이드

✅ 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/*"
        }
    ]
}