이전 실습에서 만들었던 VM 2개를 기반으로 GCP의 스토리지 서비스들을 알아보고 실습을 진행해 보겠다.
- 컴퓨트 서비스 (CPU, RAM) --> VM(Rocky, Ubuntu) 생성(완료)
- 스토리지 (HDD, SSD) --> 여기
- 이미지 (OS)
- 네트워크 (PUB, PVT, IP)
- 데이터베이스 (RDBMS)
오늘 실습한 스토리지는 3개이다.
- 블록 스토리지 - Persistent Disk
- 객체 스토리지 - Cloud Storage
- 파일 스토리지 - Filestore
이것들은 전부 AWS에서도 다룬 적 있는 서비스라 실습이 용이할 거 같다.
2. 스토리지 다루기
2.1 디스크 볼륨을 이용한 데이터 공유 실습
목표
- web01 → web02 간 aws.tar 파일을 공유
- 추가 디스크를 매개로 압축 파일을 이동하고 각 서버에 웹 기본 화면 구성
실습 순서 요약
1단계: web01 인스턴스 설정
/var/www/html/에 aws.tar 압축 해제
sudo tar -xvf aws.tar -C /var/www/html/

2단계: web01에 추가 볼륨 연결 및 파일 저장

추가 디스크 생성 (10GB) 후 아래의 명령어 실행

# 파티셔닝 및 마운트
sudo mkfs -t ext4 /dev/sdb sudo mount /dev/sdb /mnt
# 파일 이동
mv aws.tar /mnt
# 마운트 해제 및 디스크 분리
sudo umount /mnt

3단계: web02 인스턴스에서 디스크 마운트
- web01에서 분리한 디스크를 web02에 연결

2. /mnt 등에 마운트하여 aws.tar 복사
sudo mount /dev/sdb /mnt cp /mnt/aws.tar ~ tar -xvf aws.tar -C /var/www/html/



2.2 클라우드 스토리지 다루기 (객체 스토리지 like S3)
목표
- GCP의 Cloud Storage를 사용하여 객체 업로드, 공유, 접근 제어 방식을 이해
- AWS S3와 유사한 개념과 차이점 확인
Cloud Storage란?
- GCP의 객체 스토리지 서비스로, AWS의 S3와 유사한 구조
- 데이터를 버킷(bucket)에 저장하며, 개별 객체(object) 단위로 접근 가능
- 무제한 저장 가능, 전 세계 액세스, 높은 내구성
저장 클래스 이해 (S3의 IA/Glacier 대응)

| GCP 클래스 | AWS 대응 | 용도 |
| Standard | Standard | 자주 접근하는 데이터 |
| Nearline | S3 IA | 한 달에 한 번 이하로 접근 |
| Coldline | S3 One Zone-IA | 몇 달에 한 번 접근 |
| Archive | S3 Glacier | 거의 사용하지 않지만 보관 필요 |
객체 권한 기본 정책

- GCP는 기본적으로 모든 객체를 비공개로 설정함
- S3와 달리 버킷 생성 시 퍼블릭 엑세스 차단이 기본
보존 정책

- 소프트 삭제 (삭제 보호)
- 삭제해도 복구 가능 기간 설정
- 기본 보존 기간 설정
- 관리자가 전체 버킷에 강제 적용
- 커스텀 보존 기간
- 개별 객체 대상
- 객체 버전 관리
- 동일 이름 객체 덮어써도 이전 버전 유지
- 규정 준수 모드
- 법적 요건 충족, 삭제 불가
→ 모두 AWS S3의 Object Lock / 버전 관리 / Governance mode와 유사
실습 순서 요약
1단계: 버킷 생성 및 업로드 준비
- 버킷 생성 시 퍼블릭 액세스는 기본적으로 차단됨
- 저장 클래스 선택: Standard 선택
2단계: 객체 업로드
- 웹 콘솔을 통해 업로드함

3단계: 공유 방식 실습

- 인증된 URL 복사: 인증된 사용자들에게 접속을 허용하는 URL로 공유

공개 엑세스 방지를 삭제한다면 완전 공개 URL를 생성할 수 있고 그걸 통해 웹 호스팅을 할 수 있다.


Cloud Storage 공개 설정과 권한 관리 전략
객체 공개 설정의 위험성
- Cloud Storage 버킷의 퍼블릭 엑세스 설정을 허용하면, 로그인하지 않은 누구나 해당 객체에 접근할 수 있음.
- 이는 보안적으로 매우 위험할 수 있으며, 민감한 데이터가 외부에 노출될 가능성이 있음.
객체 단위 ACL(Access Control List)
- 개별 객체마다 ACL을 설정하여 일부만 공개하는 것도 가능.
- 예: 특정 이미지 파일만 공개하고 나머지는 비공개 유지.
!!GCP는 객체 단위 권한 관리를 비권장!!
- 객체 단위 ACL은 설정이 복잡하고, 의도치 않게 특정 객체가 외부에 조용히 공개될 수 있음.
- 추적이 어렵고 보안 사고 발생 시 감지 및 대응이 지연될 수 있음.
GCP 권장 권한 관리 패턴
- IAM 기반 버킷 단위 권한 관리
- 개별 객체가 아닌, 버킷 전체에 대해 IAM 역할 부여
- 예: allUsers → Storage Object Viewer 역할 부여 시, 전체 버킷이 공개됨
- 이 경우, 아래와 같이 객체에 대한 공개 URL 복사 기능이 활성화됨
- 버킷을 용도별로 분리
- "공개용 버킷", "내부 전용 버킷" 등 버킷 단위로 권한을 나눠 관리
- 관리 단순화 및 보안 사고 예방에 효과적
2.3 파일 스토리지 만들기 (Filestore 활용)
GCP의 Filestore는 완전관리형 NFS(Network File System) 기반 파일 스토리지 서비스로,
AWS의 EFS(Elastic File System)와 동일한 역할을 수행
온프레미스의 파일 서버처럼 여러 VM이 동시에 마운트하고 파일을 공유할 수 있다.
목표
- Filestore 인스턴스 생성
- web01에서 파일 업로드
- web02에서 동일 파일 읽기 → 파일 공유 확인
실습 과정
1. Filestore 인스턴스 생성
- GCP 콘솔에서 Filestore 인스턴스 생성
- 엑세스 포인트 확인: 10.135.101.146:/my_efs
2. web01 인스턴스에서 마운트 및 파일 저장
#엑세스 포인트
10.135.101.146:/my_efs
sudo mount -t nfs 10.135.101.146:/my_efs test

3. web02 인스턴스에서 동일 위치 마운트 후 파일 확인

-> 파일 공유 성공
핵심 차이 요약: Rocky Linux vs Ubuntu의 Apache(httpd)
| 항목 |
Rocky Linux (RHEL 계열) | Ubuntu (Debian 계열) |
| 패키지 이름 | httpd | apache2 |
| 설정 파일 경로 | /etc/httpd/conf/httpd.conf | /etc/apache2/apache2.conf |
| 웹 루트 디렉토리 | /var/www/html | /var/www/html (동일) |
| 서비스 이름 | httpd | apache2 |
| 디폴트 권한 제어 | SELinux + Require all denied | UFW/권한 제한 기본 설정은 약함 |
| 보안 시스템 | SELinux (강력) | AppArmor 또는 없음 (Ubuntu Desktop 기본) |
| 모듈 디렉토리 | /etc/httpd/modules | /etc/apache2/mods-enabled |
[추가] SELinux 이슈 (Rocky Linux)
- Rocky Linux에서는 SELinux가 기본적으로 Enforcing 모드로 활성화되어 있음
- 이로 인해 /var/www/html 경로가 NFS 마운트된 경우 접근 차단 발생 가능

etenforce
Enforcing -> 셀리눅스 켜져 있음
sudo setenforce 0

마무리
이번 실습에서는 GCP에서 제공하는 세 가지 주요 스토리지 서비스인 Persistent Disk(블록 스토리지), Cloud Storage(객체 스토리지), Filestore(NFS 기반 파일 스토리지)를 모두 다뤄보았다.
AWS에서 이미 유사한 서비스들을 다뤄본 경험 덕분에 전반적인 개념은 익숙했지만, 권한 관리 방식이나 보안 정책(특히 SELinux) 등 GCP의 차이를 몇 개 발견할 수 있었다.
앞으로는 이 VM 환경을 바탕으로 GCP 상에서의 네트워크 구성, 데이터베이스 연결, 로드 밸런싱 등 다양한 실습을 진행할 것이다.
'공부일지 > 클라우드 SA 교육' 카테고리의 다른 글
| [Openstack] 개념 및 설치 (0) | 2025.05.29 |
|---|---|
| [7주차] 주간 회고 (2025.5.19 ~ 5.25) (0) | 2025.05.26 |
| GCP(Google Cloud Platform) 시작하기 + VM 만들기 (0) | 2025.05.23 |
| EC2 + ALB + Auto Scaling 기반 웹 구조 자동화 실습 (0) | 2025.05.22 |
| 05/19 Role 기반 접근, Auto Scaling (0) | 2025.05.19 |