如何设置或编辑 Azure API 管理策略
适用于:所有 API 管理层级
本文介绍如何在 Azure 门户中通过编辑策略定义来配置 API 管理实例中的策略。 每个策略定义是一个 XML 文档,描述针对 API 请求或响应按顺序运行的入站和出站语句序列。
门户中的策略编辑器提供引导式窗体,API 发布者可以使用这些窗体在策略定义中添加和编辑策略。 你还可以直接在策略代码编辑器中编辑 XML。
有关策略的详细信息:
先决条件
如果你没有 API 管理实例和后端 API,请参阅:
转到你的 API 管理实例
在 Azure 门户中搜索并选择“API 管理服务” 。
在“API 管理”服务页上,选择你的 API 管理实例。
在门户中配置策略
以下示例演示如何使用门户的策略编辑器中的两个选项配置策略:
- 基于引导式窗体的编辑器,可以简化配置大量策略的操作
- 代码编辑器,可在其中直接添加或编辑 XML
在此示例中,策略将筛选来自特定传入 IP 地址的请求。 筛选范围限定为所选 API。
若要配置策略,请执行以下操作:
在 API 管理实例的左侧导航栏中,选择“API”。
选择前面导入的 API。
选择“设计”选项卡。
若要将策略应用到所有操作,请选择“所有操作”。
在“入站处理”部分,选择“+ 添加策略”。
在“添加入站策略”中,选择要添加的策略。 例如,选择“筛选 IP 地址”。
提示
- 显示的策略范围限定为要配置的策略部分 - 在本例中限定为入站处理。
- 如果未看到所需的策略,请选择“其他策略”磁贴。 这会打开 XML 代码编辑器,并显示该部分和范围的策略的完整列表。
选择“允许的 IP”>“+ 添加 IP 筛选器”,并添加允许发出 API 请求的传入地址范围的第一个和最后一个 IP 地址。 根据需要添加其他 IP 地址范围。
选择“保存”以立即将更改传播到 API 管理网关。
ip-filter 策略现在会显示在“入站处理”部分。
在不同的范围配置策略
API 管理让你可以在每个策略部分灵活地在多个范围配置策略定义。
重要
并非所有策略都可以在每个范围或策略部分应用。 如果要添加的策略未启用,请确保在支持的策略部分和该策略的范围内操作。 若要查看某个策略的策略部分和范围,请参阅策略参考主题中的“用法”部分。
注意
“后端”策略部分只能包含一个策略元素。 默认情况下,API 管理在全局范围的“后端”部分配置 forward-request
策略,并在其他范围配置 base
元素。
全局范围
全局范围是针对 API 管理实例中的所有 API 配置的。
在 API 管理实例的左侧导航栏中,选择“API”>“所有 API”。
选择“设计”选项卡。
在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。
选择“保存”以立即将更改传播到 API 管理网关。
产品范围
产品范围是针对选定的产品配置的。
在左侧菜单中选择“产品”,然后选择要对其应用策略的产品。
在产品窗口中选择“策略”。
在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。
选择“保存”以立即将更改传播到 API 管理网关。
API 范围
API 范围是针对选定 API 的所有操作配置的。
在 API 管理实例的左侧导航栏中选择“API”,然后选择要对其应用策略的 API。
选择“设计”选项卡。
选择“所有操作”。
在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。
选择“保存”以立即将更改传播到 API 管理网关。
操作范围
操作范围是针对选定的 API 操作配置的。
在 API 管理实例的左侧导航栏中,选择“API”。
选择“设计”选项卡。
选择要将策略应用到的操作。
在策略部分,选择“+ 添加策略”以使用基于窗体的策略编辑器,或选择“</>”(代码编辑器)图标直接添加和编辑 XML。
选择“保存”以立即将更改传播到 API 管理网关。
使用 base
元素设置策略评估顺序
如果在多个范围内配置策略定义,则可将多个策略应用到 API 请求或响应。 根据不同范围内策略的应用顺序,请求或响应的转换可能不同。
在 API 管理中,通过在每个范围的策略定义中放置 base
元素来确定策略评估顺序。 base
元素继承处于下一个更宽泛(父)范围的该部分中配置的策略。 base
元素默认包含在每个策略部分。
注意
若要查看当前范围的有效策略,请在策略编辑器中选择“计算有效策略”。
若要使用策略编辑器修改策略评估顺序,请执行以下操作:
首先处理配置的最窄范围的、API 管理最先应用的定义。
例如,在使用全局范围和 API 范围配置的策略定义时,请先处理 API 范围的配置。
将
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
元素。 在大多数情况下,不建议这样做。
- 可以在部分中的任何策略元素之前或之后放置
在连续扩大的范围的策略定义中继续配置
base
元素。全局范围的策略没有父范围,在其中使用
base
元素不起作用。
相关内容
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 设置或编辑策略
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略片段存储库