• Kong(V1.0.2) Securing the Admin API


    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查询我们的企业报价

  • 相关阅读:
    semantic-ui 容器与栅格
    semantic-ui 分段
    semantic-ui 分割线
    semantic-ui 图片
    semantic-ui 标题
    semantic-ui 图标
    semantic-ui 按钮
    PHP实现无限级分类
    后端修改配置文件后,前端刷新页面--搭配鉴权
    上线新系统后,统计从旧系统切换到新系统的数据
  • 原文地址:https://www.cnblogs.com/duanxz/p/10385192.html
Copyright © 2020-2023  润新知