Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Azure Kubernetes服务上向公众隐藏Django管理员,同时通过后门保持访问权限_Django_Azure_Kubernetes_Django Admin - Fatal编程技术网

如何在Azure Kubernetes服务上向公众隐藏Django管理员,同时通过后门保持访问权限

如何在Azure Kubernetes服务上向公众隐藏Django管理员,同时通过后门保持访问权限,django,azure,kubernetes,django-admin,Django,Azure,Kubernetes,Django Admin,我正在Azure Kubernetes服务上运行Django应用程序,出于安全目的,我希望执行以下操作: 完全屏蔽管理门户网站,使其不受公众访问(例如,普通Joe无法访问mysite.com/admin) 允许通过某些后门(例如专用网络、跳转主机等)进行访问 一种情况是运行两个完全独立的服务:1)应用程序的主要API部分,它只是主代码库,管理员被禁用。这是公开的。以及2)在启用了管理功能的防火墙后面的私有站点。每个都可以位于具有不同FQDN的不同群集上,但都连接到相同的数据存储。这绝对是过火

我正在Azure Kubernetes服务上运行Django应用程序,出于安全目的,我希望执行以下操作:

  • 完全屏蔽管理门户网站,使其不受公众访问(例如,普通Joe无法访问
    mysite.com/admin
  • 允许通过某些后门(例如专用网络、跳转主机等)进行访问
一种情况是运行两个完全独立的服务:1)应用程序的主要API部分,它只是主代码库,管理员被禁用。这是公开的。以及2)在启用了管理功能的防火墙后面的私有站点。每个都可以位于具有不同FQDN的不同群集上,但都连接到相同的数据存储。这绝对是过火了——必须有一种方法将所有东西都保存在集群中

我认为可能有一种方法可以配置Azure网络层来阻止/允许来自特定IP范围的流量,并在每个端点的基础上进行(例如,
mysite.com/admin
mysite.com/api/1/test
)。或者,这在每个子域级别上是可行的(例如,
api.mysite.com/anything
admin.mysite.com/anything

这在Kubernetes入口层也是可行的,但我不知道如何实现


满足这两项要求的最简单方法是什么?

您可以在入口级别管理限制:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.0.XXX, 192.175.2.XXX"
  name: staging-ingress
  namespace: default
spec:
  rules:
  - host: test.example.io
    http:
      paths:
      - backend:
          serviceName: service-name
          servicePort: 80
  tls:
  - hosts:
    - test.example.io
    secretName: tls-cert
您可以白名单的IP地址,允许特定的路径来解决您的后门问题。另一方面,您可以创建另一个入口规则,删除公共访问的注释

对于特定路径:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.0.XXX, 192.175.2.XXX"
  name: staging-ingress
  namespace: default
spec:
  rules:
  - host: test.example.io
    http:
      paths:
      - path : /admin
        backend:
          serviceName: service-name
          servicePort: 80
  tls:
  - hosts:
    - test.example.io
    secretName: tls-cert
test.example.io/admin只能通过源范围访问