如何在GCP Cloud Armor中拒绝主域名并允许指定Web服务?
GCP Cloud Armor规则配置指导:拒绝主域名访问并允许指定接口
现有配置的问题
- 路径匹配格式错误:
request.path仅匹配URL的路径部分(如/或/v1/teststudio/developer),不能包含完整域名和协议,现有规则中request.path.matches('https://mma.mydomain.com/')写法无效。 - 路径拼写不一致:规则中使用
/v1/devstudio/developer,但实际需要允许的路径是/v1/teststudio/developer(devstudio应为teststudio)。 - 未限制HTTP请求方法:现有规则未指定允许的HTTP方法,会导致该路径下所有方法都被允许,不符合需求中仅开放POST/GET/PATCH等特定方法的要求。
- 路径匹配与描述不符:规则32的匹配路径是
/v1/devstudio/developer,但描述是允许/v1/teststudio/developer/app,路径不匹配。
正确规则配置示例
Cloud Armor规则按优先级数字从小到大执行(数字越小优先级越高),需先配置允许特定路径+方法的规则,最后配置拒绝所有其他请求的规则(包括根路径/)。以下是符合需求的规则:
# 允许 /v1/teststudio/developer 的 POST/GET/PATCH 请求 Allow request.path.matches('/v1/teststudio/developer') && (request.method.matches('POST') || request.method.matches('GET') || request.method.matches('PATCH')) Allow specified methods for /v1/teststudio/developer 10 # 允许 /v1/teststudio/developer/app 的 POST/GET 请求 Allow request.path.matches('/v1/teststudio/developer/app') && (request.method.matches('POST') || request.method.matches('GET')) Allow specified methods for /v1/teststudio/developer/app 20 # 拒绝所有其他请求(包括访问根路径 / 的请求) Deny true Deny all other requests (including root domain) 30
规则说明
- 优先级顺序:允许规则的优先级(10、20)高于拒绝规则(30),确保符合条件的请求先被允许,不符合的再被拒绝。
- 路径匹配:使用正确的路径部分(不含域名和协议),确保与目标接口路径一致。
- 方法限制:通过
&&和||组合条件,仅开放需求中指定的HTTP方法。 - 最终拒绝规则:使用
true匹配所有未被前序规则允许的请求,包括直接访问根路径https://mma.mydomain.com/的请求。
内容的提问来源于stack exchange,提问作者Kaushal
相关产品推荐
相关产品推荐

