보안 정책 개요

이 페이지에서는 Google Cloud Armor 보안 정책을 사용하여 Google Cloud 배포를 보호하는 방법을 설명합니다.

Google Cloud Armor 보안 정책은 레이어 7 필터링을 제공하고 일반적인 웹 공격 또는 기타 레이어 7 속성에 대한 수신 요청을 스크러빙하여 부하 분산 백엔드 서비스 또는 백엔드 버킷에 도달하기 전에 트래픽을 차단합니다. 각 보안 정책은 수신 요청의 IP 주소, IP 범위, 리전 코드, 요청 헤더와 같은 조건에 따라 트래픽을 필터링하는 규칙 집합으로 구성됩니다.

Google Cloud Armor 보안 정책은 다음 부하 분산기 및 엔드포인트 유형에 사용할 수 있습니다.

  • 전역 외부 애플리케이션 부하 분산기(HTTP/HTTPS)
  • 기본 애플리케이션 부하 분산기(HTTP/HTTPS)
  • 리전 외부 애플리케이션 부하 분산기(HTTP/HTTPS)
  • 전역 외부 프록시 네트워크 부하 분산기(TCP/SSL)
  • 기본 프록시 네트워크 부하 분산기(TCP/SSL)
  • 외부 패스 스루 네트워크 부하 분산기(TCP/UDP)
  • 프로토콜 전달
  • 공개 IP 주소가 있는 VM

부하 분산기는 프리미엄 등급이나 표준 등급에 있을 수 있습니다.

백엔드 서비스의 백엔드는 다음 중 하나일 수 있습니다.

Google Cloud Armor를 사용하여 하이브리드 배포나 멀티 클라우드 아키텍처를 보호하는 경우 백엔드는 인터넷 NEG여야 합니다. 또한 Google Cloud Armor는 부하 분산기를 통해 트래픽이 라우팅될 때 서버리스 NEG를 보호합니다. 부하 분산기를 통해 라우팅된 트래픽만 서버리스 NEG에 도달하도록 하려면 인그레스 제어를 참조하세요.

Google Cloud Armor는 또한 외부 패스 스루 네트워크 부하 분산기, 프로토콜 전달, 공개 IP 주소가 있는 VM에 대해 고급 네트워크 DDoS 보호를 제공합니다. 고급 DDoS 보호에 대한 자세한 내용은 고급 네트워크 DDoS 보호 구성을 참조하세요.

Google Cloud Armor 보안 정책을 통한 Google Cloud 배포 보호

외부 부하 분산은 전 세계 Google 접속 지점(PoP)의 Google 네트워크 에지에서 구현됩니다. 프리미엄 등급에서 외부 부하 분산기로 전달되는 사용자 트래픽은 사용자와 가장 가까운 PoP로 유입됩니다. 그런 다음 부하는 Google의 전역 네트워크를 통해 사용 가능한 용량이 충분하게 있는 가장 가까운 백엔드로 분산됩니다. 표준 등급에서 사용자 트래픽은 Google Cloud 리소스를 배포한 리전의 피어링, ISP 또는 전환 네트워크를 통해 Google 네트워크에 유입됩니다.

Google Cloud Armor 보안 정책을 사용 설정하면 들어오는 트래픽의 소스와 최대한 가까운 Google Cloud 에지에서 백엔드 서비스에 대한 요청을 허용, 거부, 비율 제한 또는 리디렉션할 수 있습니다. 이를 통해 원치 않는 트래픽이 리소스를 소비하거나 Virtual Private Cloud(VPC) 네트워크에 유입되는 것을 방지할 수 있습니다.

다음은 전역 외부 애플리케이션 부하 분산기, 기본 애플리케이션 부하 분산기, Google 네트워크 및 Google 데이터 센터의 위치를 보여주는 다이어그램입니다.

네트워크 에지에서의 Google Cloud Armor 정책
네트워크 에지에서의 Google Cloud Armor 정책(확대하려면 클릭)

요구사항

Google Cloud Armor 보안 정책 사용에 대한 요구사항은 다음과 같습니다.

  • 부하 분산기는 전역 외부 애플리케이션 부하 분산기, 기본 애플리케이션 부하 분산기, 리전 외부 애플리케이션 부하 분산기, 전역 외부 프록시 네트워크 부하 분산기 또는 기본 프록시 네트워크 부하 분산기여야 합니다.
  • 백엔드 서비스의 부하 분산 스키마는 EXTERNAL 또는 EXTERNAL_MANAGED여야 합니다.
  • 백엔드 서비스의 프로토콜은 HTTP, HTTPS, HTTP/2, UDP, TCP, SSL, UNSPECIFIED 중 하나여야 합니다.

Google Cloud Armor 보안 정책 정보

Google Cloud Armor 보안 정책은 외부에 노출된 애플리케이션이나 서비스를 보호하기 위해 레이어 3~레이어 7의 속성과 일치하는 규칙 세트입니다. 각 규칙은 들어오는 트래픽과 관련하여 평가됩니다.

Google Cloud Armor 보안 정책 규칙은 일치 조건과 조건이 충족되면 취할 조치로 구성됩니다. 조건은 들어오는 트래픽의 소스 IP 주소가 특정 IP 주소나 CIDR 범위와 일치하는지 여부를 확인하는 것(IP 주소 허용 목록 및 차단 목록 규칙이라고도 함)만큼 단순할 수 있습니다. 또는 Google Cloud Armor 커스텀 규칙 언어 참조를 사용하여 URL 경로, 요청 메서드 또는 요청 헤더 값과 같은 들어오는 트래픽의 다양한 속성과 일치하는 커스텀 조건을 만들 수 있습니다.

들어오는 요청이 보안 정책 규칙의 조건과 일치하면 Google Cloud Armor는 규칙이 허용 규칙인지, 거부 규칙인지, 리디렉션 규칙인지에 따라 요청을 허용, 거부 또는 리디렉션합니다. 요청 헤더 삽입과 같이 적용할 추가 작업 매개변수가 있을 수 있습니다. 이 기능은 Google Cloud Armor 봇 관리의 일부입니다. 봇 관리에 대한 자세한 내용은 봇 관리 개요를 참조하세요.

Google Cloud Armor 보안 정책을 백엔드 서비스 한 개 이상에 연결할 수 있습니다. 백엔드 서비스에는 하나의 보안 정책만 연결할 수 있지만 백엔드 서비스가 모두 동일한 보안 정책과 연결될 필요는 없습니다.

Google Cloud Armor 보안 정책이 백엔드 서비스와 연결된 경우 이 정책을 삭제할 수 없습니다. 연결된 보안 정책이 있는지 여부에 관계없이 백엔드 서비스를 삭제할 수 있습니다.

전달 규칙 여러 개가 보안 정책에 연결된 백엔드 서비스를 가리키는 경우 각 전달 규칙 IP 주소로 들어오는 모든 트래픽에 정책 규칙이 적용됩니다.

다음 이미지에서 Google Cloud Armor 보안 정책 internal-users-policy는 백엔드 서비스 test-network에 연결되어 있습니다.

네트워크 에지에서의 Google Cloud Armor 보안 정책
네트워크 에지에서의 Google Cloud Armor 보안 정책(확대하려면 클릭)

Google Cloud Armor 보안 정책에는 다음과 같은 기능이 있습니다.

  • 원하는 경우 Google Cloud Armor를 사용하는 부하 분산기와 함께 QUIC 프로토콜을 사용할 수 있습니다.

  • Google Cloud Armor를 다음 네트워크 서비스 등급 중 하나에 있는 부하 분산기에 사용할 수 있습니다.

    • 프리미엄 등급
    • 표준 등급
  • GKE 및 기본 인그레스 컨트롤러에서 백엔드 보안 정책을 사용할 수 있습니다.

  • 다음 부하 분산기 중 하나를 구성할 때 사용자 지정 기준점에 따라 트래픽을 제한하는 기본 보안 정책을 사용할 수 있습니다.

    • 전역 외부 애플리케이션 부하 분산기
    • 기본 애플리케이션 부하 분산기
    • 리전 외부 애플리케이션 부하 분산기
    • 전역 외부 프록시 네트워크 부하 분산기
    • 기본 프록시 네트워크 부하 분산기
    • 외부 패스 스루 네트워크 부하 분산기

또한 오픈소스 업계 표준에서 컴파일된 서명이 수십 개 있는 복잡한 웹 애플리케이션 방화벽(WAF) 규칙인 Google Cloud Armor 사전 구성된 WAF 규칙을 구성할 수 있습니다. 각 서명은 규칙 집합의 공격 감지 규칙에 해당합니다. Google은 이러한 규칙을 있는 그대로 제공합니다. 규칙을 사용하면 Google Cloud Armor에서 각 서명을 수동으로 정의할 필요 없이 편리한 이름의 규칙을 참조하여 고유한 트래픽 서명 수십 개를 평가할 수 있습니다. 사전 구성된 WAF 규칙에 대한 자세한 내용은 사전 구성된 WAF 규칙 개요를 참조하세요.

보안 정책 유형

다음 표에는 보안 정책의 유형과 해당 정책으로 수행할 수 있는 작업이 나와 있습니다. 체크표시()는 보안 정책 유형이 이 기능을 지원한다는 것을 나타냅니다.

백엔드 보안 정책

백엔드 보안 정책은 다음 부하 분산기 유형에서 노출되는 백엔드 서비스와 함께 사용됩니다.

  • 전역 외부 애플리케이션 부하 분산기
  • 기본 애플리케이션 부하 분산기
  • 리전 외부 애플리케이션 부하 분산기
  • 전역 외부 프록시 네트워크 부하 분산기
  • 기본 프록시 네트워크 부하 분산기

요청을 필터링하고 인터넷, 영역, 하이브리드, 서버리스 NEG를 포함한 인스턴스 그룹 또는 네트워크 엔드포인트 그룹(NEG)을 참조하는 백엔드 서비스를 보호하는 데 사용할 수 있습니다. 모든 부하 분산기가 모든 유형의 NEG를 지원하지는 않습니다. 부하 분산기가 지원하는 NEG에 대한 자세한 내용은 네트워크 엔드포인트 그룹 개요를 참조하세요.

전역 외부 프록시 네트워크 부하 분산기 또는 기본 프록시 네트워크 부하 분산기를 사용하는 경우 Google Cloud Armor는 새 연결 요청에 대해서만 보안 정책 규칙 deny 작업을 적용합니다. deny 작업은 TCP 연결을 종료합니다. 또한 deny 작업으로 상태 코드를 제공할 경우 상태 코드가 무시됩니다.

백엔드 보안 정책에는 선택사항인 type 플래그 값이 CLOUD_ARMOR입니다. type 플래그를 설정하지 않으면 기본값은 CLOUD_ARMOR입니다.

에지 보안 정책

에지 보안 정책을 통해 캐시에 저장된 콘텐츠의 필터링 및 액세스 제어 정책을 구성할 수 있습니다. 여기에는 Cloud CDN이 사용 설정된 백엔드 서비스 및 Cloud Storage 버킷과 같은 엔드포인트가 포함됩니다. 에지 보안 정책은 백엔드 보안 정책과 비교하여 매개변수의 하위 집합을 기반으로 필터링을 지원합니다. 에지 보안 정책을 백엔드 정책으로 설정할 수 없습니다. 에지 보안 정책은 다음 엔드포인트에 대해 지원됩니다.

  • 전역 외부 애플리케이션 부하 분산기
  • 기본 애플리케이션 부하 분산기

요청이 Google 캐시에서 제공되기 전에 요청을 필터링하도록 에지 보안 정책을 구성할 수 있습니다. 에지 보안 정책은 Cloud CDN 캐시가 있는 업스트림인 Google 네트워크의 가장 바깥쪽 경계 부근에 배포되고 적용됩니다. 에지 보안 정책은 백엔드 보안 정책과 공존하여 두 보호 레이어를 제공할 수 있습니다. 백엔드 서비스가 가리키는 리소스(예: 인스턴스 그룹 또는 네트워크 엔드포인트 그룹)와 상관없이 백엔드 서비스에 동시에 적용될 수 있습니다. 에지 보안 정책만 백엔드 버킷에 적용할 수 있습니다.

에지 보안 정책과 백엔드 보안 정책이 동일한 백엔드 서비스에 연결된 경우 에지 보안 정책을 통과한 캐시 부적중 요청에 대해서만 백엔드 보안 정책이 적용됩니다.

에지 보안 정책은 IAP(Identity-Aware Proxy) 전에 평가되어 적용됩니다. IAP가 요청자의 ID를 평가하기 전에 에지 보안 정책에 의해 차단된 요청이 거부됩니다. 에지 보안 정책에서 규칙을 통해 요청을 차단하면 IAP가 로그인 페이지를 제공하거나 사용자 인증을 시도하지 못합니다.

에지 보안 정책은 type 플래그 값이 CLOUD_ARMOR_EDGE입니다.

네트워크 에지 보안 정책

네트워크 에지 보안 정책을 사용하면 Google 네트워크 에지에서 트래픽을 차단하는 규칙을 구성할 수 있습니다. 네트워크 에지 보안 정책을 시행해도 VM 또는 호스트 리소스가 사용되지 않으므로 대량의 트래픽으로 인해 대상 워크로드의 리소스가 소진되거나 여타 이유로 서비스 거부가 발생하지는 않습니다. 다음 리소스에 대한 네트워크 에지 보안 정책을 구성할 수 있습니다.

  • 외부 패스 스루 네트워크 부하 분산기
  • 프로토콜 전달
  • 공개 IP 주소가 있는 VM

네트워크 에지 보안 정책은 백엔드 보안 정책과 동일한 매개변수 중 일부를 기준으로 필터링을 지원하며 바이트 오프셋 필터링을 지원하는 유일한 보안 정책 유형입니다. 사용 가능한 매개변수의 전체 목록은 보안 정책 유형 표를 참조하세요.

네트워크 에지 보안 정책의 type 플래그 값은 CLOUD_ARMOR_NETWORK입니다. 네트워크 에지 보안 정책을 구성하려면 먼저 정책을 만들려는 리전에서 고급 네트워크 DDoS 보호를 구성해야 합니다. 고급 DDoS 보호에 대한 자세한 내용은 고급 네트워크 DDoS 보호 구성을 참조하세요.

규칙 평가 순서

규칙 평가 순서는 가장 낮은 번호에서 가장 높은 숫자까지 규칙 우선순위로 결정됩니다. 가장 낮은 숫자 값이 할당된 규칙은 논리적 우선순위가 가장 높으며 논리적 우선순위가 낮은 규칙보다 먼저 평가됩니다. 최소 숫자 우선순위는 0입니다. 숫자가 증가하면 규칙 우선순위가 감소합니다(1, 2, 3, N+1). 우선순위가 같은 규칙을 두 개 이상 구성할 수 없습니다. 각 규칙 우선순위를 0~2147483646 사이의 숫자로 설정해야 합니다. 우선순위 값 2147483647(INT-MAX라고도 함)은 기본 규칙에 예약되어 있습니다.

우선순위 번호에는 간격이 있을 수 있으므로 나중에 나머지 규칙에 영향을 주지 않고 규칙을 추가하거나 삭제할 수 있습니다. 예를 들어 1, 2, 3, 4, 5, 9, 12, 16은 나중에 6~8, 10~11, 13~15의 규칙을 추가할 수 있는 유효한 일련의 우선순위 번호입니다. 실행 순서를 제외하고 기존 규칙을 변경할 필요는 없습니다.

일반적으로 요청과 일치하는 우선순위가 가장 높은 규칙이 적용됩니다. 하지만 evaluatePreconfiguredExpr() 요청을 사용하는 사전 구성된 규칙에 따라 HTTP POST 요청이 평가되는 경우는 예외입니다. 예외는 다음과 같습니다.

HTTP POST 요청의 경우 Google Cloud Armor는 본문(페이로드) 전에 요청 헤더를 수신합니다. Google Cloud Armor는 먼저 헤더 정보를 수신하므로 헤더와 일치하는 규칙을 평가하지만 본문에서 사전 구성된 규칙과 일치하지 않습니다. 헤더 기반 규칙이 여러 개 있으면 Google Cloud Armor는 예상대로 우선순위에 따라 이러한 규칙을 평가합니다. redirect 작업 및 커스텀 헤더 삽입 작업은 헤더 처리 단계 중에만 작동합니다. 다음 본문 처리 단계 중 일치할 경우 redirect 작업이 deny 작업으로 변환됩니다. 본문 처리 단계 중 일치할 경우에는 커스텀 요청 헤더 작업이 수행되지 않습니다.

Google Cloud Armor는 HTTP POST 본문을 수신한 후 요청 헤더와 본문 모두에 적용되는 규칙을 평가합니다. 결과적으로 요청 헤더를 허용하는 우선순위가 낮은 규칙이 요청 본문을 차단하는 우선순위가 높은 규칙보다 먼저 일치할 수 있습니다. 이러한 경우 요청의 HTTP 헤더 부분이 대상 백엔드 서비스로 전송될 수 있지만 잠재적으로 위험한 콘텐츠가 포함된 POST 본문은 차단됩니다. Google Cloud Armor는 POST 본문의 처음 8KB를 검사합니다. 이 제한사항에 대한 자세한 내용은 POST 본문 검사 제한사항을 참조하세요.

사전 구성된 규칙의 evaluatePreconfiguredExpr() 표현식은 요청 본문에 대해 평가되는 유일한 표현식입니다. 다른 모든 표현식은 요청 헤더에만 평가됩니다. Google Cloud Armor는 요청 본문이 있는 HTTP 요청 유형 중에서 POST 요청만 처리합니다. 검사는 POST 본문의 처음 8KB로 제한되며 URL 쿼리 매개변수와 같이 디코딩됩니다. Google Cloud Armor는 JSON 형식의 POST 본문(Content-Type = "application/json")에 대해 사전 구성된 WAF 규칙을 파싱하고 적용할 수 있습니다. 하지만 Google Cloud Armor는 XML, Gzip, UTF-16과 같은 다른 HTTP 콘텐츠 유형/콘텐츠 인코딩 기반 디코더를 지원하지 않습니다.

예시

다음 예시에서 규칙 1, 2, 3은 IP 헤더 필드와 HTTP 헤더 필드의 순서로 평가됩니다. 그러나 IP 9.9.9.1HTTP POST 본문에서 XSS 공격을 시작하면 규칙 2에 의해 본문만 차단되고 HTTP 헤더는 규칙 3에 의해 백엔드로 전달됩니다.

Rule1
expr: inIPRange(origin.ip, '10.10.10.0/24')
action: deny(403)
priority: 1
Rule2
expr: evaluatePreconfiguredExpr('xss-stable')
action: deny(403)
priority: 2
Rule3
expr: inIPRange(origin.ip, '9.9.9.0/24')
action: allow
priority: 3
Rule-default
action: deny(403)
priority: INT-MAX

다음 예시에서 정책은 XSS 공격에 대한 검사 없이 IP 9.9.9.1을 허용합니다.

Rule1
expr: inIPRange(origin.ip, '10.10.10.0/24')
action: deny(403)
priority: 1
Rule2
expr: inIPRange(origin.ip, '9.9.9.0/24')
action: allow
priority: 2
Rule3
expr: evaluatePreconfiguredExpr('xss-stable')
action: deny(403)
priority: 3
Rule-default
action: allow
priority: INT-MAX

기본 규칙

각 Google Cloud Armor 보안 정책에는 일치하는 우선순위가 높은 규칙이 없거나 정책에 다른 규칙이 없는 경우에 일치하는 기본 규칙이 포함되어 있습니다. 기본 규칙은 자동으로 우선순위 2147483647(INT-MAX)에 할당되며 항상 보안 정책에 있습니다.

기본 규칙을 삭제할 수 없지만 수정할 수는 있습니다. 기본 규칙의 기본 작업은 deny이지만 작업을 allow로 변경할 수 있습니다.

디지털 지문

Google Cloud Armor 보안 정책마다 fingerprint 필드가 있습니다. 디지털 지문은 정책에 저장된 콘텐츠의 해시입니다. 새 정책을 만들 때 이 필드 값을 제공하지 마세요. 값을 제공하면 무시됩니다. 그러나 보안 정책을 업데이트하는 경우에는 정책을 내보내거나 설명할 때 가져오는 현재 디지털 지문을 지정해야 합니다(각각 EXPORT 또는 DESCRIBE 사용).

디지털 지문은 다른 사용자의 업데이트가 우선 적용되지 못하게 합니다. 제공한 디지털 지문이 오래된 경우 이는 디지털 지문을 마지막으로 검색한 이후에 보안 정책이 업데이트되었음을 의미합니다. 차이점을 확인하고 최신 지문을 검색하려면 DESCRIBE 명령어를 실행합니다.

규칙 언어 및 시행 엔진

규칙 언어 및 시행 엔진에서는 다음 기능을 제공합니다.

  • 들어오는 요청의 다양한 레이어 3~7 속성과 일치할 수 있는 커스텀 규칙 표현식을 작성하는 기능. Google Cloud Armor에서는 커스텀 일치 조건을 작성할 수 있는 유연한 언어를 제공합니다.

  • 규칙 하나에 하위 표현식을 최대 5개까지 결합할 수 있는 기능

  • 들어오는 요청의 리전 코드를 기준으로 요청을 거부하거나 허용하는 기능. 리전 코드는 ISO 3166-1 alpha 2 코드를 기반으로 합니다. 리전 코드가 특정 국가에 해당하는 경우도 있지만 일부는 국가와 관련 지역을 포함합니다. 예를 들어 US 코드는 미국의 모든 주, 구역 1개, 외곽 지역 6개를 포함합니다.

규칙 유형

Google Cloud Armor에는 다음 유형의 규칙이 있습니다.

IP 주소 허용 목록 및 차단 목록 규칙

보안 정책 내에서 IP 주소 허용 목록과 차단 목록 규칙을 만들 수 있습니다. 몇 가지 예를 들면 다음과 같습니다.

  • IP 주소/CIDR을 차단 목록에 추가하면 소스 IP 주소나 CIDR 범위가 지원되는 부하 분산기에 액세스하지 못하게 할 수 있습니다.

  • IP 주소/CIDR을 허용 목록에 추가하면 소스 IP 주소나 CIDR 범위가 지원되는 부하 분산기에 액세스하도록 허용할 수 있습니다.

  • 허용 목록 및 차단 목록 규칙에서는 IPv4 주소와 IPv6 주소를 지원합니다.

  • 거부 규칙은 HTTP 403(승인되지 않음), 404(액세스 거부), 502(잘못된 게이트웨이) 응답을 반환할 수 있습니다.

  • 초과 작업 규칙은 HTTP 429(요청한 횟수가 너무 많음)를 반환할 수 있습니다.

소스 지역 규칙

유니코드 국가 코드로 정의된 선택된 지리적 영역에서 시작된 요청을 허용하거나 거부할 수 있습니다.

Google Cloud Armor는 자체 IP 위치정보 데이터베이스를 사용하여 요청 지리 위치를 식별합니다. 데이터베이스는 정기적으로 업데이트됩니다. 특정 업데이트 주기를 보장할 수는 없지만 일반 작업 중 Google Cloud Armor에서 사용하는 매핑은 약 1주일 간격으로 업데이트됩니다.

업데이트된 매핑은 Google의 인프라에 전역으로 전파되어야 합니다. 출시 프로세스는 Google Cloud Armor가 배포된 여러 영역 및 리전에서 일반적으로 며칠에 걸쳐 점진적으로 수행됩니다. 이러한 점진적 출시 프로세스로 인해 소스 IP 주소가 지리적 위치 매핑에서 변경된 경우 출시 중에 동일한 소스 IP 주소의 요청이 일관되지 않게 처리되는 것을 볼 수 있습니다.

사전 구성된 WAF 규칙

Google Cloud Armor는 다음을 감지할 수 있도록 OWASP ModSecurity Core Rule Set(CRS)를 기반으로 사전 구성된 WAF 규칙의 전체 목록을 제공합니다.

  • SQL 삽입 공격
  • 교차 사이트 스크립팅 공격
  • 로컬 파일 포함 공격
  • 원격 파일 포함 공격
  • 원격 코드 실행 공격
  • 메서드 적용 공격
  • 스캐너 감지 공격
  • 프로토콜 공격
  • PHP 삽입 공격
  • 세션 고정 공격
  • 자바 공격
  • NodeJS 공격

자세한 내용은 Google Cloud Armor 사전 구성된 WAF 규칙 개요를 참조하세요.

봇 관리 규칙

봇 관리 규칙을 사용하여 다음 작업을 수행할 수 있습니다.

  1. 선택적 수동 로그인 질문으로 reCAPTCHA Enterprise 평가 요청을 리디렉션합니다.
  2. 요청에 연결된 reCAPTCHA Enterprise 토큰을 평가하고 토큰 속성에 따라 구성된 작업을 적용합니다.
  3. 302 응답으로 구성된 대체 URL로 요청을 리디렉션합니다.
  4. 커스텀 헤더를 요청에 삽입한 후 백엔드로 프록시합니다.

봇 관리에 대한 자세한 내용은 봇 관리 개요를 참조하세요.

명명된 IP 주소 목록의 사전 구성된 규칙

명명된 IP 주소 목록의 사전 구성된 규칙은 다음을 제공합니다.

  • 타사 제공업체의 명명된 IP 주소 목록을 Google Cloud Armor와 통합합니다.

  • 허용되거나 거부된 IP 주소 범위의 유지보수를 간소화합니다.

  • 타사 제공업체 목록을 매일 동기화합니다.

  • 명명된 IP 주소 목록에서는 규칙당 IP 주소 수가 제한되지 않으므로 보안 정책에서 IP 주소와 범위를 구성할 수 있는 용량이 늘어납니다.

비율 제한 규칙

비율 제한 규칙을 사용하여 다음을 수행할 수 있습니다.

  • 구성한 기준에 따라 클라이언트별 요청을 제한합니다.
  • 구성된 기간 동안 설정한 요청 기준을 초과하는 클라이언트를 일시적으로 차단합니다.

전역 외부 프록시 네트워크 부하 분산기 또는 기본 프록시 네트워크 부하 분산기에 비율 제한을 사용할 때는 다음 제한사항이 적용됩니다.

  • Google Cloud Armor는 클라이언트의 새 연결 요청에만 제한 또는 차단과 같은 비율 제한 작업을 적용합니다.
  • 키 유형 ALLIP만 지원됩니다.
  • TCP/SSL 부하 분산기에 키 유형 HTTP-HEADER 또는 HTTP-COOKIE를 사용하려는 경우 키 유형은 ALL로 해석되고 마찬가지로 XFF-IPIP로 해석됩니다

비율 제한과 작동 방식에 대한 상세 설명은 비율 제한 개요를 참조하세요.

미리보기 모드

규칙을 적용하지 않고 규칙 효과를 미리 볼 수 있습니다. 미리보기 모드에서는 작업이 Cloud Monitoring에 기록됩니다. 보안 정책의 개별 규칙을 미리 보거나 정책의 모든 규칙을 미리 볼 수 있습니다. 미리보기 모드의 규칙에는 일반 요청별 비용이 청구됩니다.

Google Cloud CLI 및 gcloud compute security-policies rules update--preview 플래그를 사용하여 규칙에 대해 미리보기 모드를 사용 설정할 수 있습니다.

미리보기 모드를 중지하려면 현재 문서화되지 않은 --no-preview 플래그를 사용합니다. Google Cloud Console을 사용할 수도 있습니다.

요청이 미리보기를 트리거하면 Google Cloud Armor는 일치 항목을 찾을 때까지 다른 규칙을 계속 평가합니다. 일치하는 규칙과 미리보기 규칙을 모두 로그에서 확인할 수 있습니다.

로깅

Google Cloud Armor에는 광범위한 로깅이 있으며 로깅의 상세 수준을 정의할 수 있습니다. 로깅에 대한 자세한 내용은 요청 로깅 사용을 참조하세요.

Google Cloud Armor 로그를 보려면 로그 보기를 참조하세요.

외부 애플리케이션 부하 분산기 요청 로깅

Google Cloud Armor 보안 정책에 대해 평가되는 각 HTTP(S) 요청은 Cloud Logging을 통해 로깅됩니다. 로그는 적용된 보안 정책의 이름, 일치 규칙, 규칙 적용 여부와 같은 세부정보를 제공합니다. 새 백엔드 서비스 리소스의 요청 로깅은 기본적으로 중지되어 있습니다. Google Cloud Armor 요청이 로깅되도록 하려면 보안 정책으로 보호되는 각 백엔드 서비스에 HTTP(S) 로깅을 사용 설정해야 합니다.

자세한 내용은 외부 애플리케이션 부하 분산기 로깅 및 모니터링을 참조하세요.

외부 프록시 네트워크 부하 분산기 요청 로깅

TCP/SSL 프록시 부하 분산 로깅 및 모니터링에 나열된 대로 Google Cloud CLI 명령어를 사용하여 외부 프록시 네트워크 부하 분산기의 로깅을 구성할 수 있습니다. Google Cloud 콘솔을 사용해서는 외부 프록시 네트워크 부하 분산기에 로깅을 사용 설정할 수 없습니다.

상세 로깅을 사용해야 하는 경우

사전 구성된 WAF 규칙이 특정 요청에 의해 트리거된 이유를 알 수 없는 경우도 있습니다. Google Cloud Armor의 기본 이벤트 로그에는 트리거된 규칙과 하위 서명이 포함됩니다. 그러나 문제 해결, 규칙 유효성 검사 또는 규칙 조정을 목적으로 규칙을 트리거한 수신 요청의 세부정보를 식별해야 할 수 있습니다.

로그에 기록되는 세부정보의 수준을 조정할 수 있습니다. 처음 정책을 만들거나, 정책을 변경하거나, 정책 문제를 해결할 때만 상세 로깅을 사용 설정하는 것이 좋습니다. 상세 로깅을 사용 설정하면 미리보기 모드의 규칙과 표준 작업 중의 활성(미리보기되지 않음) 규칙에 적용됩니다.

상세 로깅에 대한 자세한 내용은 상세 로깅을 참조하세요.

POST 본문 콘텐츠 파싱

기본적으로 Google Cloud Armor는 사전 구성된 WAF 규칙의 서명에 대해 POST 본문의 전체 콘텐츠를 균일한 문자열(본문 크기 제한사항 적용)로 평가합니다. JSON과 같은 대체 인코딩이 포함된 요청의 경우 (사용자가 지정하지 않은) 메시지의 구조적 구성요소가 사전 구성된 WAF 서명에 대한 일치를 트리거할 수 있습니다. 노이즈를 방지하고 거짓양성의 위험을 줄이려면 보호된 워크로드가 다음을 수행하는 경우 지원되는 모든 Content-Type에 대한 대체 파싱을 사용 설정하도록 Google Cloud Armor를 구성하는 것이 좋습니다.

  • REST API 제공
  • GraphQL 사용
  • JSON 인코딩 콘텐츠가 포함된 요청을 수신합니다.

사전 구성된 WAF 규칙에 대한 자세한 내용은 커스텀 Content-Type 헤더 값에 JSON 파싱 적용을 참조하세요.

Google Cloud Armor 보안 정책에 대해 평가되는 각 HTTP(S) 요청은 Cloud Logging을 통해 로깅됩니다. 로그는 적용된 보안 정책의 이름, 일치 규칙, 규칙 적용 여부와 같은 세부정보를 제공합니다. 새 백엔드 서비스 리소스의 요청 로깅은 기본적으로 중지되어 있습니다. Google Cloud Armor 요청이 로깅되도록 하려면 보안 정책으로 보호되는 각 백엔드 서비스에 HTTP(S) 로깅을 사용 설정해야 합니다.

자세한 내용은 전역 외부 애플리케이션 부하 분산기 로깅 및 모니터링을 참조하세요.

제한사항

다음 섹션에서는 보안 정책의 제한사항에 대해 자세히 설명합니다.

POST 본문 검사 제한사항

사전 구성된 규칙의 evaluatePreconfiguredExpr() 표현식은 요청 본문에 대해 Google Cloud Armor가 평가하는 유일한 표현식입니다. Google Cloud Armor는 요청 본문이 있는 HTTP 요청 유형 중에서 POST 요청만 처리합니다.

검사는 POST 본문의 처음 8KB로 제한되며 URL 쿼리 매개변수와 같이 디코딩됩니다. POST 본문의 나머지에는 애플리케이션에서 수락될 수 있는 악의적인 코드가 포함될 수 있습니다. 크기가 8KB를 초과하는 POST 본문 위험을 완화하려면 문제 해결 가이드를 참조하세요.

Google Cloud Armor는 기본 URL 인코딩 및 JSON 형식의 POST 본문(Content-Type = "application/json")에 대해 사전 구성된 WAF 규칙을 파싱하고 적용할 수 있습니다. 이 경우 디코딩된 이름과 값에 규칙이 독립적으로 적용됩니다. 다른 콘텐츠 유형 및 인코딩 유형의 경우 Google Cloud Armor는 데이터를 디코딩하지 않고 원시 데이터에 사전 구성된 규칙을 적용합니다.

WebSocket 연결 처리 방법

전역 외부 애플리케이션 부하 분산기에는 WebSocket 프로토콜이 기본 지원됩니다. WebSocket 채널은 HTTP(S) 요청에서 시작됩니다. 예를 들어 IP 주소 차단 목록에서 발신 IP 주소를 차단하는 경우 Google Cloud Armor는 WebSocket 채널이 설정되지 않도록 이 채널을 차단할 수 있습니다. 그러나 채널의 후속 트랜잭션은 HTTP 프로토콜을 준수하지 않으며 Google Cloud Armor는 첫 번째 요청 후에 어떠한 메시지도 평가하지 않습니다.

다음 단계