이 페이지에는 봇 관리를 위한 Google Cloud Armor 보안 정책 규칙을 구성하는 방법에 대한 정보가 포함되어 있습니다. 봇 관리를 구성하려면 먼저 봇 관리 개요의 정보를 숙지해야 합니다.
시작하기 전에
다음 섹션에서는 Google Cloud Armor 보안 정책을 구성하는 데 필요한 모든 Identity and Access Management(IAM) 역할 및 권한을 설명합니다. 이 문서의 사용 사례에서는 compute.securityPolicies.create
및 compute.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
: reCAPTCHACHALLENGEPAGE
키
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.ATTRIBUTE
및 token.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"