管理API安全保护详解 - 玩转Kong网关

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

网络层访问限制

最小监听范围

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

admin_listen = 127.0.0.1:8001

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

3/4层网络控制

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

# 假设Kong正在侦听下面定义的地址,定义为一个 /24 CIDR 块
# 在此范围内,只有少数几个选定的主机应该具有访问权限

$ grep admin_listen /etc/kong/kong.conf
admin_listen 10.10.10.3:8001

# 明确地允许端口8001上来自Kong节点本身的TCP包
# 如果没有从节点发送Admin API请求,就没有必要这样做
$ iptables -A INPUT -s 10.10.10.3 -m tcp -p tcp --dport 8001 -j ACCEPT

# 明确地允许下面地址的TCP请求到8001端口
$ iptables -A INPUT -s 10.10.10.4 -m tcp -p tcp --dport 8001 -j ACCEPT
$ iptables -A INPUT -s 10.10.10.5 -m tcp -p tcp --dport 8001 -j ACCEPT

# 除了上面的IP列表,将所有请求到端口8001上的TCP包删除
$ iptables -A INPUT -m tcp -p tcp --dport 8001 -j DROP

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

Kong API 环回接口

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

# 假设Kong已经定义 admin_listen 为127.0.0.1:8001
# 可以通过地址`/admin-api` 访问Admin API 

$ curl -X POST http://localhost:8001/services \
  --data name=admin-api \
  --data host=localhost \
  --data port=8001

$ curl -X POST http://localhost:8001/services/admin-api/routes \
  --data paths[]=/admin-api

# 我们现在可以通过代理服务器透明地访问管理API
$ curl localhost:8000/admin-api/apis
{
   "data":[
      {
         "uris":[
            "\/admin-api"
         ],
         "id":"653b21bd-4d81-4573-ba00-177cc0108dec",
         "upstream_read_timeout":60000,
         "preserve_host":false,
         "created_at":1496351805000,
         "upstream_connect_timeout":60000,
         "upstream_url":"http:\/\/localhost:8001",
         "strip_uri":true,
         "https_only":false,
         "name":"admin-api",
         "http_if_terminated":true,
         "upstream_send_timeout":60000,
         "retries":5
      }
   ],
   "total":1
}

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

自定义Nginx配置

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

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

rbac权限管理

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

穿梭机:开源API网关系统(Kong教程)入门到精通

你可能感兴趣的:(管理API安全保护详解 - 玩转Kong网关)