Kong的Admin API为服务、路由、插件、用户和凭证的管理和配置提供了一个RESTFUL接口。因为可以对Kong进行完全控制,因此确保Admin API的安全访问非常重要。

网络层访问限制

最小监听范围

自0.12.0版本发布以来,默认情况下,Kong只接受本地接口的请求,admin_listen默认值:

  1. admin_listen = 127.0.0.1:8001

如果您更改了此值,请始终确保将侦听的范围减至最少,以避免将管理API暴露给第三方损害整个Kong集群的安全。例如,避免将Kong绑定到所有接口0.0.0.0:8001

3/4层网络控制

在管理API必须公开于本地主机接口之外的情况下,网络安全最佳实践要求尽可能限制网络层访问。考虑这样一种环境,Kong监听私有网络接口,但只能被IP范围的一小部分访问。在这种情况下,基于主机的防火墙(例如iptables)在限制输入流量范围方面非常有用。例如:

  1. $ grep admin_listen /etc/kong/kong.conf
  2. admin_listen 10.10.10.3:8001
  3. $ iptables -A INPUT -s 10.10.10.3 -m tcp -p tcp --dport 8001 -j ACCEPT
  4. $ iptables -A INPUT -s 10.10.10.4 -m tcp -p tcp --dport 8001 -j ACCEPT
  5. $ iptables -A INPUT -s 10.10.10.5 -m tcp -p tcp --dport 8001 -j ACCEPT
  6. $ iptables -A INPUT -m tcp -p tcp --dport 8001 -j DROP

鼓励使用其他控件,比如类似acl网络设备级别应用

Kong API 环回接口

Kong的路由设计允许它充当管理API本身的代理。通过这种方式,Kong本身可以用于为Admin API提供细粒度的访问控制。这需要创建新服务,该服务将admin_listen地址定义为服务的url

  1. # 假设Kong已经定义 admin_listen 为127.0.0.1:8001
  2. # 可以通过地址`/admin-api` 访问Admin API
  3. $ curl -X POST http://localhost:8001/services \
  4. --data name=admin-api \
  5. --data host=localhost \
  6. --data port=8001
  7. $ curl -X POST http://localhost:8001/services/admin-api/routes \
  8. --data paths[]=/admin-api
  9. # 我们现在可以通过代理服务器透明地访问管理API
  10. $ curl localhost:8000/admin-api/apis
  11. {
  12. "data":[
  13. {
  14. "uris":[
  15. "\/admin-api"
  16. ],
  17. "id":"653b21bd-4d81-4573-ba00-177cc0108dec",
  18. "upstream_read_timeout":60000,
  19. "preserve_host":false,
  20. "created_at":1496351805000,
  21. "upstream_connect_timeout":60000,
  22. "upstream_url":"http:\/\/localhost:8001",
  23. "strip_uri":true,
  24. "https_only":false,
  25. "name":"admin-api",
  26. "http_if_terminated":true,
  27. "upstream_send_timeout":60000,
  28. "retries":5
  29. }
  30. ],
  31. "total":1
  32. }

至此,就可以给Admin API应用Kong的安全控制(例如基本或密钥身份验证、IP限制或访问控制列表)。

自定义Nginx配置

Kong作为HTTP守护进程与Nginx紧密结合,因此可以使用定制的Nginx配置集成到环境中。可以利用本机Nginx授权和身份验证机制、ACL模块等对Kong Admin API进行控制。

有关将Kong集成到自定义Nginx配置的更多信息,请参阅自定义Nginx配置和嵌入Kong

rbac权限管理

仅在企业订阅时才能使用此功能。所以,也就没什么好说的了。