一、为什么要对admin-api权限管控
kong网关在启动后会暴露两个http的端口。一个是8000,这个访问网关的入口,配在网关上的服务都是通过这个端口访问,服务可以配置各种各样的插件,包括鉴权,限流等。
另一个是8001,为admin-api,我们就是通过该接口对kong网关进行增删查改,但是问题是这个端口是没有进行权限管控的,也就是说,如果一不小心暴露出去,任何人都可以通过该接口随意修改kong网关的数据,这显然是一个不小的隐患。
当然在容器化部署的情况下,我们可以不对外暴露端口,在部署时仅部署集群ip,需要调用admin-api的应用可以通过服务名调用的方式来调用,这样可以防止该k8s集群外的主机调用admin-api。缺点自然也很明显,万一不法分子入侵到k8s集群里的任何一台机子上,都可以调用admin-api。
二、如何通过回环代理方式进行权限管控
在官方的教程里有回环的方式,就是将8001的对外广播关闭,然后将8001的端口当成一个服务配置到kong网关上,然后我们就可以通过8000/服务名的方式来访问admin-api,并随意增加插件。这样做还有一个额外的好处,一般k8s部署kong的话会部署两个kong的服务,一个暴露8001端口,一个暴露8000端口(因为一个服务职能暴露一个端口),将8001代理到8000后,我们只需要一个服务就可以了。
下面提供代理,并配置相应权限管控插件的shell脚本,可以在k8s命令行执行,直接输出consumerKey: