如何在Azure ARM模板中用‘仅其他逻辑应用’替代IP范围限制入站IP?
在ARM模板中配置逻辑应用的“仅其他逻辑应用”入站限制
要实现只允许其他逻辑应用调用你的逻辑应用(而非通过IP范围限制),你需要在ARM模板的逻辑应用资源配置里使用allowedCallerApplications属性,替代原本的allowedCallerIpAddresses(或者清空IP限制数组)。这个属性是通过Azure AD应用标识来筛选调用者,而其他逻辑应用的系统分配托管标识本身就是一个Azure AD应用,刚好适配这个场景。
下面分两种常见情况给你具体的配置示例:
1. 允许特定的单个/多个逻辑应用调用
如果你只想让指定的几个逻辑应用能调用当前逻辑应用,先获取目标逻辑应用的系统分配托管标识的Application ID(可以在目标逻辑应用的“标识”页面找到),然后把这个ID添加到allowedCallerApplications数组里:
{ "type": "Microsoft.Logic/workflows", "apiVersion": "2019-05-01", "name": "[parameters('logicAppName')]", "location": "[parameters('location')]", "properties": { "state": "Enabled", "definition": "[parameters('logicAppDefinition')]", "accessControl": { "triggers": { // 针对触发器的限制 "allowedCallerApplications": [ { "applicationId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" // 替换为目标逻辑应用的Application ID }, // 可以添加多个逻辑应用的ID { "applicationId": "yyyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" } ], "allowedCallerIpAddresses": [] // 清空IP限制,只应用应用标识筛选 }, "actions": { // 针对操作的限制,和触发器配置一致即可 "allowedCallerApplications": [ { "applicationId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }, { "applicationId": "yyyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" } ], "allowedCallerIpAddresses": [] } } } }
2. 允许所有其他逻辑应用调用
如果你想和Azure门户里的“仅其他逻辑应用”选项效果完全一致(允许任何逻辑应用调用),直接用通配符*作为applicationId的值就行,这样所有逻辑应用的系统标识都会被允许:
"accessControl": { "triggers": { "allowedCallerApplications": [ { "applicationId": "*" } ], "allowedCallerIpAddresses": [] }, "actions": { "allowedCallerApplications": [ { "applicationId": "*" } ], "allowedCallerIpAddresses": [] } }
额外注意事项
- 一定要把
allowedCallerIpAddresses设为空数组,这样就不会触发IP范围的限制,完全基于应用标识来筛选调用者。 - 如果需要同时启用IP限制和应用标识限制,可以同时配置两个属性,此时调用请求必须同时满足IP在允许列表且应用标识在允许列表才能通过。
- 目标逻辑应用必须启用了系统分配托管标识(默认是启用的),否则你无法获取它的Application ID来配置到允许列表里。
内容的提问来源于stack exchange,提问作者Daniele
相关产品推荐
相关产品推荐

