5

我们正在尝试阻止所有非集群流量,除了一些基于此 Cloud Armor walk through的外部 IP 地址。

GKE 集群可识别规则,但仍会阻止允许的 IP。以下是遵循的步骤:

1)创建策略+规则

gcloud beta compute security-policies create allow-team-only \
    --description "Cloud Armor deny non-team IPs"


gcloud beta compute security-policies rules create 1000 \
    --security-policy allow-team-only \
    --description "Deny traffic from 0.0.0.0/0." \
    --src-ip-ranges "0.0.0.0/0" \
    --action "deny-404"


gcloud beta compute security-policies rules create 999 \
    --security-policy allow-team-only \
    --description "Allow traffic from <IP ADDRESS>." \
    --src-ip-ranges "<IP ADDRESS>/32" \
    --action "allow"    

2) 将规则应用于我们的服务,这些服务位于端口 8080

metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"ports": {"8080":"allow-team-only"}}'  

我在看什么?

谢谢!

4

2 回答 2

4

根据您的策略和规则,您创建了两个策略,其中之一是拒绝所有流量。对于这条规则,我有两个观察

1)您已经创建了数字 1000,并且由于它拒绝了所有未来添加的数字为 1000+ 的规则,因此将无法正常工作。因为所有流量都将匹配 0.0.0.0/0 并且不会检查 1000+ 个数字规则。2) 根据 GCP,您可以使用默认规则并将操作更改为拒绝(失败关闭)。

根据Cloud Armor 安全策略的 GCP 文档

每个 Cloud Armor 安全策略都包含一个默认规则,如果没有匹配更高优先级的规则或策略中没有其他规则,则匹配该默认规则。默认规则自动分配优先级 2147483647(最大 int32),并且始终存在于 Cloud Armor 安全策略中。默认规则不能删除,但可以修改。默认规则的默认操作是允许 (fail-open),但您可以将操作更改为拒绝 (fail-close)。

我还注意到您的场景与您共享的同一文档中描述的第一个用例“用例 1:限制对 GCP HTTP(S) 负载平衡器的访问”非常相似。

根据文档,要创建此配置,请执行以下步骤:

1) 创建 Cloud Armor 安全策略。
2) 在 Cloud Armor 安全策略中,添加一条列入白名单的规则作为第一条规则。此规则具有“允许”描述。
3) 将策略中的默认规则从允许规则修改为拒绝规则。默认规则管理与上述任何规则都不匹配的流量。这是政策中的最后一条规则。将规则从允许更改为拒绝会阻止所有并非源自白名单的流量。
4) 将此策略与 HTTP(S) 负载平衡器的后端服务相关联。

于 2018-10-09T17:17:47.270 回答
2

对于那些为此苦苦挣扎的人,请先检查您的日志,然后确认您的 IP 地址没有轮换。我在一个有轮换 IP 的公共网络上,我对此一无所知。

于 2018-10-08T23:34:05.753 回答