주의: 앞으로 몇 개월에 걸쳐 Google은 콘텐츠를 보다 손쉽게 찾고 나머지 Google Cloud 제품과 더 잘 연동되도록 App Engine 문서 사이트를 재구성할 예정입니다. 제공되는 콘텐츠는 동일하지만, 이제 탐색 기능이 나머지 클라우드 제품과 일치하게 됩니다.

App Engine 방화벽 이해

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

방화벽은 네트워크 트래픽의 허용 여부를 결정합니다. 방화벽은 수신 트래픽(인그레스), 발신 트래픽(이그레스) 또는 둘 다에 적용할 수 있습니다. App Engine의 경우 App Engine 방화벽은 앱 또는 서비스로 라우팅되는 수신 트래픽에만 적용됩니다.

개요

App Engine 방화벽은 다음을 포함한 앱에 대한 모든 유형의 요청을 확인합니다.

  • 앱의 appspot.com 주소 또는 커스텀 도메인으로 라우팅되는 일반 웹 트래픽
  • Cloud Load Balancing에서 수신되는 요청
  • Compute Engine 가상 머신(VM) 및 Cloud Tasks와 같은 내부 소스에서 발생한 트래픽

앱이 다른 네트워킹 서비스 또는 제품을 사용하도록 구성된 경우 App Engine 방화벽과 다른 제품의 방화벽 또는 보안 설정에서 수신되는 트래픽을 제어할 규칙을 만들어야 할 수 있습니다. 이 가이드에서는 App Engine 방화벽의 일반적인 동작과 특수한 사용 사례에 대해 자세히 설명합니다.

App Engine 방화벽 규칙

Google Cloud Console, Google Cloud CLI 또는 Admin API로 지정된 IP 범위를 허용하거나 차단하는 규칙을 설정하여 App Engine 방화벽 규칙을 구성할 수 있습니다.

기본적으로는 규칙과 일치하지 않는 모든 요청이 앱에 액세스할 수 있습니다. 특정 규칙과 일치하지 않는 요청을 모두 차단해야 하는 경우(기본적으로 허용되는 내부 서비스의 요청은 제외) default 규칙의 작업을 deny로 변경합니다.

특정한 경우 App Engine 가변형 환경에서 VPC(Virtual Private Cloud) 수준으로 방화벽 규칙을 자동 구성할 수 있지만 VPC 방화벽이 App Engine 방화벽과 상호작용하지 않는다는 점에 유의하세요.

서비스의 수신 요청 허용

다음 표에는 일반적인 서비스에 대한 IP 범위와 App Engine 방화벽 동작이 나와 있습니다. 사용하는 IP 범위는 수신 요청이 App Engine 표준 환경 또는 가변형 환경에서 실행되는 버전으로 전달되는지에 따라 달라집니다.

서비스 App Engine 표준 환경으로 전송된 요청의 IP 범위 App Engine 가변형 환경으로 전송된 요청의 IP 범위
Cloud Storage 또는 Blobstore 0.1.0.30/32 해당 없음
Cloud Tasks에서 App Engine HTTP 및 App Engine 작업을 사용하는 Cloud Scheduler 작업(App Engine 태스크 큐 포함) 0.1.0.2/32, 거부로 설정된 경우 기본 방화벽 규칙 우회 0.1.0.2/32
App Engine 크론 0.1.0.1/32 또는 0.1.0.2/32, 거부로 설정된 경우 기본 방화벽 규칙 우회 0.1.0.1/32 또는 0.1.0.2/32
URL 가져오기 0.1.0.40/32 0.1.0.40/32
비공개 Google 액세스가 사용 설정된 Compute Engine 인스턴스 0.0.0.0/32 0.0.0.0/32

사용 사례에 따라 App Engine 방화벽 규칙을 구성할 때 다음과 같은 추가 안내가 적용될 수 있습니다.

  • App Engine 표준 또는 가변형 환경으로 전송되는 새로 생성되거나 업데이트된 App Engine 크론 작업의 요청은 0.1.0.2에서 가져옵니다. 이전 gcloud 버전(326.0.0 이전)에서 생성된 크론 작업의 경우 0.1.0.1에서 크론 요청이 발생합니다. App Engine Cron Service의 요청을 식별하는 방법에 대한 자세한 내용은 크론 요청 유효성 검사를 참조하세요.
  • 앱이 Cloud Load Balancing과 상호작용하거나 VPC 네트워크에 연결되어 있는 경우, 아래의 다른 제품 또는 서비스와 상호작용 섹션을 참조하세요.

App Engine 표준 예시

표준 환경에서 실행되는 앱에는 frontend_servicebackend_service의 두 가지 서비스가 있습니다. frontend_service는 Cloud Tasks를 App Engine HTTP와 함께 사용하여 backend_service에 메시지를 보냅니다. default 방화벽 규칙은 deny로 구성된 경우에도 Cloud Tasks 요청을 허용하므로 Cloud Tasks에 대한 방화벽 규칙을 만들 필요가 없습니다.

하지만 앱에 대한 액세스를 제한하고 Cloud Tasks 요청을 명시적으로 차단하려면 IP 범위 0.1.0.2/32에 대한 deny 방화벽 규칙을 만드세요.

App Engine 가변형 예시

가변형 환경에서 실행되는 앱에는 frontend_servicebackend_service의 두 가지 서비스가 있으며 기본적으로 트래픽을 거부하도록 구성된 방화벽이 있습니다. frontend_service는 Cloud Tasks를 App Engine HTTP와 함께 사용하여 backend_service에 메시지를 보냅니다. default 방화벽 규칙은 Cloud Tasks 요청을 거부하므로 0.1.0.2/32에 대한 allow 방화벽 규칙을 만들어야 합니다.

다른 제품 또는 서비스와 상호작용

Cloud Load Balancing

Cloud Load Balancing 및 서버리스 NEG를 사용하는 경우 다음 사항에 유의하세요.

  • 부하 분산기는 App Engine 방화벽 규칙을 간섭하거나 상호작용하지 않습니다. App Engine 규칙은 서버리스 NEG가 트래픽을 App Engine으로 전송할 때까지 평가되지 않습니다.
  • 앱이 부하 분산기(및 사용하는 경우 VPC)에서 전송되는 요청만 수신하도록 인그레스 제어를 사용하는 것이 좋습니다. 그렇지 않으면 사용자가 앱의 App Engine URL을 사용하여 부하 분산기를 통해 전달되는 부하 분산기, Google Cloud Armor 보안 정책, SSL 인증서, 비공개 키를 우회할 수 있습니다.

  • 인그레스 제어internal-and-cloud-load-balancing 트래픽을 수신하도록 설정된 경우 기본 App Engine 방화벽 규칙은 그대로 두고(allow) Google Cloud Armor 웹 애플리케이션 방화벽(WAF) 규칙을 사용합니다.

VPC 방화벽

App Engine 방화벽은 VPC 기반 방화벽과 별도로 구성 및 적용됩니다. VPC 방화벽 규칙은 Compute Engine 가상 머신과 같이 VPC 네트워크에서 실행되는 리소스에 적용되는 반면 App Engine 방화벽 규칙은 앱 또는 서비스에 대한 수신 요청에 적용됩니다.

네트워크 환경에 구성된 VPC 기반 방화벽 규칙(예: VPC 방화벽 규칙 또는 계층적 방화벽 정책)이 있는 경우 VPC 수준 방화벽과 App Engine 방화벽 모두 App Engine 앱이 요청을 수신할 수 있도록 수신 요청의 IP 범위를 허용해야 합니다.

VPC 수준의 방화벽의 경우 계층적 방화벽 정책은 VPC 방화벽 규칙보다 먼저 평가되고 VPC 방화벽 평가 중에 순서를 따릅니다. VPC 수준 방화벽과 App Engine 방화벽에서 모두 허용하는 요청은 App Engine 앱 또는 서비스에서 수신합니다. VPC 방화벽이 App Engine 방화벽에서 허용하는 동일한 IP 범위의 요청을 거부하면 App Engine 앱에는 액세스할 수 없습니다.

공유 VPC

App Engine 가변형 환경은 앱이 공유 VPC를 통해 VPC 네트워크를 사용하도록 구성되었는지 여부에 따라 방화벽을 만들 수 있습니다.

App Engine 가변형 앱이 공유 VPC를 사용하는 경우 App Engine 가변형 환경은 방화벽 규칙을 자동으로 만들지 않습니다. VPC 네트워크에서 액세스를 제어하고 트래픽을 허용해야 하는 경우에는 공유 VPC 네트워크에서 방화벽 규칙을 만들 수 있습니다.

또한 트래픽 소스의 요청을 허용하려면 VPC 방화벽 App Engine 방화벽에서 동일한 IP 범위를 허용해야 합니다. IP 범위를 두 곳(VPC 방화벽과 App Engine 방화벽)에 모두 지정하지 않으면 해당 IP 범위에서 App Engine 앱 또는 서비스에 액세스할 수 없습니다.

App Engine 가변형 환경 앱이 공유 VPC를 사용하도록 구성되지 않은 경우 App Engine 가변형 환경은 앱이 분할 상태 확인(기본값) 또는 기존 상태 확인을 사용하는지에 따라 최대 두 개의 숨겨진 VPC 방화벽 규칙을 만듭니다. 이렇게 숨겨진 방화벽 규칙은 가변형 환경에 대한 트래픽 및 상태 확인 트래픽을 허용합니다.

  • 네트워크 이름: app.yaml에 지정된 네트워크 또는 구성된 네트워크가 없는 경우 기본 네트워크입니다.
  • 대상 태그: app.yaml 파일에 지정된 instance_tags입니다. 기본적으로 대상 태그를 제공하지 않으면 App Engine 가변형은 특정 가변형 버전의 인스턴스에만 영향을 주는 고유한 태그를 생성하며 방화벽 규칙은 이 태그를 타겟팅합니다.
  • 트래픽 방향: 인그레스
  • 일치 시 작업: 허용
  • 소스 IP 범위: 35.191.0.0/16130.211.0.0/22
  • 프로토콜 및 포트:
    • tcp: 8443(기존 상태 확인용) 또는 10402(분할 상태 확인용)
  • 우선순위: 1000

캐시된 콘텐츠에 대한 액세스 방지

App Engine 방화벽은 웹 프록시, 브라우저와 같이 콘텐츠를 캐시하는 메커니즘의 뒤에 위치해 있습니다. 캐시된 콘텐츠는 만료될 때까지 특정 URL에서 공개적으로 제공되며, 새 방화벽 규칙을 만든 후에도 액세스 가능합니다.

Cache-ControlExpires HTTP 응답 헤더를 사용하면 콘텐츠가 캐시 처리되지 않습니다. 캐싱을 제어하는 방법을 비롯해 이러한 HTTP 헤더에 대한 자세한 내용은 캐싱 방지를 참조하세요.

다음 단계

방화벽 만들기의 안내에 따라 App Engine 방화벽 규칙을 구성하는 방법을 알아보세요.