能否为Azure Function App配置部署与触发不同的IP地址?
针对Azure Function App私有端点下的Github Actions部署方案
可以实现仅允许外部部署操作、限制函数触发请求的需求,具体配置步骤如下:
1. 分离SCM站点与主应用的网络配置
Azure Function App支持将用于部署管理的SCM站点和主函数应用的网络访问规则分开配置:
- 进入Function App的「网络」设置页面,找到「部署中心(SCM)」的访问配置
- 开启SCM站点的公网访问权限,同时保持主Function App的私有端点配置不变(主应用仍仅允许私有网络流量进入)
- 此配置下,主函数的HTTP触发请求只能通过私有网络访问,而SCM站点会拥有独立的公网入口
2. 严格限制SCM站点的公网访问对象
为避免SCM站点被未授权访问,需添加精准的访问控制规则:
- IP白名单方式:在SCM站点的「访问限制」中添加Github Actions的IP范围。注意Github的IP地址会定期更新,可在Workflow中通过脚本动态获取当前IP并临时添加规则,部署完成后移除。
- Azure AD身份验证方式:为SCM站点启用Azure AD登录,创建专属的服务主体授予SCM站点的访问权限。在Github Actions的Workflow中,使用该服务主体获取Azure AD令牌,通过令牌认证完成部署操作,这是更安全的方案。
3. 验证配置效果
- 从私有网络外访问主函数的触发URL,确认无法访问
- 运行Github Actions部署Workflow,确认部署流程正常完成
- 从非授权IP或未认证账号访问SCM站点,确认被拦截
若不想为SCM站点开启公网IP,也可使用部署在私有网络内的自托管Github Runner执行部署任务,但需要额外维护私有网络内的Runner节点,灵活性不如上述方案。
内容的提问来源于stack exchange,提问作者yashu
相关产品推荐
相关产品推荐

