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

Azure Functions访问安全最佳实践:函数间及跨Azure服务通信

Azure Functions 权限管理与通信最佳实践

针对你的两类函数场景,结合Azure Functions通信的最佳实践,分场景说明如下:

a) Azure Functions之间的通信(定时触发函数调用HTTP触发函数)

方案1:专用访问密钥(轻量、易配置)

  • 不给被调用的Python/C# HTTP函数使用默认的host密钥(该密钥能访问函数App下所有函数,风险过高),而是为其创建专用函数访问密钥(在函数的"密钥"页面生成)。
  • 将这个专用密钥存储在调用方(定时触发函数)的应用设置中,或者Azure Key Vault里(推荐后者,通过函数的系统托管身份访问Key Vault)。
  • 调用时在请求头中携带密钥:
    # 定时触发函数中的调用示例
    import requests
    import os
    
    target_url = os.environ["TARGET_FUNCTION_URL"]
    function_key = os.environ["TARGET_FUNCTION_KEY"]
    
    headers = {"x-functions-key": function_key}
    response = requests.post(target_url, headers=headers, json={"data": "example"})
    
  • 优势:配置简单,适合小规模函数间调用;密钥可单独旋转,不会影响其他函数。

方案2:Azure AD身份验证(企业级、高安全)

  • 给被调用的HTTP函数启用Azure AD身份验证,设置允许的受众或应用角色。
  • 给定时触发函数启用系统托管身份,然后在Azure门户中为该身份分配访问被调用函数的权限(比如Function App Contributor,或自定义更细粒度的角色)。
  • 调用时先获取Azure AD令牌,再携带令牌发起请求:
    # 定时触发函数中获取AD令牌并调用的示例
    import requests
    from azure.identity import ManagedIdentityCredential
    
    credential = ManagedIdentityCredential()
    token = credential.get_token("https://azurefunctions.net/.default")
    
    target_url = os.environ["TARGET_FUNCTION_URL"]
    headers = {"Authorization": f"Bearer {token.token}"}
    response = requests.post(target_url, headers=headers, json={"data": "example"})
    
  • 优势:无需管理密钥,依赖Azure AD的身份生命周期管理;支持细粒度权限控制,适合多函数、复杂权限场景。

b) Azure服务与Azure Functions之间的通信(Azure Workbooks访问前端HTTP函数)

方案1:专用访问密钥+IP限制

  • 为前端HTTP函数创建专用访问密钥,仅在Azure Workbooks的数据源配置中使用该密钥(将密钥放在x-functions-key请求头里,避免用查询参数)。
  • 在函数App的"网络"设置中配置IP防火墙,添加Azure Workbooks的出站IP段(或使用Azure服务标签AzureMonitorWorkbooks),仅允许这些IP访问函数。
  • 优势:配置成本低,适合快速落地;双重限制降低未授权访问风险。

方案2:Azure AD身份验证

  • 给前端HTTP函数启用Azure AD身份验证,配置允许Azure Workbooks的服务主体或托管身份访问。
  • 在Azure Workbooks中配置使用托管身份获取AD令牌,调用函数时在请求头中携带Authorization: Bearer <令牌>。
  • 优势:无需在Workbooks中存储明文密钥,符合安全合规要求;支持审计和身份生命周期管理。

通用最佳实践

  • 最小权限原则:无论是密钥还是AD权限,只分配必要的访问权限——比如专用密钥仅给特定调用方,AD身份仅分配所需的最小角色。
  • 密钥管理:禁止硬编码密钥,统一存储在Azure Key Vault;定期旋转专用密钥,避免长期使用同一密钥。
  • 优先身份验证:如果企业已部署Azure AD,优先使用AD身份验证替代密钥,减少密钥管理的复杂度和泄露风险。
  • IP防火墙:给函数App配置IP限制,仅允许信任的IP或服务标签访问,缩小攻击面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:35:19