[GCP] Cloud Armor custom rule 만들기

Seunghyun Moon·2024년 1월 13일
0

gcp

목록 보기
15/15

오늘의 이슈

GCP 상에서 LB 앞에 간단하지만 강력한 L7 레이어의 보안 역할을 하는(WAF라고 봐도 무방) Cloud Armor 와 커스텀 룰에 대해 알아봅니다.


Cloud Armor란

Google Cloud Armor를 사용하면 DDoS 공격과 교차 사이트 스크립팅(XSS), SQL 삽입(SQLi)과 같은 애플리케이션 공격을 포함한 여러 유형의 위협으로부터 Google Cloud 배포를 보호할 수 있습니다.

구성 요소

  1. policy의 위치, 이름, 타입 등을 정하고
  2. rule 지정
  3. 타겟 지정
  4. 추가 설정(IP 헤더 규칙 등)

시작

1. policy 설정

  • 이름, 설명, 조건 등을 정합니다.

2. rule 설정

basic mode에서는 ip 기반으로 매치된 ip 에 대해서 동작합니다.

2.1. Advanced mode(커스텀 모드)

CEL 기반으로 표현식을 짜고, 거기에 매칭되는 트래픽에 대해서 허용 거부를 할 수 있습니다.

  • 한국 ip 대역과 스페인 ip 대역에 대해서만 허용하는 예제입니다.
origin.region_code != 'KR' && origin.region_code != 'ES'

국가 코드 참고

  • AU 리전에 있는 1.2.3.0/24의 트래픽은 다음 표현식에 매치합니다.
origin.region_code == "AU" && inIpRange(origin.ip, '1.2.3.0/24')
  • 1.2.3.4에서 온 요청 중 user-agent 값이 "WordPress" 문자열을 포함한 트래픽을 매치합니다.
inIpRange(origin.ip, '1.2.3.4/32')
&& has(request.headers['user-agent'])
&& request.headers['user-agent'].contains('WordPress')
  • 정규 표현식도 사용 가능합니다. URI에 bad_path 문자열이 포함된 요청과 일치합니다.
request.path.matches('/bad_path/')

3. 타겟 설정

동시에 여러개 lb 의 백엔드 서비스를 타겟으로 지정할 수 있습니다.



참고

CEL 도큐먼테이션
https://cloud.google.com/armor/docs/security-policy-overview?_ga=2.194584237.-1415480700.1704570954&hl=ko#about
https://cloud.google.com/armor/docs/rules-language-reference?hl=ko#allow_or_deny_traffic_from_a_specific_region

profile
I live fullest

0개의 댓글