如何使用Google Cloud Armor将GKE上的几个IP列入白名单?

时间:2018-10-08 22:36:58

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

我们正在尝试阻止所有非集群流量,但基于此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"}}'  

我俯瞰什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

对于那些为此感到苦恼的人,请先检查您的日志,然后确认您的IP地址没有旋转。我当时在一个公开的IP上,而该IP却是未知的。

答案 1 :(得分:0)

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

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)负载平衡器的后端服务相关联。