0%

kong admin ui Custom Headers使用说明 给你的kong加个密码

Kong默认的管理接口,未加任何安全校验,如果暴露在公网,随时可能被坏人发现,随意修改我们的配置。 Kong admin ui本身是个纯前端项目,没有额外的安全措施来保护您的Kong,未来也不可能加上后端代码实现账户授权。 Custom Headers功能,就是为了解决安全问题而开发的。

原理

Kong本身自带授权认证插件,如Basic Authentication,我们通过kong代理kong admin api,再配上Basic Authentication插件,访问kong admin api时,需要带上账号密码。根据Basic Authentication规范,账号密码就是base64编码后,通过header里的Authorization字段传输。而Custom Headers功能会在给Kong admin api接口发送请求时,加上您指定的header,所以可以实现带密码访问kong admin api,解决了安全问题。

配置

假设部署kong的部署地址是 http://192.168.0.205/, admin api地址是 http://192.168.0.205:8001/ ,我们接下来把http://192.168.0.205/manage 转到 http://192.168.0.205:8001/ ,并配上Basic Authentication.

Service和Route配置

我们先使用http://192.168.0.205:8001/ 配置,完成后再禁止admin api外部访问 image 创建Service: image 创建Route: image 完成上面操作后,可以试试浏览器打开 http://192.168.0.205/manage ,可以访问admin api了。

Consumer 配置

Basic Authentication 需要Credential才可以访问,Credential属于某个Consumer,一个Consumer可以有多个Credential。 先创建 Consumer image 再创建一个Basic Auth Credential,输入账号密码,这个账号密码就是Basic Authentication需要的。 image

Basic Authentication 配置

image 完成配置以后,再用浏览器打开 http://192.168.0.205/manage 提示输入账号密码,刚刚我们配的都是admin。 Basic Authentication插件会校验header里的Authorization字段,值的格式是Basic base64(账号:密码) admin:admin base64以后得到的值是YWRtaW46YWRtaW4=,所以在Kong Admin UI里使用,Custom Headers字段应该填 {"Authorization":"Basic YWRtaW46YWRtaW4="} image 如果其他api没有用到Consumer,配置就到此结束了,接下来配置改kong的配置文件,限制本机外的ip无法访问admin api即可。但如果其他服务也有Consumer,那么需要用ACL限制一下指定的Consumer才能访问admin api,因为默认情况下,所有Consumer都能访问。

ACL配置

ACL黑白名单配置的是Consumer group,所以需要先把我们指定的Consumer加到一个group里。 image ACL Group这个功能是我在写这篇教程时加的,老版本的用户要更新下。 再配置ACL: image config.whitelist输入group. 现在,只有指定admin可以访问了。