평가에서 요청 필드를 제외하여 규칙을 조정함으로써 거짓양성을 줄일 수 있습니다.
규칙의 제외를 구성할 때 검사에서 다음 필드를 제외할 수 있습니다.
규칙 평가에서 요청 필드 제외
규칙에 대한 요청 필드 제외를 구성하려면 구성을 보안 정책 규칙과 연결합니다.
이러한 규칙은 규칙 ID를 사용하지 않습니다. 대신 다음 값 중 하나로 --target-rule-set 플래그를 구성할 수 있습니다.
cel(--target-rule-set "cel"): 해당 보안 정책 규칙의 커스텀 CEL 규칙에만 제외를 적용합니다.*(--target-rule-set "*", 전역 제외): 커스텀 CEL 규칙과evaluatePreconfiguredWaf()를 사용하는 규칙을 모두 포함하여 해당 보안 정책에 연결된 모든 규칙에 제외를 적용합니다.
백엔드 보안 정책 (전역 및 리전 모두)에서 대상 (cel 또는 *)당 다음을 각각 최대 100개까지 구성할 수 있습니다.
- 요청 헤더
- 요청 쿠키
- 요청 쿼리 파라미터
- 요청 URI
- 요청 본문
사용 가능한 필드 연산자는 다음과 같습니다.
EQUALS: 필드 값이 지정된 값과 같은 경우 일치합니다.STARTS_WITH: 필드 값이 지정된 값으로 시작되는 경우 일치합니다.ENDS_WITH: 필드 값이 지정된 값으로 끝나는 경우 일치합니다.CONTAINS: 필드 값에 지정된 값이 포함되어 있는 경우 일치합니다.EQUALS_ANY: 필드 값에 상관없이 일치합니다.
요청 헤더
제외 필드에 헤더 이름을 사용하여 규칙 평가 중에 검사에서 특정 요청 헤더를 제외할 수 있습니다.
요청 헤더가 제외와 일치하면 규칙 평가 전에 전체 헤더 항목 (이름과 값 모두)이 request.headers 맵에서 삭제됩니다.
예시
다음 예시에서는 PRIORITY의 보안 정책 POLICY_NAME에서 규칙을 업데이트하여 abc로 시작하거나 xyz로 끝나는 요청 헤더를 규칙 평가 (cel)에서 제외합니다.
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-header-to-exclude "op=STARTS_WITH,val=abc" \
--request-header-to-exclude "op=ENDS_WITH,val=xyz"
다음을 바꿉니다.
PRIORITY: 규칙의 우선순위POLICY_NAME: 보안 정책의 이름
요청 쿠키
제외 필드에 쿠키 이름을 사용하여 규칙 평가 중에 검사에서 특정 요청 쿠키를 제외할 수 있습니다.
요청 쿠키가 제외와 일치하면 규칙 평가 전에 전체 쿠키 항목 (이름 및 값 모두)이 요청 속성에서 제외됩니다.
예시
다음 예시에서는 PRIORITY의 보안 정책 POLICY_NAME에서 규칙을 업데이트하여 session_로 시작하는 요청 쿠키를 규칙 평가 (cel)에서 제외합니다.
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-cookie-to-exclude "op=STARTS_WITH,val=session_"
다음을 바꿉니다.
PRIORITY: 규칙의 우선순위POLICY_NAME: 보안 정책의 이름
요청 쿼리 파라미터
제외 필드에 매개변수 이름을 사용하여 규칙 평가 중에 검사에서 특정 요청 매개변수를 제외할 수 있습니다. --request-query-param-to-exclude 플래그는 URL 쿼리 매개변수와 파싱된 요청 본문 매개변수 (JSON, 양식 데이터, GraphQL) 모두에 적용됩니다.
매개변수가 제외와 일치하면 규칙 평가 전에 전체 매개변수 항목 (키와 값 모두)이 request.params에서 삭제되므로 has(request.params.param_name)은 false로 평가됩니다.
파싱된 요청 본문의 경우 점 표기법을 사용하여 중첩된 필드와 배열 항목을 타겟팅할 수 있습니다.
- 최상위 필드:
val=user - 중첩 필드:
val=user.name - 배열 항목:
val=items.0.name
예시
다음 예시에서는 PRIORITY의 보안 정책 POLICY_NAME에서 규칙을 업데이트하여 URL 쿼리 매개변수 bad-param, 중첩된 JSON 필드 user.name, JSON 배열 항목 필드 items.0.name를 규칙 평가 (cel)에서 제외합니다.
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-query-param-to-exclude "op=EQUALS,val=bad-param" \
--request-query-param-to-exclude "op=EQUALS,val=user.name" \
--request-query-param-to-exclude "op=EQUALS,val=items.0.name"
다음을 바꿉니다.
PRIORITY: 규칙의 우선순위POLICY_NAME: 보안 정책의 이름
요청 URI
규칙 평가 중에 검사에서 요청 행의 URI (쿼리 문자열 데이터 제외)를 제외할 수 있습니다.
URI를 제외하면 전체 URI 필드가 검사에서 제외됩니다.
예시
다음 예시에서는 PRIORITY의 보안 정책 POLICY_NAME에서 규칙을 업데이트하여 /bad-path가 포함된 요청 URI를 규칙 평가 (cel)에서 제외합니다.
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-uri-to-exclude "op=CONTAINS,val=/bad-path"
다음을 바꿉니다.
PRIORITY: 규칙의 우선순위POLICY_NAME: 보안 정책의 이름
요청 본문
규칙 평가 중에 검사에서 특정 요청 본문 값을 제외할 수 있습니다.
요청 본문이 제외와 일치하면 request.body 속성이 규칙 평가에서 제외됩니다.
예시
다음 예시에서는 PRIORITY의 보안 정책 POLICY_NAME에서 규칙을 업데이트하여 bad-body-value가 포함된 요청 본문을 규칙 평가 (cel)에서 제외합니다.
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-body-to-exclude "op=CONTAINS,val=bad-body-value"
다음을 바꿉니다.
PRIORITY: 규칙의 우선순위POLICY_NAME: 보안 정책의 이름
필드 값
EQUALS_ANY 이외의 필드 연산자를 사용하는 경우 필드 값을 지정해야 합니다.
요청 헤더, 요청 쿠키, 요청 쿼리 파라미터의 경우 필드 값에 허용되는 문자 집합에는 다음 문자가 포함됩니다.
!,#,$,%,&,*,+,-,.,^,_,`,|,~- 알파벳 문자
A~Z(대문자 및 소문자) - 숫자 문자
0~9
요청 본문의 경우 필드 값에 허용되는 문자 집합에는 ', \`,(, and)`를 제외한 모든 인쇄 가능한 ASCII 문자가 포함됩니다.
- 공백 (
) 및 특수문자:!,",#,$,%,&,*,+,,,-,.,/,:,;,<,=,>,?,@,[,],^,_,`,{,|,},~ - 알파벳 문자
A~Z(대문자 및 소문자) - 숫자 문자
0~9
이러한 요청 필드에 제외를 적용하면 구성된 필드 값(val=)이 다음 항목과 대소문자를 구분하지 않고 비교되어 (변환 후) 검사에서 제외할 항목을 결정합니다.
- 요청 헤더: 헤더 이름 (키)과 일치하여 전체 헤더 (이름 및 값 모두)를 제외합니다.
- 요청 쿠키: 쿠키 이름과 일치하여 전체 쿠키 (이름 및 값 모두)를 제외합니다.
- 요청 쿼리 매개변수: 매개변수 이름 또는 중첩된 JSON 경로 (키)와 일치하여 전체 매개변수 (키 및 값 모두)를 제외합니다.
- 요청 본문: 요청 본문 콘텐츠 문자열과 일치하여 전체
request.body속성을 제외합니다.
허용된 문자 집합에 없는 특정 문자를 제외하려는 경우 추가 인코딩을 수행하지 않아도 됩니다.
요청 URI의 경우 필드 값은 다음 구성요소 제한사항이 있는 URI 형식으로 지정해야 합니다.
| 구성요소 | 제한사항 |
|---|---|
| 스킴 | 허용되지만 http 또는 https로 제한됨 |
| 호스트 | 허용됨 (IP 주소일 수 있음) |
| 포트 | 허용됨 |
| 경로 | 허용됨 |
| 쿼리 | 허용되지 않음 |
| Fragment | 허용되지 않음 |
요청 URI에 제외를 적용할 때 구성된 필드 값은 쿼리 문자열을 제외하고 요청 줄의 URI와 대소문자를 구분하지 않고 (변환 후) 비교됩니다. 요청 줄의 URI는 상대적이거나 절대적일 수 있습니다. 요청 URI에 대한 제외를 구성할 때 이 점을 고려하세요.
제외 삭제
보안 정책 규칙에서 요청 필드 제외를 삭제하려면 remove-preconfig-waf-exclusion 명령어를 사용합니다. 해당 필드 제외 플래그를 지정하여 특정 필드 제외를 삭제하거나 필드 플래그를 생략하여 해당 대상 규칙 집합 (cel 또는 *)의 모든 제외를 삭제할 수 있습니다.
예시
다음 예시에서는 PRIORITY의 보안 정책 POLICY_NAME에서 규칙을 업데이트하여 규칙 평가(cel)에서 abc로 시작하는 요청 헤더의 제외를 삭제합니다.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-header-to-exclude "op=STARTS_WITH,val=abc"
다음 예시에서는 필드 플래그를 생략하여 PRIORITY의 규칙에서 규칙 평가 (cel)에 대해 구성된 모든 요청 필드 제외를 삭제합니다.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel"
다음을 바꿉니다.
PRIORITY: 규칙의 우선순위POLICY_NAME: 보안 정책의 이름