19

我使用 c# 在 Azure Portal 中编写了 5 个 Azure 函数。

以下是安装我的应用程序的步骤:-

  • 将部署脚本复制到集群的 Edge 节点
  • 执行以下操作的部署脚本
    • 调用 Azure 函数从 WASB 获取我的应用程序构建。
    • 在 Edge 节点上安装我的应用程序
    • 调用 Azure 函数进行一些更新。

上述流程将在 Customer Edge 节点上执行。

此处描述的使用“<a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook#keys" rel="noreferrer">keys”的授权是只是为了提供另一层 API 密钥授权,当我的脚本需要由公共客户端(如边缘节点)调用时不适用,因为它可以在那里发现。

在我的场景中保护 Azure Functions 的最佳方法是什么?

4

3 回答 3

12

默认情况下,azure 函数是 public 。因此,您部署它们,并且端点可以通过函数上的地址公开使用。正如您所提到的,您可以设置功能级别访问权限,这意味着您需要传递访问密钥。因此,如果受到保护,他们是善良的。

不过还有一些其他的选择:

您可以使用 azure 环境服务在 vnet 中构建函数。但是为此,您付出了很多钱,并且您必须使用 azure 功能的服务计划版本。

我将API 管理与功能结合起来。API 管理是一种向消费者公开您的 API 的方式,但对使用保持大量控制。Api 管理组件不会阻止公共天蓝色地址可用,但我在代码中实现了模式,该模式检查附加到 http 请求的特殊令牌,作为应用程序管理传递的一部分。或者,您可以在函数应用上设置 IP 限制,以仅允许来自 API 管理端点的流量。(IP地址)如此有效,您只能通过应用程序管理进入该功能。

请注意,Azure 门户已删除通过标准功能网络选项卡设置 IP 限制的功能。因此,您需要进入资源浏览器并在 Web 配置部分手动设置 IP 限制。

最后,您可以设置一个 oauth 服务器并在函数或 api 管理组件或两者中验证令牌。

于 2017-10-07T10:03:40.757 回答
4

AZURE ASE(应用服务环境)对于只有 5 个功能来说太贵了。您可以通过添加应用程序网关并在函数中将应用程序网关的 IP 地址列入白名单来保护函数。您可以在此处找到更多详细信息: Azure Functions 中的白名单

这是除了基于令牌或基于 AAD 的身份验证和授权之外的所有内容(如上一个回复中提到的“Noel”)。

于 2018-06-12T14:17:01.773 回答
0

保护 Azure Functions 的最佳方法是通过 AAD 或您信任的身份验证服务器。如果这不可行,可能是因为您从控制台或应用程序使用这些功能不支持授权代码流,或者被您的 AAD 中不存在的用户使用,然后使用 APIM。下面@Noel提供的技术很强大,需要限制只能从APIM访问你的函数。(函数不应该是匿名的,除了APIM代码之外不需要任何授权代码) 现在想想如何保护 APIM。您有多种选择,但可能您可以将客户端证书视为正确身份验证的手段。最后,消费者需要有一些东西来对他们进行身份验证(密码、证书、设备或任何东西)。因此,设置一个策略来检查证书的存在并找到一种验证该证书的方法可以帮助保护您的 APIM。现在的问题变成了关于保护 APIM 的问题,在这里您有许多基于策略的选项。希望有帮助。(也不要忘记考虑上面 Noel 提供的其他解决方案)

于 2020-05-02T13:49:24.507 回答