Google Cloud Armor, 부하 분산, Cloud CDN을 사용하여 프로그래밍 가능한 전역 프런트엔드 배포

Last reviewed 2025-04-02 UTC

이 문서에서는 Google Cloud에서 호스팅되는 웹 애플리케이션의 참조 아키텍처를 제공합니다. 이 아키텍처는 인터넷 연결 애플리케이션을 확장하고 보호하며 전송을 가속화하는 데 도움이 되는 Google Cloud 권장사항을 통합한 글로벌 프런트엔드를 사용합니다. 아키텍처에는 Cloud Build에 대한 지원과 Jenkins 및 GitLab과 같은 서드 파티 지속적 통합 (CI) 및 지속적 배포 (CD) 도구가 포함되어 있습니다. 이 아키텍처는 부하 분산기로 애플리케이션을 확장하고, DDoS 및 웹 기반 공격으로부터 웹 애플리케이션 방화벽(WAF)으로 애플리케이션을 보호하려는 개발자와 앱 소유자를 대상으로 합니다.

아키텍처

다음은 이 문서에서 설명하는 아키텍처를 보여주는 다이어그램입니다.

웹 애플리케이션 아키텍처

이 아키텍처에서 애플리케이션은 여러 리전의 여러 백엔드 인스턴스로 HTTP 및 HTTPS 트래픽을 분산하는 전역 외부 애플리케이션 부하 분산기로 부하가 분산됩니다. Cloud CDN은 Google의 에지 접속 지점 (PoP)을 사용하여 인터넷 연결 애플리케이션을 가속화하고 전역 외부 애플리케이션 부하 분산기와 연동하여 사용자에게 콘텐츠를 제공합니다. 백엔드는 일반적인 웹 공격 또는 기타 레이어 7 속성에 대한 수신 요청을 스크러빙하여 레이어 7 필터링을 제공하는 Google Cloud Armor 보안 정책으로 보호되므로 부하 분산된 백엔드 서비스에 도달하기 이전에 트래픽을 차단하는 데 도움이 됩니다. 볼륨 DDoS 공격에 대한 보호는 기본적으로 사용 설정되어 있습니다.

사용자가 서비스에서 콘텐츠를 요청하면 해당 요청은 Cross-Cloud 네트워크에 의해 제공되는, 인터넷 연결 애플리케이션을 위한 전역 프런트엔드로 전송됩니다. 요청은 Cloud Armor 에지 보안 정책부터 시작하여 Cloud Armor 보안 정책에 의해 평가됩니다. 요청이 허용되고 Cloud CDN에서 처리할 수 있는 경우 콘텐츠가 Cloud Armor 캐시에서 검색되어 사용자에게 다시 전송됩니다. 요청으로 인해 캐시 부적중이 발생하면 백엔드 정책에 따라 평가된 후 정책의 규칙에 따라 백엔드 서버에서 거부되거나 처리됩니다.

아키텍처 구성요소

앞선 다이어그램에서는 다음 구성요소가 포함됩니다.

  • 전역 외부 애플리케이션 부하 분산기: 이 애플리케이션 부하 분산기는 서비스를 실행하고 확장할 수 있게 해주는 프록시 기반 레이어 7 부하 분산기입니다. 애플리케이션 부하 분산기는 다양한 Google Cloud 플랫폼에서 호스팅되는 백엔드에 HTTP 및 HTTPS 트래픽을 배포합니다. 애플리케이션 부하 분산기에는 다음과 같은 기능이 있습니다.

    • 구성 가능한 백엔드: 이 아키텍처는 서로 다른 리전에서 두 개의 관리형 인스턴스 그룹(MIG)을 사용하지만, 전역 외부 애플리케이션 부하 분산기가 지원하는 어떤 백엔드라도 구성할 수 있습니다. GKE, Cloud Run, Cloud Run Functions, App Engine 애플리케이션은 물론 온프레미스 및 다른 클라우드에서 호스팅되는 애플리케이션에도 동일한 부하 분산기를 사용할 수 있습니다. 자세한 내용은 애플리케이션 부하 분산기 개요를 참고하세요.
    • 트래픽 분할: 애플리케이션 부하 분산기를 사용하여 트래픽을 관리할 수 있습니다. 여기에는 서로 다른 사용자를 서로 다른 백엔드 서버로 전송하여 소프트웨어 버전을 관리하는 작업이 포함됩니다. 이 문서에 설명된 아키텍처에서는 60/40의 간단한 트래픽 분할이 있습니다. 하지만 이 분할을 변경하여 더 복잡한 트래픽 관리 체계를 만들 수 있습니다. 추가 구성 옵션에 대해 알아보려면 구성 가능한 시간 제한 및 재시도를 참고하고 원하는 균형 모드를 결정하세요.
  • Cloud CDN: Cloud CDN 플랫폼이 캐시 역할을 합니다. QUIC 및 HTTP/2뿐 아니라 라우팅 및 캐싱 컨트롤을 비롯한 Cloud CDN 기능의 전체 제품군을 제공하기 위해 원본 서버와 함께 배포됩니다. 이 접근 방식을 사용하면 성능을 저하하지 않고 애플리케이션을 전역적으로 확장할 수 있으며 대역폭과 프런트엔드 컴퓨팅 비용도 절감할 수 있습니다. 글로벌 프런트엔드에서 사용하는 기본 구성은 Cloud CDN 콘텐츠 전송 권장사항웹 보안 권장사항을 기반으로 합니다.

  • Cloud Armor: 이 구성요소에는 DDoS 보호 및 WAF 규칙이 포함됩니다. 아키텍처에는 일반적인 위협 벡터를 완화하는 데 도움이 되는 다음과 같은 기본 Cloud Armor 구성이 있습니다.

사용 제품

이 참조 아키텍처에는 다음과 같은 Google Cloud 제품이 사용됩니다.

설계 고려사항

이 섹션에서는 이 문서를 보안, 안정성, 운영 효율성, 비용, 성능에 대한 특정 요구사항을 충족하는 아키텍처를 개발하기 위한 시작점으로 사용하는 데 도움이 되는 안내를 제공합니다.

보안, 개인정보 보호, 규정 준수

이 섹션에서는 이 참조 아키텍처를 사용하여 웹 애플리케이션을 배포할 때 고려해야 하는 추가 요소를 설명합니다.

보안 기준 설정

보안을 더욱 강화하기 위해 이 문서에 설명된 아키텍처는 엔터프라이즈 기반 청사진과도 호환됩니다. 청사진은Google Cloud 를 사용하는 조직이 Identity and Access Management (IAM), Cloud Key Management Service, Security Command Center 등 모든 향후 워크로드를 위한 보안 기준을 설정하는 데 도움이 됩니다.

Cloud CDN으로 사용자 데이터 보호

이 아키텍처에서는 사용자별 콘텐츠를 캐시하지 않는 것이 좋습니다. HTML(text/html) 및 JSON(application/json) 콘텐츠 유형 캐싱의 경우 Cloud CDN 응답에서 명시적 cache-control 헤더를 설정합니다. 한 사용자의 데이터를 캐시하여 모든 사용자에게 제공하지 않도록 합니다.

IAP로 애플리케이션에 대한 액세스 제어

이 아키텍처는 IAP(Identity-Aware Proxy)와도 호환됩니다. IAP는 사용자의 ID를 확인한 후 사용자의 애플리케이션에 대한 액세스를 허용할지 여부를 결정합니다. 전역 외부 모드와 기본 모드 모두의 애플리케이션 부하 분산기에 IAP를 사용 설정하려면 부하 분산기의 백엔드 서비스에서 사용 설정합니다. 인바운드 HTTP/HTTPS 요청은 Application Load Balancer에 의해 부하 분산을 위해 전송되기 전에 Cloud Armor에 의해 평가됩니다. Cloud Armor가 요청을 차단하면 IAP에서 요청을 평가하지 않습니다. Cloud Armor가 요청을 허용하면 이후 IAP에서 요청을 평가합니다. IAP에서 요청을 인증하지 않으면 요청이 차단됩니다. 자세한 내용은 Cloud Armor를 다른 Google 제품과 통합을 참고하세요.

비용 최적화

일반적으로 Cloud Armor와 함께 Cloud CDN을 사용하면 데이터 전송 아웃 요금의 영향을 최소화할 수 있습니다.

Cloud CDN

캐시에서 클라이언트에 제공되는 정적 객체는 부하 분산기를 통해 전송되지 않습니다. 효과적인 캐싱 전략을 사용하면 부하 분산기로 처리되는 아웃바운드 데이터의 양을 줄이고 비용을 절감할 수 있습니다.

Google Cloud Armor

Cloud Armor를 사용하면 원치 않는 트래픽에 대해 계정에 요금이 청구되지 않으므로 비용을 절감할 수 있습니다. Cloud Armor에 의해 차단된 요청은 앱에서 응답을 생성하지 않으므로 부하 분산기로 처리되는 아웃바운드 데이터의 양이 효과적으로 감소합니다. 비용에 미치는 영향은 구현한 Cloud Armor 보안 정책으로 차단된 원치 않는 트래픽의 비율에 따라 다릅니다.

보호하려는 서비스 또는 애플리케이션 수, 보유한 Cloud Armor 정책 및 규칙 수, 캐시 채우기 및 이그레스, 데이터 볼륨에 따라 최종 비용도 달라질 수 있습니다. 자세한 내용은 다음을 참조하세요.

배포

이 참조 아키텍처를 배포하려면 Terraform 예시를 사용하세요. 자세한 내용은 README 파일을 참고하세요. web_app_protection_example 폴더에는 (main.tf) 파일이 포함되어 있습니다. 이 파일의 코드는 이 문서에 설명된 아키텍처를 만들고 자동 배포를 위한 추가 지원을 제공합니다.

Terraform 폴더의 폴더 구조는 다음과 같습니다.

  • 소스 코드 저장소: 웹 애플리케이션 보호 예시웹 애플리케이션 및 API 보호(WAAP) 저장소의 일부입니다.
  • CD 및 CI: 빌드 폴더에는 Jenkins, GitLab, Cloud Build에 대한 다음 설명 파일이 포함되어 있습니다.
    • Jenkins: 이 저장소에는 파이프라인이 실행하는 규칙이 포함된 Jenkins 파일이 포함되어 있습니다.
    • GitLab: 이 저장소에는 GitLab 파이프라인이 실행하는 규칙이 포함된 .gitlab-ci YAML 파일이 포함되어 있습니다.
    • Cloud Build: 이 저장소에는 브랜치 이름 기반 규칙이 포함된 Cloud Build 파일이 포함되어 있습니다.
  • 저장소에는 멀티 환경(프로덕션 및 개발) 배포를 위한 옵션이 포함되어 있습니다. 자세한 내용은 README 파일을 참고하세요.

파이프라인의 기반이 되는 브랜치에 변경사항을 커밋하면 이러한 변경사항으로 인해 파이프라인 실행이 트리거되고 변경사항이 완료되면 새 출시 버전에 변경사항이 통합됩니다. 처음으로 툴킷을 가져오면 선택한 Google Cloud 프로젝트에 솔루션이 로드됩니다.

다음 단계

이 참조 아키텍처에 사용되는 Google Cloud 제품의 권장사항에 대해 자세히 알아보세요.

  • 웹 보안 권장사항
  • 외부 애플리케이션 부하 분산기 성능 권장사항
  • 콘텐츠 전송 권장사항
  • Cloud Armor WAF 규칙 조정 권장사항
  • Cloud Armor Enterprise: 이 아키텍처의 Cloud Armor 기능은 Cloud Armor Standard 등급에서 사용할 수 있습니다. 프로젝트를 Cloud Armor Enterprise에 등록하면 다음과 같은 추가 기능을 사용할 수 있습니다.

    • 위협 인텔리전스: 여러 카테고리의 위협 인텔리전스 데이터를 기반으로 외부 애플리케이션 부하 분산기에 대한 트래픽을 허용하거나 차단할 수 있습니다.
    • Adaptive Protection: HTTP 플러드와 같은 레이어 7 DDoS 공격 및 기타 빈도가 높은 레이더 7 (애플리케이션 수준)의 악의적인 활동으로부터 Google Cloud 애플리케이션, 웹사이트, 서비스를 보호하는 데 도움이 됩니다. Adaptive Protection은 비정상적인 활동을 감지하고 알림을 보내며, 잠재적인 공격을 설명하는 서명을 생성하고, 서명을 차단하는 맞춤 Cloud Armor WAF 규칙을 생성하는 머신러닝 모델을 빌드합니다.
    • DDoS 공격 가시성: 측정항목을 통해 가시성을 제공하고 레이어 3 레이어 4 볼륨 공격 시도와 같은 이벤트를 로깅합니다.
    • DDoS 대응 지원 및 DDoS 청구 보호와 같은 추가 서비스 자세한 내용은 Cloud Armor Enterprise 개요를 참고하세요.
  • 그 밖의 참조 아키텍처, 다이어그램, 튜토리얼, 권장사항을 알아보려면 클라우드 아키텍처 센터를 확인하세요.

참여자

저자:

기타 참여자: