1

是否有一些直接的方法可以通过请求属性或 URL 限制用户对 Google Compute Engine HTTP(S) 负载平衡器的访问?如果单个请求属性可以有数百个匹配的值,那么满足所需过滤器的请求可以传递到后端。

身份验证不是在那里可以使用的,因此云 IAP不是一个选项。

Cloud Armor 似乎处于测试阶段(它的自定义表达式处于私有测试阶段)。此外,尚不清楚它将如何对过滤后的传入请求计费:Cloud Armor 的传入请求费用为每百万 HTTP(S) 请求 0.75 美元。这是否包括那些被自定义规则阻止的请求?如果是这样,那么只需向负载均衡器发送请求,就很容易让 GCP 所有者花费大量资金。

Google Compute Engine HTTP(S) 负载均衡器有一个url-map,它可以解决问题,但它是有限的,在我的情况下似乎很难(我最好使用请求属性,而不是 URL 路径)。此外,如果启用用户定义的请求标头,它会遇到与 Cloud Armor 相同的计费问题,每百万 HTTP(S) 请求的定价为 0.75 美元。因此,只需向负载均衡器发送请求,就很容易让 GCP 所有者花费大量资金。

那么是否有一些直接的方法可以通过请求属性或 URL 来限制用户对 Google Compute Engine HTTP(S) 负载均衡器的访问,而不会有被多收费用的风险?

4

1 回答 1

0

不使用 Cloud Armor 的最接近的方法可能是使用Identity Aware Proxy。它基本上读取旨在识别用户的标头并对其进行身份验证。

根据您的问题,我的印象是您正在发送自己的:

如果单个请求属性可以有数百个匹配的值。

IAP 的问题在于,它只评估一组自定义的标头(不是您的),您必须在您的请求中包含并签名它们。

作为您提到的价格的旁注,仅在未启用Cloud Armor 时才会收取使用用户定义的请求标头的费用:

如果后端服务没有与之关联的 Google Cloud Armor 政策,则向使用用户定义的请求标头功能的后端服务发送的每百万个 HTTP(S) 请求的费用为 0.75 美元。

使用这些当然会对计费和运营开销产生影响,因为您需要在自己的后端验证它们。

最后,虽然 Cloud Armor 似乎旨在解决这个特定的用例,但您可能想尝试并要求直接在 HTTP(S) 负载均衡器中提供此功能。这是 Issue Tracker 上功能请求的链接

于 2019-12-02T13:10:16.690 回答