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

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

아키텍처 구성요소

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

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

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

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

사용 제품

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

설계 고려사항

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

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

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

보안 기준 설정

또한 보안을 강화하기 위해 이 문서에 설명된 아키텍처는 Enterprise 기초 청사진과 호환됩니다. 청사진은 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 요청은 애플리케이션 부하 분산기에서 부하 분산을 위해 전송되기 전에 Google Cloud Armor에서 평가됩니다. Google Cloud Armor가 요청을 차단하면 IAP에서 요청을 평가하지 않습니다. Google Cloud Armor가 요청을 허용하면 이후 IAP에서 요청을 평가합니다. IAP가 요청을 인증하지 않으면 요청이 차단됩니다. 자세한 내용은 다른 Google 제품과 Google Cloud Armor 통합을 참조하세요.

비용 최적화

일반 가이드라인에 따라 Cloud CDN을 Google Cloud Armor와 함께 사용하면 데이터 전송 요금의 영향을 최소화할 수 있습니다.

Cloud CDN

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

Google Cloud Armor

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

최종 비용은 보호하려는 서비스 또는 애플리케이션 수, 보유한 Google 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 제품의 권장사항에 대해 자세히 알아보세요.

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

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

참여자

저자:

기타 참여자: