안녕하세요, 

베스핀글로벌 GCP Support팀입니다.


이번 아티클에서는 주제로 "Google Cloud Armor 보안 정책 구성"을 다루고자 합니다.



Google Cloud Armor 보안 정책


Google Cloud Armor 보안 정책[1]이란 애플리케이션으로 들어오는 클라이언트 트래픽에 대해 Allow / Deny / Throttle / Rate based ban 4가지 Action의 규칙을 설정하고 조건에 맞는 트래픽을 설정된 규칙을 기준으로 차단 시킵니다.


1개의 정책 당 규칙은 최대 1000개까지 적용 하며 우선 순위에 따라 적용 순서가 결정됩니다.

또한 각 Backend에는 1개의 Backend 보안 정책만 적용할 수 있습니다.


보안 정책의 4가지 Action[2]은 아래와 같습니다.


  1. Allow : 지정된 조건 클라이언트로부터의 트래픽을 허용합니다.


  1. Deny : 지정된 조건 클라이언트로부터의 트래픽을 거부합니다.


  1. Throttle : 지정한 조건의 클라이언트로부터의 트래픽이 설정한 기간(Interval) 내에 Request Count 숫자 이상 요청 시 해당 트래픽을 거부합니다.

(EX : Request Count : 10 / Interval 1분 설정 시, 1분간 10회 초과하여 접속하는 클라이언트의 트래픽에 대해 차단)


  1. Rate based ban : 지정한 조건의 클라이언트로부터의 트래픽이 설정한 기간(Interval) 내에 Request Count 숫자 이상 요청 시 금지 기간(Ban Duration) 동안 해당 트래픽을 거부합니다.

(EX : Request Count : 10 / Interval 1분, Ban Duration 5분 설정 시, 1분간 10회 초과하여 접속하는 클라이언트의 트래픽에 대해 5분간 차단) 




GCP Console을 사용하여 Cloud Armor 보안 정책 생성


GCP Console에서 아래와 같이 Cloud Armor 보안 정책을 생성 및 적용할 수 있습니다.


  1. 보안 정책 생성

GCP Console > Network Security > Cloud Armor > Create security policy


  1. 보안 정책 규칙을 설정합니다.

             규칙 설정 시, 아래 내용을 고려하여 설정합니다.


1) Match : 지정하는 ip 주소 범위입니다.  * 사용 시 모든 ip 범위에 대해 적용할 수 있습니다.

2) Action : 대응하는 규칙입니다. Rate based ban을 적용하면 기준 시간 내에 기준 횟수 이상 접속 시 설정 된 시간 동안 일시적으로 차단 할 수 있습니다.

3) Enforce on key : 클라이언트를 식별하는 방법을 지정합니다.

4) Priority : 규칙이 적용되는 우선순위입니다. default rule보다 높은 우선 순위를 가져야 해당 rule이 우선적으로 적용됩니다. 낮은 숫자일 수록 높은 우선 순위를 가집니다.


    3. 생성된 보안 정책을 LB의 Backend에 적용합니다.

        HTTP(S) LB의 Backend는 LB의 Backend 구성에서 적용할 수 있습니다.

        Network services > Load balancing > LB 선택 > Edit > Backend configuration > Edit backend service > Security


        TCP/SSL Proxy LB의 Backend는 보안 정책의 Target으로 추가하여 적용할 수 있습니다.

        Network Security > Cloud Armor > Policies > Policy 선택 > Apply policy to target



    4. 설정한 보안 정책이 적용 되었는지 확인 합니다.


※ 보안 정책을 바로 적용하기 보다는 규칙 설정 시 미리보기 모드[3]를 활용하여, 해당 되는 Metric과 Log를 분석한 뒤 실제 프로덕션 레벨의 서비스에 적용하시길 권고 드립니다. 




advanced mode를 사용하여 .php 등의 특정 경로로의 접근을 제한


Cloud Armor를 적용하여 .php등 특정 경로로의 접근을 제한 할 수 있습니다.

단순히 IP 범위로 제한하는 것이 아니라 특정 파일형 식에 대한 경로 제한이 필요한 경우에는, Cloud Armor 커스텀 규칙 언어의 속성표현식를 활용하여 처리합니다.[4]


예시 : 

    - 속성 : request.path = 요청한 HTTP URL 경로

    - 표현식 : x.endsWith(y) = 문자열 x가 하위 문자열 y로 끝나면 true를 반환합니다.

    - 속성과 표현식을 조합한 규칙 : request.path.endsWith(‘.php’) = .php로 끝나는 HTTP URL 경로를 true로 반환합니다.



다음과 같이 GCP Console 상에서 설정 할 수 있습니다.


1. Advanced Mode로 보안 정책 생성

Network Security > Cloud Armor > Create Secuity Policy > Advanced mode




위 정책은 .php로 접근하는 조건에 맞는 접근에 대해 403(Forbidden) 응답을 반환합니다.



2. Cloud Armor 보안 규칙을 설정 후 적용 되었는지 확인합니다.




참조 링크


[1] Cloud Armor 보안정책 개요

https://cloud.google.com/armor/docs/security-policy-overview

[2] Cloud Armor 보안정책 유형

https://cloud.google.com/armor/docs/security-policy-overview#policy-types

[3] Cloud Armor 미리보기(Preview) 모드

https://cloud.google.com/armor/docs/security-policy-overview#preview_mode

[4] Cloud Armor 커스텀 규칙 언어 속성 구성

https://cloud.google.com/armor/docs/rules-language-reference



관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.


감사합니다.