IP 주소를 기반으로 필터링하는 Google Cloud Armor 보안 정책 규칙은 일반적으로 호출자의 클라이언트 IP를 사용합니다. 서비스가 서드 파티 콘텐츠 전송 네트워크(CDN)와 같은 중개자 뒤에 있는 경우 origin.ip 필드의 클라이언트 IP는 원래 클라이언트가 아닌 마지막 중개자의 IP 주소입니다.
사용자 IP 기능을 사용하면 업스트림 제공업체가 채우는 헤더에서 확인하도록 대체 필드 origin.user_ip를 구성할 수 있습니다. 그런 다음 보안 정책 규칙의 origin.user_ip 필드를 사용하여 이러한 기능에 사용되는 IP 주소를 지정할 수 있습니다. origin.user_ip를 사용하는 경우 보안 정책의 advancedOptionsConfig 필드에서 userIpRequestHeaders[] 옵션을 구성할 수 있습니다.
사용자 IP 주소 작동 방식
특정 요청 헤더에서 최종 사용자의 IP 주소를 추출하도록 Cloud Armor를 구성합니다. 이 값은 origin.user_ip 필드를 채우며, 이 필드는 보안 정책 규칙에서 사용할 수 있습니다.
userIpRequestHeaders[]에 지정된 헤더가 없거나 값이 유효한 IP 주소가 아닌 경우 Cloud Armor는 대신 클라이언트 IP 주소(origin.ip)로 대체합니다. 다음 예시에서는 기본 사례를 직접 비교합니다.
origin.ip != origin.user_ip
다음 예에서는 규칙 언어, Google Threat Intelligence, 주소 그룹에서 origin.user_ip를 사용하는 방법을 보여줍니다.
inIpRange
inIpRange(origin.user_ip, '9.9.9.0/24')
origin.user_ip와 함께 inIpRange를 사용하는 방법에 관한 자세한 내용은 속성을 참고하세요.
Google Threat Intelligence
evaluateThreatIntelligence('iplist-known-malicious-ips', origin.user_ip)
자세한 내용은 Google Threat Intelligence 적용을 참고하세요.
주소 그룹
evaluateAddressGroup('example-address-group', origin.user_ip)
자세한 내용은 주소 그룹 구성을 참고하세요.
조직 범위 주소 그룹
evaluateOrganizationAddressGroup('example-org-address-group', origin.user_ip)
자세한 내용은 조직 범위 주소 그룹 사용을 참고하세요.
권장사항
origin.user_ip는 신뢰할 수 없는 클라이언트가 조작할 수 있는 요청 헤더에서 확인되므로 트래픽이 신뢰할 수 있는 업스트림 소스에서 시작되는지 확인해야 합니다.
업스트림 소스를 검증하려면 규칙이 두 개 이상인 보안 정책을 만듭니다. 우선순위가 더 높은 첫 번째 규칙은 직계 클라이언트 IP(origin.ip)가 신뢰할 수 있는 업스트림 제공업체에 속하는지 확인합니다. 우선순위가 낮은 두 번째 규칙은 origin.user_ip 필드를 사용하여 의도한 로직을 적용합니다.
예를 들어 다음 두 가지 규칙이 포함된 정책을 만들 수 있습니다.
- 규칙 1:
evaluateThreatIntelligence('iplist-public-clouds', origin.ip) - 규칙 2:
inIpRange(origin.user_ip, '9.9.9.0/24')