【问题标题】:Best ways to secure access to Azure functions保护对 Azure 功能的访问的最佳方式
【发布时间】:2023-02-10 03:53:50
【问题描述】:

我有两种类型的 Azure 函数:

  • 我有一个前置函数 (Python),我希望它只能通过 HTTP 从另一个 Azure 服务 (Azure Workbooks) 访问
  • 我有一些函数(HTTP 触发器、Python 和 C#)只能由另一个函数(在 Python 中是一个时间触发器)访问。

我一直在阅读函数访问键,但我并不完全理解如何管理函数之间的访问级别。

或者这应该由权限处理? 简而言之,最佳实践是什么:

a) Azure 函数之间的通信?

b) Azure 服务 <-> 功能之间的通信

【问题讨论】:

  • 根据场景有几种解决方案,从你的问题来看,不清楚你是想在网络级别还是在授权级别进行限制;你能详细说明一下吗?您可以使用多个选项,包括托管身份和 Azure AD 身份验证(应用程序注册)。请举例说明您的问题,以便我提供更多信息。
  • 谢谢你的回答@vithalwadje。我有兴趣在授权级别进行限制。在托管身份方面,我不确定我知道我需要多少,我是否需要一个函数 <-> 函数 MI,以及一个工作簿 <-> 函数 MI,还是更细化?

标签: azure azure-functions


【解决方案1】:

功能之间的通信应该通过消息队列恕我直言发生。云上的网络不可靠。

关于其他功能,您应该设置授权级别才能运行并偶尔轮换密钥。

[FunctionName("Function1")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "products/{category:alpha}/{id:int?}")] HttpRequest req,
string category, int? id, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    var message = String.Format($"Category: {category}, ID: {id}");
    return (ActionResult)new OkObjectResult(message);
}

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=in-process%2Cfunctionsv2&pivots=programming-language-csharp#authorization-scopes-function-level

另一个好的技巧是在前面放置一个 Azure API 管理,并且在上面也需要密钥。

【讨论】:

  • 谢谢你的回答。它注意到队列,我会考虑的。您有关于授权级别和密钥轮换的示例吗?
  • @Fares 我编辑了我的答案。检查 HttpTrigger 属性中的 AuthorizationLevel 枚举
猜你喜欢
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多