如何在Azure Kubernetes服务上向公众隐藏Django管理员,同时通过后门保持访问权限
我正在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的不同群集上,但都连接到相同的数据存储。这绝对是过火
- 完全屏蔽管理门户网站,使其不受公众访问(例如,普通Joe无法访问
)mysite.com/admin
- 允许通过某些后门(例如专用网络、跳转主机等)进行访问
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只能通过源范围访问