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

Cloud 端口443上的Google云过滤应用程序(防火墙优先级问题),cloud,google-compute-engine,google-kubernetes-engine,firewall,Cloud,Google Compute Engine,Google Kubernetes Engine,Firewall,更具体地说,我需要帮助理解如何创建谷歌云防火墙规则,以便允许从特定IP地址访问特定环境,以及从同一端口上的公共互联网访问访问其他所有内容 在我的例子中,我有一个GKE,其中有许多pod,它们通过特定的服务访问,并具有自己的静态公共IP地址 其中一个是我的主生产环境,但其他的是我的暂存环境,我在其中部署我的更改并在它们公开之前测试它们 问题是,当我尝试添加防火墙规则以匹配该环境,并通过端口443上的特定IP(我的静态IP)访问时,即使我的优先级低于防火墙规则,它也不会优先,因为防火墙规则声明每个人

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

在我的例子中,我有一个GKE,其中有许多pod,它们通过特定的服务访问,并具有自己的静态公共IP地址

其中一个是我的主生产环境,但其他的是我的暂存环境,我在其中部署我的更改并在它们公开之前测试它们

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

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

防火墙规则生成:入口-优先级1000,允许, tcp:443,80,0.0.0.0/0

防火墙规则环境:入口-优先级900,允许,tcp:443,80, x、 x.x.x(我的公共IP)


我错过了什么?其他人在处理这个问题上有困难吗?谢谢。

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

您可以使用
nginx-ingres
公开应用程序,还可以使用所需的带有IP CIDR的注释来限制对服务的访问

但是,要将非白名单IP重定向到默认服务,您应该使用另一个名为的注释

例如:

假设您有两项服务:prod svcdev svc 在下面的入口示例中,您允许注释
nginx.ingres.kubernetes.io/whitelist source range
中的IP访问
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

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

我想为您提供另一种方法来实现您的目标

您可以使用
nginx-ingres
公开应用程序,还可以使用所需的带有IP CIDR的注释来限制对服务的访问

但是,要将非白名单IP重定向到默认服务,您应该使用另一个名为的注释

例如:

假设您有两项服务:prod svcdev svc 在下面的入口示例中,您允许注释
nginx.ingres.kubernetes.io/whitelist source range
中的IP访问
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

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

我尝试过这种方法,它对我有效,谢谢,这是一个错误,为什么我不能在防火墙部分解决这个问题,但它就是这样。我尝试过这种方法,它对我有效,谢谢,这是一个问题,为什么我不能在防火墙部分解决这个问题,但它是什么。