봇 관리 구성

이 페이지에는 봇 관리를 위한 Google Cloud Armor 보안 정책 규칙을 구성하는 방법에 대한 정보가 포함되어 있습니다. 봇 관리를 구성하려면 먼저 봇 관리 개요의 정보를 숙지해야 합니다.

시작하기 전에

다음 섹션에서는 Google Cloud Armor 보안 정책을 구성하는 데 필요한 모든 Identity and Access Management(IAM) 역할 및 권한을 설명합니다. 이 문서의 사용 사례에서는 compute.securityPolicies.createcompute.securityPolicies.update 권한만 필요합니다.

Google Cloud Armor 보안 정책의 IAM 권한 설정

다음 작업에는 Identity and Access Management(IAM) Compute 보안 관리자 역할(roles/compute.securityAdmin)이 필요합니다.

  • Google Cloud Armor 보안 정책 구성, 수정, 업데이트, 삭제
  • 다음 API 메서드 사용:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Compute 네트워크 관리자 역할(roles/compute.networkAdmin)이 있는 사용자는 다음 작업을 수행할 수 있습니다.

  • 백엔드 서비스의 Google Cloud Armor 보안 정책 설정
  • 다음 API 메서드 사용:
    • BackendServices setSecurityPolicy
    • BackendServices list(gcloud만)

보안 관리자 역할(roles/iam.securityAdmin) 및 Compute 네트워크 관리자 역할이 있는 사용자는 SecurityPolicies API 메서드 get, list, getRule을 사용하여 Google Cloud Armor 보안 정책을 볼 수 있습니다.

커스텀 역할에 대한 IAM 권한 설정

다음 표에는 IAM 역할의 기본 권한과 관련 API 메서드가 나와 있습니다.

IAM 권한 API 메서드
compute.securityPolicies.create SecurityPolicies insert
compute.securityPolicies.delete SecurityPolicies delete
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
compute.securityPolicies.list SecurityPolicies list
compute.securityPolicies.use BackendServices setSecurityPolicy
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
compute.backendServices.setSecurityPolicy BackendServices setSecurityPolicy

reCAPTCHA 수동 테스트를 사용하여 인간과 자동 클라이언트 구별

Google Cloud Armor와 함께 reCAPTCHA 를 사용하려면 CHALLENGEPAGE 유형의 reCAPTCHA WAF 사이트 키(reCAPTCHA 키)를 보안 정책과 연결해야 합니다. reCAPTCHA 키에 대한 자세한 내용은 reCAPTCHA 키 개요를 참조하세요.

자체 reCAPTCHA 키를 보안 정책과 연결하거나 연결 해제하려면 다음 명령어를 사용합니다.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key SITE_KEY

다음을 바꿉니다.

  • SECURITY_POLICY: 보안 정책의 이름
  • SITE_KEY: reCAPTCHA CHALLENGEPAGE

reCAPTCHA 키 연결

다음 예시에서는 reCAPTCHA 키를 보안 정책과 연결합니다. 연결된 reCAPTCHA 키는 특정 보안 정책에 따라 수동 테스트 기능을 사용하는 모든 규칙에 적용됩니다.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key "SITE_KEY"

reCAPTCHA 키 연결 해제

reCAPTCHA 키와 보안 정책의 연결을 해제하려면 다음 명령어를 사용합니다.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key ""

reCAPTCHA 평가를 위해 트래픽 리디렉션

reCAPTCHA 키를 보안 정책과 연결한 경우 해당 정책 내에서 reCAPTCHA 평가를 위해 트래픽을 내부적으로 리디렉션하는 규칙을 만들 수 있습니다. gcloud CLI에서 다음 형식을 사용하여 트래픽을 리디렉션합니다.

gcloud compute security-policies rules create PRIORITY \
  --security-policy SECURITY_POLICY \
  {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
  --action redirect \
  --redirect-type google-recaptcha

다음을 바꿉니다.

  • PRIORITY: 규칙을 만들 때 따르는 우선순위
  • SECURITY_POLICY: 보안 정책의 이름
  • EXPRESSION: reCAPTCHA 평가를 적용할 트래픽과 일치하는 커스텀 규칙 언어 표현식
  • SRC_IP_RANGE: IP 주소 범위. 이를 사용하여 이 범위의 모든 요청에 reCAPTCHA 평가를 적용합니다.

다음 예시에서는 reCAPTCHA 수동 테스트에 대해 /login.html에 도달하려고 시도하는 트래픽을 리디렉션하는 규칙을 만듭니다.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\")" \
    --action redirect \
    --redirect-type google-recaptcha

reCAPTCHA 원활한 평가 시행

계속하기 전에 reCAPTCHA 작업 토큰 또는 세션 토큰 사용에 대한 기본 요건은 봇 관리 개요를 참조하세요.

reCAPTCHA 작업 토큰에서 속성을 추출하려면 token.recaptcha_action.ATTRIBUTE를 사용하면 됩니다. ATTRIBUTE를 Google Cloud Armor 규칙 언어의 유효한 토큰 속성으로 바꿉니다. 마찬가지로 token.recaptcha_session.ATTRIBUTE를 사용하여 reCAPTCHA 세션 토큰에서 속성을 추출합니다. 사용 가능한 reCAPTCHA 토큰 속성의 구문에 대한 자세한 내용은 규칙 언어 참조를 확인하세요.

작업 토큰은 웹 애플리케이션, iOS 애플리케이션 또는 Android 애플리케이션에서 시작될 수 있지만 세션 토큰은 웹 애플리케이션에서만 발생할 수 있습니다. 플랫폼마다 별도의 reCAPTCHA 키가 필요합니다. token.recaptcha_action.ATTRIBUTEtoken.recaptcha_session.ATTRIBUTE 표현식은 이러한 플랫폼의 토큰에 적용됩니다. 토큰을 플랫폼마다 구분하고 토큰 도난을 방지하려면 이러한 표현식을 사용하는 규칙을 구성할 때 reCAPTCHA 키를 연결하는 것이 좋습니다.

예시

첫 번째 예시에서는 점수가 0.8 이상인 reCAPTCHA 작업 토큰으로 /login.html을 타겟팅하는 트래픽을 허용하는 규칙을 만듭니다.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --action allow

두 번째 예시는 첫 번째 예시와 동일하지만 작업 토큰이 example-site-key-1 또는 example-site-key-2의 reCAPTCHA 키로 발급되어야 합니다.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \
    --action allow

세 번째 예시에서는 example-site-key-3의 reCAPTCHA 키로 발급된 reCAPTCHA 세션 토큰을 사용하고 점수가 0.8 이상인 /login.html을 타겟팅하는 트래픽을 허용하는 규칙을 만듭니다.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \
    --recaptcha-session-site-keys "example-site-key-3" \
    --action allow

리디렉션(302 응답)

트래픽을 사용자 구성 URL로 리디렉션하는 규칙을 만들려면 Google Cloud CLI에서 다음 형식을 사용합니다.

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action redirect \
    --redirect-type external-302 \
    --redirect-target REDIRECT_URL

다음을 바꿉니다.

  • PRIORITY: 규칙을 만들 때 따르는 우선순위
  • SECURITY_POLICY: 보안 정책의 이름
  • EXPRESSION: reCAPTCHA 평가를 적용할 트래픽과 일치하는 커스텀 규칙 언어 표현식
  • SRC_IP_RANGE: IP 주소 범위. 이를 사용하여 이 범위의 모든 요청에 reCAPTCHA 평가를 적용합니다.
  • REDIRECT_URL: 트래픽을 리디렉션할 URL

다음은 10.10.10.0/24에서 들어오는 트래픽을 https://www.example.com으로 리디렉션하는 규칙을 만드는 예시입니다.

gcloud compute security-policies rules create 1000 \
   --security-policy SECURITY_POLICY \
   --src-ip-ranges "10.10.10.0/24" \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target "https://www.example.com"

요청 데코레이션

트래픽을 허용하지만 커스텀 헤더와 사용자 정의 정적 값을 보호된 백엔드로 전송하기 전에 추가하는 규칙을 만들려면 gcloud CLI에서 다음 형식을 사용합니다.

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action allow \
    --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

다음을 바꿉니다.

  • PRIORITY: 규칙을 만들 때 따르는 우선순위
  • SECURITY_POLICY: 보안 정책의 이름
  • EXPRESSION: reCAPTCHA 평가를 적용할 트래픽과 일치하는 커스텀 규칙 언어 표현식
  • SRC_IP_RANGE: IP 주소 범위. 이를 사용하여 이 범위의 모든 요청에 reCAPTCHA 평가를 적용합니다.
  • HEADER_#: 요청을 데코레이션할 요청 헤더의 이름
  • VALUE_#: 요청을 데코레이션할 요청 헤더의 값

다음 예시에서는 요청의 reCAPTCHA 작업 토큰 점수가 0.2 이하인 경우 /login.html을 타겟팅하는 트래픽을 허용하는 규칙을 만듭니다.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
    --action allow \
    --request-headers-to-add "reCAPTCHA-Warning=high"

다음 단계