本文介绍如何为云原生网关设置黑名单和白名单。

背景信息

IP黑名单和白名单是云原生网关提供的安全防护能力之一,负责控制请求的调用来源IP(支持IP段)。在网关场景中,您可以通过配置黑、白名单来拒绝或允许指定来源的API访问请求。

云原生网关支持在网关全局、域名和路由级别配置IP黑名单和白名单,满足精细化的访问控制诉求。

设置IP黑/白名单

  1. 登录MSE网关管理控制台
  2. 在左侧导航栏,选择云原生网关 > 网关列表,并在顶部菜单栏选择地域。
  3. 网关列表页面,单击目标网关名称。
  4. 在左侧导航栏,选择安全能力 > 黑/白名单
  5. 在页面左上角,单击创建,在创建页面,配置相关参数,然后单击保存并开启
    配置项 说明
    名称 自定义IP访问控制的名称。
    备注 对IP访问控制做备注。
    类型 按需选择IP访问控制的类型。
    • 白名单(允许特定IP访问):在网关场景只开放受信任来源IP访问。
    • 黑名单(禁止特定IP访问):在网关场景针对不友好访问执行来源IP封禁。
    生效粒度 IP访问控制的作用域。作用域的优先级从高到低依次为路由>域名>网关全局
    • 网关全局:作用于网关实例。
    • 域名:作用于指定域名。
    • 路由:作用于指定路由。
    IP地址/IP地址段 输入IP访问控制的目标IP地址或地址段。

配置示例

步骤一:创建一条Mock路由

  1. 登录MSE网关管理控制台
  2. 在左侧导航栏,选择云原生网关 > 网关列表,并在顶部菜单栏选择地域。
  3. 网关列表页面,单击目标网关名称。
  4. 在左侧导航栏,单击路由配置,然后在页面左上角,单击创建路由
  5. 创建路由面板,配置相关参数,然后单击保存并上线
    1. 请求信息页面,配置如下参数,然后单击下一步
      操作步骤,请参见新建路由规则
      配置项 描述
      路由名称 自定义路由名称。
      关联域名 选择在域名管理中创建的域名*
      匹配规则
      路径(Path) 设置匹配HTTP请求中的Path参数,选择精确匹配,即完全匹配,例如Path等于/user
      方法(Method) 设置匹配HTTP请求中的Method参数,不填表示匹配所有参数,支持选择多种HTTP方法。
      请求头(Header) 设置匹配HTTP请求中的Header参数,相同匹配规则时参数越多优先级越高。单击+添加请求头进行添加。
      请求参数(Query) 设置匹配HTTP请求中的Query参数,相同匹配规则时参数越多优先级越高。单击+添加请求参数进行添加。
      目标服务 选择当前路由的目标服务类型为Mock

      设置HTTP响应码响应内容

    2. 目标服务页面,选择当前路由的目标服务类型为Mock,并设置HTTP响应码响应内容

步骤二:测试Mock路由

执行以下命令,访问Mock路由。
curl 47.100.xx.xx/mock
测试结果如下,HTTP状态码成功响应。
{
  "code": 200,
  "data": {
    "message": "ok"
  },
  "HttpStatusCode": 200,
  "successResponse": 200
}

步骤三:设置IP地址黑名单

  1. 获取本机IP地址。
  2. 登录MSE网关管理控制台。添加本机IP地址,并开启状态,即可允许或限制本机访问MSE云原生网关。本文以设置IP地址黑名单为例。
    具体操作,请参见本文的设置IP黑/白名单
  3. 执行以下命令测试。
    curl -v 47.100.xx.xx/mock
    响应结果如下。
    *   Trying 47.100.xx.xx...
    * TCP_NODELAY set
    * Connected to 47.100.xx.128 (47.100.xx.xx) port 80 (#0)
    > GET /mock HTTP/1.1
    > Host: 47.100.xx.xx
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 403 Forbidden
    < content-length: 19
    < content-type: text/plain
    < date: Thu, 25 Aug 2022 09:43:43 GMT
    < server: istio-envoy
    <
    * Connection #0 to host 47.100.xx.xx left intact
    RBAC: access denied* Closing connection 0