Google 443端口上的云过滤应用(防火墙优先级问题)

Google cloud filtered application on port 443 (firewall priority problem)

更具体地说,我需要帮助了解如何创建 Google 云防火墙规则,以允许从特定 IP 地址访问特定环境以及从 public 互联网访问其他所有内容在同一端口上访问。

就我而言,我有一个 GKE,我有很多 pods 可以通过特定服务使用它们自己的静态 public IP 地址进行访问。

其中一个是我的主要生产环境,但其他是我的暂存环境,我在其中部署我的更改并在它们运行之前对其进行测试public。

问题是,当我尝试添加防火墙规则以匹配该环境并通过端口 443 上的特定 IP(我的静态 IP)访问时,即使我的优先级低于防火墙,它也不会优先规定每个人 0.0.0.0/0 都可以访问端口 443 上的生产环境。

我更改的是优先级低于默认值 1000(我的生产防火墙优先级规则是 1000),但它不起作用。环境可以 publicly 访问。

firewall rule production: Ingress - priority 1000, allowed, tcp:443,80, 0.0.0.0/0

firewall rule env: Ingress - priority 900, allowed, tcp:443,80, x.x.x.x (my public IP)

我在这里错过了什么?有没有其他人有麻烦处理这个?谢谢

我想给你另一种方法来实现你想要的。

您可以使用 nginx-ingress 来公开您的应用程序,还可以使用带有您想要的 IP CIDR 的 whitelist 注释来限制对您的服务的访问。

但是,要将 non-whitelist ips 重定向到默认服务,您应该使用另一个名为 default-backend.

的注释

示例:

假设您有 2 个服务:prod-svcdev-svc 在下面的入口示例中,您允许注释 nginx.ingress.kubernetes.io/whitelist-source-range 中的 ips 访问 dev-svc。否则,如果连接来自注释中未列出的其他 ip,请求将被重定向到 prod-svc.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: "/"
    nginx.ingress.kubernetes.io/custom-http-errors: '403'
    nginx.ingress.kubernetes.io/default-backend: prod-svc
    nginx.ingress.kubernetes.io/whitelist-source-range: YOUR_PUBLIC_IP/32
spec:
  rules:
  - host: myapp.mydomain.com
    http:
      paths:
      - path: "/"
        backend:
          serviceName: dev-svc
          servicePort: 80

通过这种方式,您可以控制您的应用程序,并获得更大的工作灵活性。