Cloud/클라우드 활용

[클라우드 활용] 6주차

승주우에요 2026. 4. 12. 13:25

1. Amazon S3란?

S3(Simple Storage Service)는 AWS가 제공하는 객체 스토리지 서비스다.
파일을 버킷(Bucket) 단위로 관리하고, 개별 파일은 객체(Object) 형태로 저장된다.

핵심 수치
객체 하나의 최대 크기는 5TB이며, 저장 가능한 객체 수에는 제한이 없다.
내구성은 99.999999999% (11 9s) — 3개의 가용 영역(AZ)에 중복 저장하기 때문이다.

주요 특징

항목 설명

무제한 저장 용량 페타바이트(PB) 이상도 문제 없음
높은 내구성 11 9's, 3개 AZ 중복 저장
다양한 접근 방식 HTTP(S), CLI, SDK, API
정적 웹 호스팅 HTML 정적 웹사이트 직접 서빙 가능
자동 백업/복원 버전 관리 및 수명 주기 정책 지원

버킷 이름 규칙

버킷 이름은 전 세계에서 고유해야 한다. 규칙을 어기면 생성 자체가 안 된다.

허용

  • 3~63자 사이
  • 소문자, 숫자, 점(.), 하이픈(-) 허용
  • 문자 또는 숫자로 시작/끝

불허

  • 대문자
  • 밑줄(_)
  • 하이픈으로 끝나는 이름
  • 점 연속(..)

올바른 예시

docexamplebucket
log-delivery-march-2020
my-hosted-content

잘못된 예시

doc_example_bucket   # 밑줄 포함
DocExampleBucket     # 대문자 포함
doc-example-bucket-  # 하이픈으로 끝남

주요 사용 사례

  • 정적 웹 콘텐츠와 미디어 저장 및 배포
  • 전체 정적 웹사이트 호스팅 (HTML, 이미지, 동영상, JS)
  • 백업 도구
  • 연산 및 대규모 분석용 데이터 스토어

2. S3 스토리지 클래스

데이터 접근 패턴에 따라 스토리지 클래스를 선택하면 비용을 절감할 수 있다.
접근 빈도가 낮을수록 저장 비용은 낮아지지만 검색 비용이 높아진다.

클래스 주요 용도 특징

S3 Standard 자주 접근 고비용, 빠른 응답, 고가용성, 고내구성
S3 Standard-IA 드물게 접근 낮은 저장 비용, 높은 검색 비용
S3 Intelligent-Tiering 접근 패턴 예측 어려운 데이터 자동으로 비용 효율적 계층 이동 (Standard → Standard-IA)
S3 One Zone-IA 단일 AZ, 드물게 접근 비용 절감, 내구성 낮음
S3 Glacier 아카이빙 몇 분~몇 시간 대기 후 접근
S3 Glacier Deep Archive 장기 보관 최소 12시간 대기, 최저 비용

기타 기능

  • 수명 주기 정책: 생성일 기준으로 스토리지 클래스를 자동 변경할 수 있다.
  • 버전 관리: 기본 비활성화 상태이며, 활성화하면 실수로 삭제된 객체를 복원할 수 있다.

3. S3 버킷 보안

S3는 기본적으로 퍼블릭 접근을 차단한다. 권한은 크게 두 가지 방식으로 제어된다.

Bucket Policy vs IAM 정책

구분                                                       Bucket Policy                                               IAM 정책

중심 리소스 중심 사용자 중심
적용 대상 S3 버킷 전체 사용자 / 역할
형식 JSON JSON

Bucket Policy 기본 구조

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "정책 설명용 식별자",
      "Effect": "Allow | Deny",
      "Principal": "*",
      "Action": "s3:동작",
      "Resource": "arn:aws:s3:::버킷이름/경로"
    }
  ]
}

모든 사용자에게 읽기 허용하는 예시

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicRead",
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject"],
      "Resource": "arn:aws:s3:::my-bucket-name/*"
    }
  ]
}

⚠️ 주의: Principal: "*"는 모든 사용자에게 허용을 의미한다.
공개 버킷에만 사용하고, 민감한 데이터에는 절대 사용하지 말 것.


4. VPC(Virtual Private Cloud)란?

VPC는 AWS 클라우드 내에서 사용자가 직접 정의하는 논리적 네트워크 공간이다.
마치 회사 사무실 내부 네트워크처럼, 외부와 격리된 나만의 네트워크를 구성할 수 있다.

VPC 생성 시 결정해야 할 3가지

  1. 리전 선택 — VPC는 특정 리전에 귀속된다
  2. CIDR 블록 지정 — Private IP 주소 범위를 결정 (예: 10.0.0.0/16)
  3. VPC 이름 결정 — 관리 편의를 위해 의미 있는 이름 사용

CIDR 표기법

IP 주소 범위를 x.x.x.x/n 형태로 표기한다.
/n은 고정 비트 수를 의미하며, 숫자가 작을수록 더 넓은 범위다.

예시: 10.0.0.0/16

  • 앞 16비트는 고정 (네트워크 주소)
  • 뒤 16비트는 가변 (호스트 주소) → 10.0.*.* 범위

RFC 1918 권장 범위

RFC 1918 범위 CIDR 블록 예시

10.0.0.0 ~ 10.255.255.255 (/8) 10.0.0.0/16
172.16.0.0 ~ 172.31.255.255 (/12) 172.31.0.0/16
192.168.0.0 ~ 192.168.255.255 (/16) 192.168.0.0/20

기본 VPC: 모든 AWS 리전에는 172.31.0.0/16 기본 VPC가 하나씩 존재하며,
각 가용 영역(AZ)마다 디폴트 퍼블릭 서브넷이 자동 생성되어 있다.


5. 퍼블릭 & 프라이빗 서브넷

서브넷은 VPC 내부를 더 작은 단위로 나눈 네트워크 구역이다.
라우팅 테이블 설정으로 퍼블릭/프라이빗을 구분한다.

구분 퍼블릭 서브넷 프라이빗 서브넷

인터넷 접근 가능 (IGW 경유) 불가 (직접 접근)
라우팅 테이블 0.0.0.0/0 → IGW 0.0.0.0/0 → NAT GW (아웃바운드만)
주요 배포 리소스 웹 서버, Bastion Host DB 서버, 내부 API 서버

퍼블릭 서브넷 라우팅 테이블 예시

Destination Target

10.10.0.0/16 local
0.0.0.0/0 igw-id

프라이빗 서브넷 라우팅 테이블 예시

Destination Target

10.10.0.0/16 local
0.0.0.0/0 nat-gw-id

NAT Gateway

프라이빗 서브넷의 인스턴스가 아웃바운드 트래픽(예: 패키지 다운로드)을 인터넷으로 보낼 때 사용한다.
반대로 외부에서 프라이빗 서브넷으로의 인바운드 접근은 여전히 차단된다.

보안 권장: DB, 내부 서비스, 민감한 리소스는 반드시 프라이빗 서브넷에 배치하자.
퍼블릭 서브넷에는 외부 노출이 꼭 필요한 리소스만 올릴 것.


6. 보안 그룹 vs 네트워크 ACL

VPC에서 트래픽을 제어하는 두 가지 방화벽 메커니즘이다. 둘 다 함께 쓰는 게 가장 안전하다.

항목 보안 그룹 (Security Group) 네트워크 ACL

적용 범위 EC2 등 인스턴스 단위 서브넷 단위
상태 Stateful (응답 자동 허용) Stateless (응답도 별도 허용 필요)
허용/거부 허용만 가능 허용 + 거부 모두 가능
규칙 우선순위 전체 허용 목록 적용 Rule 번호 순으로 평가
주요 용도 리소스(인스턴스) 보호 서브넷 레벨 보안 필터링

보안 그룹 예시 — 웹 서버

방향 프로토콜 포트 소스 설명

Inbound TCP 80 0.0.0.0/0 HTTP 허용
Inbound TCP 443 0.0.0.0/0 HTTPS 허용
Inbound TCP 22 내 IP만 SSH (관리자 전용)
Outbound ALL ALL 0.0.0.0/0 모든 아웃바운드 허용

보안 그룹 예시 — DB 서버

방향 프로토콜 포트 소스 설명

Inbound TCP 3306 웹 서버 보안 그룹 ID MySQL 접근 허용 (같은 VPC 내)
Outbound ALL ALL 0.0.0.0/0 모든 아웃바운드 허용

NACL 인바운드 트래픽 제어 예시

Rule # Type Protocol Port Source Allow/Deny

100 HTTP TCP 80 0.0.0.0/0 ALLOW
110 SSH TCP 22 203.0.113.0/24 ALLOW
120 ALL ALL ALL 0.0.0.0/0 DENY

⚠️ NACL 주의사항: Stateless이기 때문에 요청 트래픽과 응답 트래픽 규칙을 모두 별도로 정의해야 한다.
Deny 규칙을 잘못 설정하면 연결이 끊길 수 있으니 Rule 번호와 순서를 꼭 확인하자.


7. 실습 체크리스트

콘솔 켜두고 순서대로 따라하기!

S3 실습

  • [ ] AWS 콘솔에서 S3 서비스 접속
  • [ ] 버킷 생성 (이름 규칙 지키기: 소문자, 하이픈 사용)
  • [ ] index.html 파일 객체 업로드
  • [ ] 정적 웹사이트 호스팅 활성화
  • [ ] 버킷 정책(Bucket Policy)으로 퍼블릭 읽기 권한 설정
  • [ ] 브라우저에서 URL 접속해 결과 확인

VPC & 서브넷 실습

  • [ ] VPC 콘솔 접속
  • [ ] VPC 생성 (CIDR: 10.0.0.0/16, 자동 생성 기능 활용)
  • [ ] 퍼블릭 서브넷 추가 생성 (AZ 선택, CIDR 지정)
  • [ ] 프라이빗 서브넷 추가 생성
  • [ ] 퍼블릭 서브넷 라우팅 테이블에 IGW 등록 확인
  • [ ] VPC 리소스 맵에서 구성 결과 확인

'Cloud > 클라우드 활용' 카테고리의 다른 글

[클라우드 활용] 11주차  (0) 2026.06.22
[클라우드 활용] 10주차  (0) 2026.05.10
[클라우드 활용] 9주차  (0) 2026.05.10
[클라우드 활용] 7주차  (0) 2026.05.10
[클라우드 활용] 2주차  (0) 2026.03.22