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


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 Alarm 보안 정책을 생성합니다.

  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. 설정한 보안 정책이 적용 되었는지 확인 합니다.



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



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

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

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