【问题标题】:How to use Google Cloud Armor with to whitelist only a few IPs on GKE?如何使用 Google Cloud Armor 将 GKE 上的几个 IP 列入白名单?
【发布时间】:2019-03-13 15:18:49
【问题描述】:

我们正在尝试基于此 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"}}'  

我忽略了什么?

谢谢!

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine google-cloud-networking google-cloud-armor


    【解决方案1】:

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

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

    根据Cloud Armor Security Policies 上的 GCP 文档

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

    我还注意到您的场景与您共享的同一文档中描述的第一个用例“Use case 1: Limiting access to the GCP HTTP(S) load balancer”非常相似。

    根据文档,要创建此配置,请按照下列步骤操作:

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

    【讨论】:

    • 我不能将它应用于项目中的所有负载均衡器吗?我不能将它应用于整个组织或项目是没有意义的。必须指定 GKE 和开发人员在 staging 测试中一直动态创建和销毁的目标是多么乏味和繁琐。
    • 我在此答案中添加了完成上述步骤的命令:stackoverflow.com/a/62675760/2609980
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多