다음 섹션에서는 Google Cloud Armor가 다른 Google Cloud 기능 및 제품과 상호작용하는 방법을 설명합니다.
Google Cloud Armor 및 VPC 방화벽 규칙
Google Cloud Armor 보안 정책과 VPC 방화벽 규칙의 기능은 서로 다릅니다.
- Google Cloud Armor 보안 정책은 에지 보안을 제공하고 Google 프런트엔드(GFE)에 대한 클라이언트 트래픽에서 작동합니다.
- VPC 방화벽 규칙은 백엔드의 트래픽을 허용하거나 거부합니다. 대상이 부하 분산된 백엔드 VM이고 소스가 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에서 사용하는 IP 범위인 인그레스 허용 방화벽 규칙을 만들어야 합니다. 이러한 규칙을 통해 GFE와 상태 점검 시스템이 백엔드 VM과 통신할 수 있습니다.
예를 들어 CIDR 범위 100.1.1.0/24 및 CIDR 범위 100.1.2.0/24의 트래픽만 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에 액세스하도록 허용하는 시나리오를 가정합니다. 목표는 트래픽이 백엔드 부하 분산 인스턴스에 직접 도달하지 못하게 하는 것입니다. 즉, 관련 보안 정책이 있는 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기를 통해 프록시된 외부 트래픽만 인스턴스에 도달해야 합니다.
앞선 이미지에서는 다음과 같이 Google Cloud 배포를 구성하여 보안 목표를 달성했습니다.
- 인스턴스 그룹을
us-west1
리전과europe-west1
리전에 있게 하여 두 개 만듭니다. - 백엔드 애플리케이션 인스턴스를 인스턴스 그룹의 VM에 배포합니다.
- 프리미엄 등급에서 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기를 만듭니다. 백엔드가 이전 단계에서 만든 인스턴스 그룹 두 개인 단순 URL 맵과 단일 백엔드 서비스를 구성합니다. 부하 분산기의 전달 규칙이
120.1.1.1
외부 IP 주소를 사용하는지 확인합니다. - 100.1.1.0/24 및 100.1.2.0/24에서 들어오는 트래픽을 허용하고 그 외 모든 트래픽을 거부하는 Google Cloud Armor 보안 정책을 구성합니다.
- 이 정책을 부하 분산기의 백엔드 서비스에 연결합니다. 자세한 내용은 보안 정책 구성을 참조하세요. 보다 복잡한 URL 맵을 사용하는 외부 HTTP(S) 부하 분산기는 백엔드 서비스 여러 개를 참조할 수 있습니다. 필요에 따라 보안 정책을 백엔드 서비스 한 개 이상에 연결할 수 있습니다.
- 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기의 트래픽을 허용하도록 인그레스 허용 방화벽 규칙을 구성하세요. 자세한 내용은 방화벽 규칙을 참조하세요.
외부 애플리케이션 부하 분산기 및 IAP가 포함된 Google Cloud Armor
IAP(Identity-Aware Proxy)는 사용자 ID를 확인한 후 이 사용자가 애플리케이션에 액세스하도록 허용할지 여부를 결정합니다. 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에 대해 IAP를 사용 설정하려면 부하 분산기의 백엔드 서비스에서 사용 설정합니다. 마찬가지로 에지 Google Cloud Armor 보안 정책은 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기의 백엔드 서비스에 연결됩니다.
백엔드 서비스에 Google Cloud Armor 보안 정책과 IAP를 모두 사용 설정한 경우 평가 순서는 부하 분산기 유형에 따라 다릅니다.
전역 외부 애플리케이션 부하 분산기의 백엔드 서비스의 경우 Google Cloud Armor 평가가 먼저 수행됩니다. Google Cloud Armor가 요청을 차단하면 IAP에서 요청을 평가하지 않습니다. Google Cloud Armor가 요청을 허용하면 이후 IAP에서 요청을 평가합니다. IAP에서 요청을 인증하지 않으면 요청이 차단됩니다.
기본 애플리케이션 부하 분산기의 백엔드 서비스의 경우 IAP 평가가 먼저 수행됩니다. IAP에서 요청을 인증하면 Google Cloud Armor에서 요청을 평가합니다. 요청이 IAP 인증에 실패하면 Google Cloud Armor에서 요청을 평가하지 않습니다.
IAP 및 관련 구성에 대한 자세한 내용은 IAP(Identity-Aware Proxy) 문서를 참조하십시오.
하이브리드 배포가 포함된 Google Cloud Armor
하이브리드 배포에서 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기는 Google Cloud 외부(예: 다른 클라우드 제공업체의 인프라)에서 실행되는 애플리케이션 또는 콘텐츠 소스에 액세스해야 합니다. Google Cloud Armor를 사용하여 이러한 배포를 보호할 수 있습니다.
다음 다이어그램에서 부하 분산기에는 백엔드 서비스 두 개가 있습니다. 한 서비스에는 인스턴스 그룹이 백엔드로 있습니다. 다른 백엔드 서비스에는 인터넷 NEG가 백엔드로 있으며 인터넷 NEG는 타사 제공업체의 데이터 센터에서 실행되는 애플리케이션과 연결됩니다.
인터넷 NEG를 백엔드로 사용하는 백엔드 서비스에 Google Cloud Armor 보안 정책을 연결하면 Google Cloud Armor는 해당 백엔드 서비스를 대상으로 하는 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션에 도착하는 모든 L7 요청을 검사합니다.
하이브리드 배포에 사용되는 Google Cloud Armor 보호 조치에는 인터넷 NEG에 적용되는 제한사항과 동일한 제한사항이 적용됩니다.
Google Kubernetes Engine(GKE) 인그레스를 사용하는 Google Cloud Armor
Google Cloud Armor 보안 정책을 구성한 후에 Kubernetes 인그레스를 사용하여 GKE에 사용 설정할 수 있습니다.
BackendConfig
에 보안 정책 이름을 추가하여 BackendConfig
리소스로 보안 정책을 참조할 수 있습니다. 다음 BackendConfig
매니페스트는 example-security-policy
라는 보안 정책을 지정합니다.
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
namespace: cloud-armor-how-to
name: my-backendconfig
spec:
securityPolicy:
name: "example-security-policy"
인그레스 기능에 대한 자세한 내용은 인그레스 기능 구성을 참조하세요.
Cloud CDN이 포함된 Google Cloud Armor
CDN 원본 서버를 보호하려면 Cloud CDN과 함께 Google Cloud Armor를 사용하면 됩니다. Google Cloud Armor는 애플리케이션 공격으로부터 CDN 원본 서버를 보호하고 OWASP 상위 10개 위험을 완화하고 레이어 7 필터링 정책을 적용합니다. Google Cloud Armor가 Cloud CDN에서 작동하는 방식에 영향을 주는 보안 정책에는 에지 보안 정책과 백엔드 보안 정책의 두 가지 유형이 있습니다.
에지 보안 정책
Cloud CDN이 사용 설정된 백엔드 서비스 및 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기 뒤에 있는 Cloud Storage 백엔드 버킷에 에지 보안 정책을 사용할 수 있습니다. 에지 보안 정책을 사용하여 콘텐츠가 캐시에서 제공되기 전에 요청을 필터링합니다.
백엔드 보안 정책
Cloud CDN이 사용 설정된 백엔드 서비스에 Google Cloud Armor 백엔드 보안 정책이 적용되면 백엔드 서비스로 라우팅된 요청에만 적용됩니다. 이러한 요청에는 동적 콘텐츠 요청과 캐시 부적중, 즉 Cloud CDN 캐시를 누락하거나 우회하는 요청이 포함됩니다.
에지 보안 정책과 백엔드 보안 정책이 동일한 백엔드 서비스에 연결된 경우 에지 보안 정책을 통과한 캐시 부적중 요청에 대해서만 백엔드 보안 정책이 적용됩니다.
다음 다이어그램은 에지 보안 정책에서 요청이 허용된 후 백엔드 보안 정책이 Cloud CDN 원본에서 작동하는 방식만 보여줍니다.
Cloud CDN에 대한 자세한 내용은 Cloud CDN 문서를 참조하세요.
Cloud Run, App Engine 또는 Cloud Run 함수를 사용하는 Google Cloud Armor
Google Cloud Armor 보안 정책을 Cloud Run, App Engine 또는 Cloud Run 함수 서비스를 가리키는 서버리스 NEG 백엔드와 함께 사용할 수 있습니다.
그러나 Google Cloud Armor를 서버리스 NEG, Cloud Run 또는 Cloud Run 함수와 함께 사용하는 경우 서버리스 엔드포인트에 대한 모든 액세스가 Google Cloud Armor 보안 정책을 통해 필터링되도록 특수한 단계를 거쳐야 합니다.
서버리스 애플리케이션의 기본 URL이 있는 사용자는 부하 분산기를 우회하여 서비스 URL로 직접 이동할 수 있습니다. 그러면 Google Cloud Armor 보안 정책을 우회하게 됩니다. 이 문제를 해결하려면 Google Cloud에서 Cloud Run 서비스나 Cloud Run 함수(2세대)에 자동으로 할당하는 기본 URL을 중지합니다. App Engine 애플리케이션을 보호하려면 인그레스 컨트롤을 사용하면 됩니다.
인그레스 컨트롤을 사용하여 액세스 제어가 모든 수신 트래픽에 적용되는지 확인하려면 Cloud Run 함수 또는 Cloud Run을 구성할 때 internal-and-gclb
를 사용하면 됩니다. 이렇게 하면 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에서 노출되는 외부 IP 주소로 전송되는 트래픽과 내부 트래픽만 허용됩니다. 비공개 네트워크 외부에서 이러한 기본 URL로 전송되는 트래픽이 차단됩니다. 이렇게 하면 사용자가 전역 외부 애플리케이션 부하 분산기나 기본 애플리케이션 부하 분산기를 통해 설정된 액세스 제어(예: Google Cloud Armor 보안 정책)를 우회할 수 없습니다.
서버리스 NEG에 대한 자세한 내용은 서버리스 네트워크 엔드포인트 그룹 개요 및 서버리스 NEG 설정을 참조하세요.