[GCP] Google Cloud Armor 적용 (feat. Custom Error page - Cloud Storage)

2025. 3. 23. 12:54·Cloud

서비스를 운영하다 보면 내부 시스템을 외부에 노출시켜야 하는 상황이 생긴다. 특히 클라이언트사 담당자들이 접근하는 운영/통계용 대시보드는 접근 권한을 세밀하게 제어해야 할 필요가 있는데, GCP 환경에서 Google Cloud Armor를 활용한 IP 기반 접근 제어를 구현하게 되었다.

이 글은 Cloud Armor를 활용하여 특정 IP만 접근 가능하도록 구성하고, 허용되지 않은 IP는 커스텀 에러 페이지로 유도하는 구성 방법을 상세히 정리한 실전 가이드이다.


왜 Cloud Armor를 도입했는가

Cloud Armor를 도입한 이유는 명확하다. 운영 중인 VM이 퍼블릭하게 노출되어 있고, 이 서비스에 접근 가능한 IP를 고객사 내부망으로 제한하고자 했기 때문이다.

GCP의 VM 방화벽 기능으로도 IP를 제어할 수 있지만, 다음과 같은 이유로 Cloud Armor를 선택했다:

  • VM 수준이 아닌 LB(Load Balancer) 수준에서 제어 가능
  • 커스텀 에러 페이지 리디렉션 구성 가능
  • 향후 WAF, DDoS 대응까지 고려한 확장성 보유

 

1. Cloud Armor 생성

목적: 특정 IP만 허용하고, 허용되지 않은 IP의 요청을 차단하여 403 에러를 반환하도록 설정

단계별 설정

  1. GCP 콘솔 → 네트워크 보안 → Cloud Armor 이동
  2. "보안 정책(Security Policy) 생성" 클릭
  3. 정책 이름 설정: 예) dev-access-policy
  4. 정책 규칙 추가:
    • 허용할 IP 추가 → ALLOW 설정
    • 차단할 모든 IP 추가 → DENY (403) 설정
  5. 정책 저장 후 Load Balancer의 백엔드 서비스에 적용
    • 예: dev-web-loadbalancer-backend

결과: 지정된 IP 이외의 접근은 모두 403 Forbidden 반환


2. Load Balancer 선택 & 설정

목적: Cloud Armor가 적용된 Load Balancer에서 차단된 요청이 발생하면, 특정 에러 페이지로 리디렉션

단계별 설정

  1. GCP 콘솔 → 네트워크 서비스 → Load Balancing 이동
  2. 기존 Load Balancer 선택 (예: dev-loadbalancer)
  3. 백엔드 서비스(Backend Service) 확인
    • dev-web-loadbalancer-backend가 Cloud Armor와 연결되어 있는지 확인
  4. 라우팅 규칙 수정:
    • 예: dev.example.com 도메인 확인
    • Cloud Armor 정책 적용 확인

결과: 허용된 IP는 정상 접속, 차단된 IP는 403 Forbidden 발생


3. Cloud Storage에 403 에러 페이지 추가 후 공개 설정

목적: 차단된 사용자가 403 Forbidden 페이지를 보도록 설정

단계별 설정

  1. GCP 콘솔 → Cloud Storage 이동
  2. 새 버킷 생성 (예: dev-error-page-bucket)
  3. 403.html 파일 업로드 (커스텀 메시지 작성)
  4. 파일 공개 설정:
    • allUsers에게 READER 권한 부여

결과: Public URL 을 통해 접근 가능


4. Load Balancer에 백엔드 버킷 추가 후 dev 환경에 적용

목적: Cloud Armor에서 403 응답이 발생하면, Cloud Storage의 403 페이지로 리디렉트

1) 백엔드 버킷 추가

  1. GCP 콘솔 → Load Balancing 이동
  2. "백엔드 구성" 탭 클릭
  3. "새 백엔드 버킷 생성"
    • 이름: dev-error-page-bucket-backend
    • Cloud Storage 버킷 선택: dev-error-page-bucket
    • Cloud CDN 여부 설정 (선택)
  4. 저장 및 배포

결과: Load Balancer가 정적 페이지를 서빙할 수 있음

2) dev 환경에 403 경로 추가

  1. Load Balancer → 라우팅 규칙 편집
  2. 호스트 및 경로 규칙 추가:
    • 호스트: error-dev.example.com
    • 경로: /403.html
    • 백엔드: dev-error-page-bucket-backend
  3. 저장 및 배포

3) 정책에 403 커스텀 오류 페이지 적용

defaultCustomErrorResponsePolicy:
  errorResponseRules:
    - matchResponseCodes:
      - 403
      path: '/403.html'
  errorService: https://www.googleapis.com/compute/v1/projects/my-gcp-project/global/backendBuckets/dev-error-page-bucket-backend

결과: Cloud Armor가 차단한 요청은 /403.html 페이지로 자동 리디렉트됨


VM 방화벽과의 차이점

처음엔 단순히 VM 방화벽으로도 IP를 제한할 수 있지 않을까 생각했지만, 운영 VM에 직접 방화벽을 적용하면 배포 시 마다 규칙을 변경해야 하고, 커스텀 에러 페이지를 구성할 수 없다는 점이 문제였다.

Cloud Armor는 LB 앞단에서 트래픽을 차단하기 때문에 서비스 자체에 부담을 주지 않으며, UX를 고려한 안내 페이지 제공까지 가능하다. 여기에 DDoS 대응과 WAF 설정까지 고려할 수 있는 구조라, 확장성과 보안성을 모두 만족시킬 수 있는 선택이었다.

DDoS 방어 ✅ Google Edge Network에서 차단 ❌ VM까지 트래픽이 도달 후 차단
IP Spoofing 대응 ✅ 네트워크 계층에서 차단 ❌ VM 내부에서만 적용됨
SQL Injection / XSS 방어 ✅ WAF 기능 제공 ❌ 수동 설정 필요
L7 공격 방어 ✅ 웹 애플리케이션 공격 차단 가능 ❌ L4 레벨에서만 차단

마무리

이번 구성은 단순한 접근 제한을 넘어서, 사용자에게 명확한 안내 메시지를 제공하고 내부망 IP만 접근할 수 있도록 구성하는 실전형 아키텍처이다.

Cloud Armor를 통해 IP 기반 접근 제어를 구현하고, 커스텀 에러 페이지로 사용자 경험까지 챙기는 설정이 필요한 상황이라면, 이 글이 충분히 도움이 될 것이다.

저작자표시 (새창열림)

'Cloud' 카테고리의 다른 글

Teams 휴가 시스템 구축 - Microsoft 365 (Automate 자동화, Power Apps 연동)  (1) 2025.07.10
[GCP] Bastion Host VM 서버 구축 (Proxy, OS Login)  (0) 2025.04.27
Certbot 으로 Let’s encrypted 무료 https SSL 적용 - AWS Node.js  (1) 2024.08.03
'Cloud' 카테고리의 다른 글
  • Teams 휴가 시스템 구축 - Microsoft 365 (Automate 자동화, Power Apps 연동)
  • [GCP] Bastion Host VM 서버 구축 (Proxy, OS Login)
  • Certbot 으로 Let’s encrypted 무료 https SSL 적용 - AWS Node.js
coder_
coder_
어차피 할거 즐기자
  • coder_
    Good coder
    coder_
  • 전체
    오늘
    어제
    • 분류 전체보기 (41)
      • 인공지능 [AI] (3)
      • 모의해킹 (3)
      • Git (2)
      • Cloud (4)
      • 컴퓨터 과학 [CS] (3)
      • 데이터베이스 [DB] (2)
      • Nojde.js (4)
      • Javascript (3)
      • Django (4)
      • Code up (11)
        • 코드업 기초 100제 (9)
        • 단순 반복문 (2)
      • 백준 baek_joon (1)
        • 단계별 문제풀이 (1)
      • Web Scraping (1)
  • 블로그 메뉴

    • 글쓰기
    • 관리
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Bastion host
    코드업
    파이썬
    기초100제
    기초 100제
    llama3.1
    php
    MariaDB
    code up
    node.js
    ubuntu 24.04
    GCP
    hugging face
    Python
    Coding Test
    nodejs
    Linux
    ubuntu
    모의해킹
    Lightsail
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
coder_
[GCP] Google Cloud Armor 적용 (feat. Custom Error page - Cloud Storage)
상단으로

티스토리툴바