You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否借助Azure Logic Apps/Azure Function自动更新Azure防火墙的Office365 IP规则集?

可以通过Azure Logic Apps或Azure Function实现Office 365 IP地址同步到Azure防火墙的自动更新流程

不管是Azure Logic Apps还是Azure Function,都能完整实现你需要的Office 365 IP地址自动同步到Azure防火墙的流程,以下是两种方案的具体实现步骤:


方案一:Azure Logic Apps(无代码/低代码实现)

  • 1. 定时触发并抓取Office 365端点数据
    新建Logic Apps工作流,选择Recurrence触发器,设置每15天执行一次。添加HTTP动作,请求方法选GET,填入指定的Office 365端点URL。
  • 2. 筛选IPv4地址
    添加Parse JSON动作,将HTTP返回的内容作为输入,可通过“使用示例有效负载生成架构”功能自动生成Office 365端点的JSON schema。接着用Select动作提取所有ips字段值,再用Filter Array动作过滤掉包含:的条目(排除IPv6地址)。
  • 3. 生成CSV文件
    添加Create CSV table动作,把筛选后的IPv4列表作为输入,设置列名为IPAddress。如果需要临时存储,可添加Create file动作将CSV保存到Azure Storage Account中;若直接用于后续步骤,用Compose动作将CSV内容转为字符串即可。
  • 4. 更新Azure IP组
    添加Azure Firewall - Update IP Group动作,选择对应的订阅、资源组和目标IP组,将CSV中的IP地址列表填入IP addresses参数(支持每行一个IP或逗号分隔格式)。
  • 5. 关联IP组到防火墙规则
    若IP组已关联到目标防火墙规则,IP组更新后规则会自动生效;若未关联,添加Azure Firewall - Create or Update Firewall Policy Rule Collection Group动作,将该IP组配置到规则的源/目标IP字段中。

方案二:Azure Function(代码化实现,以Python为例)

  • 1. 定时触发与数据抓取
    创建带Timer Trigger的Python Function,设置CRON表达式为0 0 0 */15 * *(每15天零点执行)。用requests库发送GET请求获取Office 365端点的JSON数据:
    import requests
    
    url = "https://endpoints.office.com/endpoints/worldwide?clientrequestid=b10c5ed1-bad1-445f-b386-b919946339a7"
    response = requests.get(url)
    endpoints_data = response.json()
    
  • 2. 筛选IPv4地址
    遍历解析后的JSON数据,过滤出IPv4地址并去重:
    ipv4_list = []
    for endpoint in endpoints_data:
        if "ips" in endpoint:
            for ip in endpoint["ips"]:
                if ":" not in ip and ip not in ipv4_list:
                    ipv4_list.append(ip)
    
  • 3. 生成CSV内容
    用csv模块在内存中生成CSV格式内容:
    import io
    import csv
    
    output = io.StringIO()
    writer = csv.writer(output)
    writer.writerow(["IPAddress"])
    for ip in ipv4_list:
        writer.writerow([ip])
    csv_content = output.getvalue()
    
  • 4. 更新Azure IP组
    使用azure-mgmt-network SDK更新IP组,需配置函数的系统托管身份并赋予Network Contributor角色:
    from azure.identity import ManagedIdentityCredential
    from azure.mgmt.network import NetworkManagementClient
    
    credential = ManagedIdentityCredential()
    network_client = NetworkManagementClient(credential, "<你的订阅ID>")
    
    network_client.ip_groups.begin_update(
        resource_group_name="<资源组名称>",
        ip_group_name="<IP组名称>",
        parameters={"ip_addresses": ipv4_list}
    ).result()
    
  • 5. 关联IP组到防火墙规则
    确保目标防火墙规则已引用该IP组,IP组更新后规则会自动应用新IP列表;若需动态配置,可通过SDK调用防火墙策略的更新接口完成关联。

通用注意事项

  • 权限配置:两种方案都需要给Logic Apps/Function的系统身份赋予对应Azure资源的编辑权限(如Network Contributor),避免因权限不足导致操作失败。
  • 去重处理:Office 365端点返回的IP可能存在重复,务必在筛选步骤添加去重逻辑,减少IP组冗余。
  • 错误处理:Logic Apps可通过Scope和Run After配置失败通知;Function需添加try-except块捕获异常,确保流程中断时能及时告警。

内容的提问来源于stack exchange,提问作者user3137708

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:45:44