【Azure API 管理】API Management service (APIM) 如何实现禁止外网访问

问题描述

API Management service 设置禁止外网访问,请求通过外网(Internet)将无法解析到APIM的网关地址,只能通过APIM所集成的内网(Virtual Network)来访问?

 

问题解答

API Management Service有可以将整个APIM都保护中内部网络访问的功能,也可以针对某些敏感数据的API进行特殊设定,通过访问策略来实现特定IP地址的访问。

 

方式一:把APIM整个服务集成在内部虚拟网络中

可以将 API Management service 到 Azure 虚拟网络 (Vnet) 内部,以便它可以访问该网络中的后端服务。 

  • 外部:可以通过外部负载均衡器从公共 Internet 访问 API 管理网关和开发人员门户。 网关可以访问虚拟网络中的资源。

  • 内部:只能通过内部负载均衡器从虚拟网络内部访问 API 管理网关和开发人员门户。 网关可以访问虚拟网络中的资源。

 

在门户上配置根据页面提示一步一步完成,非常容易上手,只是这个过程耗时较长(45分钟左右)。

注意:要进行验证是否配置成功,需要在同一虚拟网络(VNET)中创建虚拟机(VM),访问APIM的开发者门户或APIM中API的完整URL进行验证。

 

 

方式二:设置APIM访问限制策略 --  ip-filter 限制调用方IP

ip-filter 策略筛选(允许/拒绝)来自特定 IP 地址和/或地址范围的调用。(官网介绍:https://docs.azure.cn/zh-cn/api-management/api-management-access-restriction-policies#restrict-caller-ips

设置语句

<policies>
    <inbound>
        <base />
       <ip-filter action="allow | forbid">
            <address>address</address>
            <address-range from="address" to="address" />
        </ip-filter>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

在API的Design页面,也可以通过界面方式操作:

 

 

参考资料

在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv2

API 管理访问限制策略:https://docs.azure.cn/zh-cn/api-management/api-management-access-restriction-policies

  1. 检查 HTTP 标头 - 强制必须存在和/或强制采用 HTTP 标头的值。
  2. 按订阅限制调用速率 - 根据订阅限制调用速率,避免 API 使用量暴增。
  3. 按密钥限制调用速率 - 根据密钥限制调用速率,避免 API 使用量暴增。
  4. 限制调用方 IP - 筛选(允许/拒绝)来自特定 IP 地址和/或地址范围的调用。
  5. 按订阅设置使用量配额 - 允许根据订阅强制实施可续订或有生存期的调用量和/或带宽配额。
  6. 按密钥设置使用量配额 - 允许根据密钥强制消耗可续订或有生存期的调用量和/或带宽配额。
  7. 验证 JWT - 强制从指定 HTTP 标头或指定查询参数提取的 JWT 必须存在且有效。
  8. 验证客户端证书 - 强制客户端提供给 API 管理实例的证书与指定的验证规则和声明相匹配。

 

 

 

 

 

[END]

 

posted @ 2021-11-07 13:57  路边两盏灯  阅读(528)  评论(0编辑  收藏  举报