如何安全保护可由Data Factory调用的无密钥Azure Durable Functions?
最快保护Azure Durable Functions并兼容Data Factory调用的方法
以下是几个快速落地的安全加固方案,按实施速度排序:
1. 启用函数密钥认证(最快实施)
- 修正函数访问级别:在Azure门户的Function App中,将所有Durable Functions(包括编排器、活动函数)的访问级别从
Anonymous改为Function,确保必须提供密钥才能访问。 - 获取函数密钥:在Function App的「函数密钥」页面,复制默认密钥,或为Data Factory创建专用密钥(便于后续权限隔离)。
- 配置Data Factory调用:在Data Factory的HTTP活动中,将密钥通过请求头传递,添加
x-functions-key头,值为复制的密钥;也可通过查询参数code=<密钥>附加在请求URL后。
2. 限制IP访问(快速加固补充)
- 找到Data Factory的出站IP地址:在Data Factory资源的「属性」页面,复制列出的所有出站IP。
- 在Function App的「网络」-「访问限制」中,添加规则:允许上述Data Factory的IP地址访问,设置默认规则为「拒绝」。
- 注意:若Data Factory使用托管虚拟网络,需配合服务端点或私有链接,但IP限制是最快的临时隔离手段。
3. Azure AD身份验证(长期安全方案)
- 为Function App启用Azure AD身份验证:在Function App的「身份验证」页面,添加Azure AD提供商,配置允许的租户范围。
- 创建服务主体:在Azure AD中注册应用,生成客户端ID和客户端密钥,为该主体分配Function App的访问权限(如
Function App Contributor角色)。 - 配置Data Factory:在HTTP活动中使用Azure AD OAuth2.0认证,填入服务主体的客户端ID、客户端密钥、租户ID,获取访问令牌后,通过
Authorization: Bearer <令牌>头调用函数。
注意事项
- 确保Durable Functions的所有关联函数(编排器、活动、HTTP触发的客户端函数)都统一设置访问权限,避免遗漏未保护的入口。
- 使用密钥认证时,定期轮换密钥并更新Data Factory的配置,降低密钥泄露风险。
- Azure AD身份验证无需管理密钥,适合企业级长期安全架构。
内容的提问来源于stack exchange,提问作者wilson_smyth
相关产品推荐
相关产品推荐

