Introduction

Kong的Admin API为Services, Routes, Plugins, Consumers, and Credentials的管理和配置提供了一个RESTful接口。因为这个API允许对Kong进行完全控制,所以确保这个API能够安全的访问非常重要。本文描述了保护管理API的几种可能方法。

网络层访问限制

Minimal Listening Footprint(很少听足迹

默认情况下,从它的0.12.0版本开始,Kong将只接受来自本地接口的请求,这在它的默认admin_listen值中指定:

admin_listen = 127.0.0.1:8001

如果您更改此值,请始终确保将侦听占用最小化,以避免将管理API暴露给第三方,这可能严重损害整个Kong集群的安全性。例如,通过使用0.0.0.0:8001这样的值,避免将Kong绑定到所有接口。

Layer 3/4 Network Controls层3/4网络控制

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

# assume that Kong is listening on the address defined below, as defined as a
# /24 CIDR block, and only a select few hosts in this range should have access
grep admin_listen /etc/kong/kong.conf
admin_listen 10.10.10.3:8001 # explicitly allow TCP packets on port 8001 from the Kong node itself
# this is not necessary if Admin API requests are not sent from the node
iptables -A INPUT -s 10.10.10.3 -m tcp -p tcp --dport 8001 -j ACCEPT

# explicitly allow TCP packets on port 8001 from the following addresses
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

# drop all TCP packets on port 8001 not in the above IP list
iptables -A INPUT -m tcp -p tcp --dport 8001 -j DROP

我们鼓励使用其他控件,如在网络设备级别应用的类似acl,但不属于本文的范围。

Kong API Loopback(API回送)

Kong的路由设计允许它充当管理API本身的代理。通过这种方式,可以使用Kong本身为管理API提供细粒度的访问控制。这样的环境需要引导一个新服务,该服务将admin_listen地址定义为服务的url。例如:

# assume that Kong has defined admin_listen as 127.0.0.1:8001, and we want to
# reach the Admin API via the url `/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 # we can now transparently reach the Admin API through the proxy server
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
}

From here, simply apply desired Kong-specific security controls (such as basic or key authentication, IP restrictions, or access control lists) as you would normally to any other Kong API.

Custom Nginx Configuration

Kong作为一个HTTP守护进程与Nginx紧密耦合,因此可以使用定制的Nginx配置集成到环境中。通过这种方式,具有复杂安全/访问控制需求的用例可以使用Nginx/OpenResty的全部功能来构建服务器/位置块,以便在必要时容纳管理API。这允许此类环境利用本地Nginx授权和身份验证机制、ACL模块等,此外还提供可在其上构建自定义/复杂安全控制的OpenResty环境。
有关将Kong集成到定制Nginx配置中的更多信息,请参见Custom Nginx configuration & embedding Kong

Role Based Access Control(基于角色的访问控制)

此功能仅在企业版中可用。

企业用户可以配置基于角色的访问控制,以确保对管理API的访问安全。RBAC允许基于用户角色和权限模型对资源访问进行细粒度控制。用户被分配到一个或多个角色,每个角色又拥有一个或多个授予或拒绝访问特定资源的权限。通过这种方式,可以加强对特定管理API资源的细粒度控制,同时扩展以允许复杂的、特定于大小写的使用。

如果您不是Kong企业客户,您可以通过以下方式contacting us查询我们的企业报价

Kong(V1.0.2) Securing the Admin API的更多相关文章

  1. Kong(V1.0.2)Network & Firewall

    介绍 在本节中,您将找到关于Kong推荐的网络和防火墙设置的摘要.PortsKong使用多个连接用于不同的目的. 代理 管理api Proxy 代理端口是Kong接收传入流量的地方.有两个端口具有以下 ...

  2. Kong(v1.0.2)代理参考

    介绍 在本文中,我们将通过详细解释Kong的路由功能和内部工作原理来介绍它的代理功能. Kong公开了几个接口,可以通过两个配置属性进行调整: proxy_listen,它定义了一个地址/端口列表,K ...

  3. Kong(V1.0.2) Health Checks and Circuit Breakers Reference

    介绍 您可以让Kong代理的API使用ring-balancer,通过添加包含一个或多个目标实体的 upstream 实体进行配置,每个 target指向不同的IP地址(或主机名)和端口.ring-b ...

  4. Kong(V1.0.2)loadbalancing

    介绍 Kong为多个后端服务提供了多种负载平衡请求的方法:一种简单的基于DNS-based的方法,以及一种更动态的环形负载均衡器ring-balancer,它还允许在不需要DNS服务器的情况下使用se ...

  5. Kong(V1.0.2) Clustering Reference

    介绍 Kong集群允许您通过添加更多的机器来处理更多的传入请求来水平扩展系统.它们将共享相同的配置,因为它们指向相同的数据库.指向相同数据存储的Kong节点将是相同Kong集群的一部分. 您需要在Ko ...

  6. Kong安装教程(v1.0.2)

    使用的软件 Unbuntu 虚拟机(有自己的服务器更好) PostgreSQL kong kong-dashboard docker spring boot 安装 PostgreSQL kong 需要 ...

  7. WebDriver基本API使用(基于Java)V1.0

    WebDriver基本API使用(基于Java)V1.0http://www.docin.com/p-803032877.html

  8. 基于swoole框架hyperf开发的纯API接口化的后台RBAC管理工具hyperfly@v1.0.0发布

    hyperfly@v1.0.0发布 本文地址http://yangjianyong.cn/?p=323转载无需经过作者本人授权 github地址:https://github.com/vankour/ ...

  9. kong配置service和route实现简单API代理

    目录 通过konga连接kong实现API接口代理 1. ADD NEW SERVICE 2. ADD ROUTE 3. 验证API 代理 浏览器验证 请求kong api kong使用Admin A ...

随机推荐

  1. PHP下载微信头像

    public function downloadPic($openid='',$headimgurl='') { $header = array( 'User-Agent: Mozilla/5.0 ( ...

  2. eclipse 中git无法https下载提交代码

    使用eclipse下载github代码时,报错信息为cannot open git-upload-pack,如下图: 其实就是ssl协议的版本不对, 2018年2月8日后禁止通过TLSv1.1协议连接 ...

  3. 【oracle】ORA-12541:TNS:no listener

    查看监听文件 locate listener.ora 切换到数据库用户 su - ora11g 查看监听状态 状态显示,监听没有打开 开启监听,start后面加上你需要启动的监听名字(因为listen ...

  4. centos7.5 时间设置

    # ----- 设置时间同步+时区(上海) ----- rpm -qa ntp || yum -y install ntp systemctl enable ntpd timedatectl set- ...

  5. hyperscan应用参数

    >>hs_compile_ext_multi 使用额外的参数编译表达式, 额外的参数包括: MIN_OFFSET 距离开始的最小偏移开始匹配 MAX_OFFSET 距离开始的最大偏移结束匹 ...

  6. js数组操作-最佳图解

    js数组操作-最佳图解

  7. CF867E: Buy Low Sell High(贪心, STL) (hdu6438)

    Description 有nn个城市,第ii个城市商品价格为aiai​,从11城市出发依次经过这nn个城市到达n n城市,在每个城市可以把手头商品出售也可以至多买一个商品,问最大收益. Input 第 ...

  8. UML作业第三次:分析《书店图书销售管理系统》

    分析图书销售管理系统 一.概览 PlantUML类图语法学习小结 <书店图书销售管理>的类图元素 绘制类图脚本程序 绘制的类图 二.PlantUML类图语法 1.类之间的关系绘制 示例: ...

  9. ssh 端口更改或ssh 远程接不上的问题(尤其是国外服务器)

    问题: Connecting to 149.*.*.*:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]' ...

  10. useful urls

    数据挖掘技术: http://ddl.escience.cn/f/IwoF?rid=8188575 李航 统计学习方法: http://ddl.escience.cn/f/Iwn0