POST 본문 콘텐츠 파싱

이 페이지에는 Google Cloud Armor 보안 정책과 함께 사용할 수 있는 선택적 기능인 POST 본문 콘텐츠 파싱을 구성하는 방법에 관한 정보가 포함되어 있습니다.

기본적으로 Google Cloud Armor는 사전 구성된 WAF 규칙의 서명에 대해 POST 본문의 전체 콘텐츠를 균일한 문자열(본문 크기 제한사항 적용)로 평가합니다. JSON과 같은 대체 인코딩이 포함된 요청의 경우 (사용자가 지정하지 않은) 메시지의 구조적 구성요소가 사전 구성된 WAF 서명에 대한 일치를 트리거할 수 있습니다. 노이즈를 방지하고 거짓양성 위험을 줄이려면 보호된 워크로드가 다음을 수행하는 경우 지원되는 모든 콘텐츠 유형에 대체 파싱을 사용 설정하도록 Google Cloud Armor를 구성하는 것이 좋습니다.

  • REST API 제공
  • GraphQL 사용
  • JSON 인코딩 콘텐츠가 있는 요청 수신

각 보안 정책에 대한 POST 요청의 JSON 본문 콘텐츠 파싱을 사용 설정 또는 중지할 수 있습니다. Content-Type 헤더가 application/json으로 설정된 경우 Google Cloud CLI에서 --json-parsing 플래그를 사용합니다.

기본적으로 이 옵션은 사용 중지되어 있습니다. 이 플래그의 문법은 다음과 같습니다.

--json-parsing=[STANDARD | STANDARD_WITH_GRAPHQL | DISABLED]

플래그는 gcloud compute security-policies update에서만 사용할 수 있습니다. 파일에 보안 정책을 만들고 해당 파일을 가져오지 않는 한 이 옵션으로 새 보안 정책을 만들 수 없습니다. 자세한 내용은 보안 정책 가져오기를 참조하세요.

JSON 파싱 사용

다음 예에서는 대체 파싱이 적용되는 커스텀 Content-Type 헤더 값 목록을 구성합니다. 다음 예에서는 보안 정책 POLICY_NAME을 업데이트하여 JSON 파싱을 사용 설정하고 콘텐츠 유형 application/json, application/vnd.api+json, application/vnd.collection+json, application/vnd.hyper+json을 지정합니다.

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD \
    --json-custom-content-types "application/json,application/vnd.api+json,application/vnd.collection+json,application/vnd.hyper+json"

GraphQL 파싱 사용

GraphQL 파싱을 구성하려면 다음 예시와 같이 보안 정책을 업데이트하여 --json-parsing 플래그를 STANDARD_WITH_GRAPHQL로 설정합니다.

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD_WITH_GRAPHQL

로깅

Google Cloud Armor 보안 정책에 대해 평가되는 각 HTTP(S) 요청은 Cloud Logging을 통해 로깅됩니다. 로그는 적용된 보안 정책의 이름, 일치 규칙, 규칙 적용 여부와 같은 세부정보를 제공합니다. 새 백엔드 서비스 리소스의 요청 로깅은 기본적으로 중지되어 있습니다. Google Cloud Armor 요청이 로깅되도록 하려면 보안 정책으로 보호되는 각 백엔드 서비스에 HTTP(S) 로깅을 사용 설정해야 합니다. 자세한 내용은 전역 외부 애플리케이션 부하 분산기 로깅 및 모니터링을 참조하세요.

제한사항

JSON 파싱을 구성할 때 다음 제한사항을 고려하세요.

  • POST 본문 검사는 처음 8KB로 제한됩니다. JSON 콘텐츠가 8KB보다 큰 경우 Google Cloud Armor는 사전 구성된 WAF 규칙으로 검사된 콘텐츠의 초기 사용분 8KB에 JSON 파싱을 적용합니다.
  • JSON 파서가 어떤 결과도 반환하지 않으면 URI 파싱이 시도될 수 있습니다. URI 파서가 이름-값 파라미터를 반환하지 않거나 이름-값 파라미터의 일부만 반환하는 경우 전체 또는 부분 문자열이 검사의 파라미터 이름으로 처리될 수 있습니다.

다음 단계