Google Cloud Armor를 다른 Google 제품과 통합

다음 섹션에서는 Google Cloud Armor가 다른 Google Cloud 기능 및 제품과 상호작용하는 방법을 설명합니다.

Google Cloud Armor 및 VPC 방화벽 규칙

Google Cloud Armor 보안 정책과 VPC 방화벽 규칙의 기능은 서로 다릅니다.

예를 들어 CIDR 범위 100.1.1.0/24 및 CIDR 범위 100.1.2.0/24의 트래픽만 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에 액세스하도록 허용하는 시나리오를 가정합니다. 목표는 트래픽이 백엔드 부하 분산 인스턴스에 직접 도달하지 못하게 하는 것입니다. 즉, 전역 외부 애플리케이션 부하 분산기 또는 연결된 보안 정책이 있는 기본 애플리케이션 부하 분산기를 통해 프록시되는 외부 트래픽만 인스턴스에 도달해야 합니다.

인그레스 방화벽과 함께 Google Cloud Armor 보안 정책을 사용하여 액세스 제한
인그레스 방화벽과 함께 Google Cloud Armor 보안 정책을 사용하여 액세스 제한(확대하려면 클릭)

앞선 이미지에서는 다음과 같이 Google Cloud 배포를 구성하여 보안 목표를 달성했습니다.

  1. 인스턴스 그룹을 us-west1 리전과 europe-west1 리전에 있게 하여 두 개 만듭니다.
  2. 백엔드 애플리케이션 인스턴스를 인스턴스 그룹의 VM에 배포합니다.
  3. 프리미엄 등급에서 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기를 만듭니다. 백엔드가 이전 단계에서 만든 인스턴스 그룹 두 개인 단순 URL 맵과 단일 백엔드 서비스를 구성합니다. 부하 분산기의 전달 규칙이 120.1.1.1 외부 IP 주소를 사용하는지 확인합니다.
  4. 100.1.1.0/24 및 100.1.2.0/24에서 들어오는 트래픽을 허용하고 그 외 모든 트래픽을 거부하는 Google Cloud Armor 보안 정책을 구성합니다.
  5. 이 정책을 부하 분산기의 백엔드 서비스에 연결합니다. 자세한 내용은 보안 정책 구성을 참조하세요. 보다 복잡한 URL 맵을 사용하는 외부 HTTP(S) 부하 분산기는 백엔드 서비스 여러 개를 참조할 수 있습니다. 필요에 따라 보안 정책을 백엔드 서비스 한 개 이상에 연결할 수 있습니다.
  6. 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기의 트래픽을 허용하도록 인그레스 허용 방화벽 규칙을 구성하세요. 자세한 내용은 방화벽 규칙을 참조하세요.

외부 애플리케이션 부하 분산기 및 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와 함께 IP 주소 차단 목록과 허용 목록 사용
IAP와 함께 IP 주소 차단 목록과 허용 목록 사용 (확대하려면 클릭)

IAP 및 관련 구성에 대한 자세한 내용은 IAP(Identity-Aware Proxy) 문서를 참조하십시오.

하이브리드 배포가 포함된 Google Cloud Armor

하이브리드 배포에서 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기는 Google Cloud 외부(예: 다른 클라우드 제공업체의 인프라)에서 실행되는 애플리케이션 또는 콘텐츠 소스에 액세스해야 합니다. Google Cloud Armor를 사용하여 이러한 배포를 보호할 수 있습니다.

다음 다이어그램에서 부하 분산기에는 백엔드 서비스 두 개가 있습니다. 한 서비스에는 인스턴스 그룹이 백엔드로 있습니다. 다른 백엔드 서비스에는 인터넷 NEG가 백엔드로 있으며 인터넷 NEG는 타사 제공업체의 데이터 센터에서 실행되는 애플리케이션과 연결됩니다.

하이브리드 배포에 사용되는 Google Cloud Armor
하이브리드 배포에 사용되는 Google Cloud Armor(확대하려면 클릭)

인터넷 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이 포함된 Google Cloud Armor 백엔드 보안 정책 사용
Cloud CDN이 포함된 Google Cloud Armor 백엔드 보안 정책 사용(확대하려면 클릭)

Cloud CDN에 대한 자세한 내용은 Cloud CDN 문서를 참조하세요.

Cloud Run, App Engine 또는 Cloud Functions를 사용하는 Google Cloud Armor

Google Cloud Armor 보안 정책을 Cloud Run, App Engine 또는 Cloud Functions 서비스를 가리키는 서버리스 NEG 백엔드와 함께 사용할 수 있습니다.

그러나 Google Cloud Armor를 서버리스 NEG, Cloud Run, Cloud Functions와 함께 사용하는 경우 서버리스 엔드포인트에 대한 모든 액세스가 Google Cloud Armor 보안 정책을 통해 필터링되도록 특수한 단계를 거쳐야 합니다.

서버리스 애플리케이션의 기본 URL이 있는 사용자는 부하 분산기를 우회하여 서비스 URL로 직접 이동할 수 있습니다. 그러면 Google Cloud Armor 보안 정책을 우회하게 됩니다. 또한 Google Cloud에서 Cloud Run 또는 Cloud Functions 서비스에 자동으로 할당하는 URL을 사용 중지할 수 없습니다. 이러한 애플리케이션을 보호하려면 App Engine 인그레스 제어 또는 Cloud Run 인그레스 제어를 사용하면 됩니다.

모든 수신 트래픽에 액세스 제어가 적용되도록 하려면 Cloud Functions 또는 Cloud Run을 구성할 때 internal-and-gclb를 사용하면 됩니다. 이렇게 하면 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에서 노출되는 외부 IP 주소로 전송되는 트래픽과 내부 트래픽만 허용됩니다. cloudfunctions.net 또는 Cloud Functions를 통해 설정된 다른 커스텀 도메인으로 전송된 트래픽은 차단됩니다. 이렇게 하면 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기를 통해 설정된 액세스 제어(예: Google Cloud Armor 보안 정책)를 사용자가 우회할 수 없습니다.

서버리스 NEG에 대한 자세한 내용은 서버리스 네트워크 엔드포인트 그룹 개요서버리스 NEG 설정을 참조하세요.

다음 단계