如何设置或编辑 Azure API 管理策略

本文介绍如何在 Azure 门户中通过编辑策略定义来配置 API 管理实例中的策略。 每个策略定义是一个 XML 文档,描述针对 API 请求或响应按顺序运行的入站和出站语句序列。

门户中的策略编辑器提供引导式窗体,API 发布者可以使用这些窗体在策略定义中添加和编辑策略。 你还可以直接在策略代码编辑器中编辑 XML。

有关策略的详细信息:

先决条件

如果你没有 API 管理实例和后端 API,请参阅:

转到你的 API 管理实例

  1. 在 Azure 门户中搜索并选择“API 管理服务” 。

    Select API Management services

  2. 在“API 管理”服务页上,选择你的 API 管理实例。

    Select your API Management instance

在门户中配置策略

以下示例演示如何使用门户的策略编辑器中的两个选项配置策略:

  • 基于引导式窗体的编辑器,可以简化配置大量策略的操作
  • 代码编辑器,可在其中直接添加或编辑 XML

在此示例中,策略将筛选来自特定传入 IP 地址的请求。 筛选范围限定为所选 API。

注意

可以在其他范围配置策略,例如针对所有 API、某个产品或单个 API 操作。 有关其他示例,请参阅本文稍后介绍的配置范围

若要配置策略,请执行以下操作:

  1. 在 API 管理实例的左侧导航栏中,选择“API”。

  2. 选择前面导入的 API。

  3. 选择“设计”选项卡。

  4. 若要将策略应用到所有操作,请选择“所有操作”。

  5. 在“入站处理”部分,选择“+ 添加策略”。

    Add policy in API Management

  6. 在“添加入站策略”中,选择要添加的策略。 例如,选择“筛选 IP 地址”。

    Filter IP addresses policy

    提示

    • 显示的策略范围限定为要配置的策略部分 - 在本例中限定为入站处理。
    • 如果未看到所需的策略,请选择“其他策略”磁贴。 这会打开 XML 代码编辑器,并显示该部分和范围的策略的完整列表。
  7. 选择“允许的 IP”>“+ 添加 IP 筛选器”,并添加允许发出 API 请求的传入地址范围的第一个和最后一个 IP 地址。 根据需要添加其他 IP 地址范围。

    Configure allowed IP addresses

  8. 选择“保存”以立即将更改传播到 API 管理网关。

    ip-filter 策略现在会显示在“入站处理”部分。

在不同的范围配置策略

API 管理让你可以在每个策略部分灵活地在多个范围配置策略定义。

重要

并非所有策略都可以在每个范围或策略部分应用。 如果要添加的策略未启用,请确保在支持的策略部分和该策略的范围内操作。 若要查看某个策略的策略部分和范围,请参阅策略参考主题中的“用法”部分。

注意

“后端”策略部分只能包含一个策略元素。 默认情况下,API 管理在全局范围的“后端”部分配置 forward-request 策略,并在其他范围配置 base 元素。

全局范围

全局范围是针对 API 管理实例中的所有 API 配置的。

  1. 在 API 管理实例的左侧导航栏中,选择“API”>“所有 API”。

  2. 选择“设计”选项卡。

    Configure policy at product scope

  3. 在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。

  4. 选择“保存”以立即将更改传播到 API 管理网关。

产品范围

产品范围是针对选定的产品配置的。

  1. 在左侧菜单中选择“产品”,然后选择要对其应用策略的产品。

  2. 在产品窗口中选择“策略”。

    Configure policy at global scope

  3. 在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。

  4. 选择“保存”以立即将更改传播到 API 管理网关。

API 范围

API 范围是针对选定 API 的所有操作配置的。

  1. 在 API 管理实例的左侧导航栏中选择“API”,然后选择要对其应用策略的 API。

  2. 选择“设计”选项卡。

  3. 选择“所有操作”。

    Configure policy at API scope

  4. 在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。

  5. 选择“保存”以立即将更改传播到 API 管理网关。

操作范围

操作范围是针对选定的 API 操作配置的。

  1. 在 API 管理实例的左侧导航栏中,选择“API”。

  2. 选择“设计”选项卡。

  3. 选择要将策略应用到的操作。

    Configure policy at operation scope

  4. 在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。

  5. 选择“保存”以立即将更改传播到 API 管理网关。

使用 base 元素设置策略评估顺序

如果在多个范围内配置策略定义,则可将多个策略应用到 API 请求或响应。 根据不同范围内策略的应用顺序,请求或响应的转换可能不同。

在 API 管理中,通过在每个范围的策略定义中放置 base 元素来确定策略评估顺序。 base 元素继承处于下一个更宽泛(父)范围的该部分中配置的策略。 base 元素默认包含在每个策略部分。

注意

若要查看当前范围的有效策略,请在策略编辑器中选择“计算有效策略”。

若要使用策略编辑器修改策略评估顺序,请执行以下操作:

  1. 首先处理配置的最窄范围的、API 管理最先应用的定义。

    例如,在使用全局范围和 API 范围配置的策略定义时,请先处理 API 范围的配置。

  2. base 元素放在某个部分,以确定要从父范围的相应部分的哪个位置继承所有策略。

    例如,在 API 范围配置的 inbound 部分,放置一个 base 元素,以控制要在哪个位置继承全局范围的 inbound 部分中配置的策略。 在以下示例中,从全局范围继承的策略将先应用,然后再应用 ip-filter 策略。

    <policies>
      <inbound>
          <base />
            <ip-filter action="allow">
                <address>10.100.7.1</address>
            </ip-filter>
      </inbound>
      [...]
    </policies>
    

    注意

    • 可以在部分中的任何策略元素之前或之后放置 base 元素。
    • 若要防止从父范围继承策略,请删除 base 元素。 在大多数情况下,不建议这样做。
  3. 在连续扩大的范围的策略定义中继续配置 base 元素。

    全局范围的策略没有父范围,在其中使用 base 元素不起作用。

有关使用策略的详细信息,请参阅: