有哪些方法可以保护Azure功能

时间:2017-10-07 07:50:20

标签: c# azure security azure-functions azure-security

我使用c#在Azure门户中编写了5个Azure功能。

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

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

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

此处描述的使用“keys”的授权仅用于提供另一层API密钥授权,当我的脚本需要由公共客户端(如边缘节点)调用时,它不适用,因为它发现 - 在那里。

在我的方案中保护Azure功能的最佳方法是什么?

3 个答案:

答案 0 :(得分:9)

默认情况下,azure功能是公共的。因此,您可以部署它们,并通过该功能上的地址公开提供端点。如您所述,您可以设置功能级别访问权限,这意味着您需要传递访问密钥。所以,如果受到保护,他们会很友好。

还有其他一些选择:

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

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

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

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

答案 1 :(得分:2)

AZURE ASE(应用服务环境)对于仅5个功能来说太昂贵了。您可以通过添加应用程序网关来保护功能,并在功能中将应用程序网关的IP地址列入白名单。你可以在这里找到更多细节: Whitelisting in Azure Functions

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

答案 2 :(得分:0)

保护Azure功能的最佳方法是通过AAD或您信任的身份验证服务器。 如果这不可行,可能是因为您从Console或App使用这些功能不支持授权代码流,或者不被AAD中不存在的用户使用,请使用API​​M。 下面的@Noel提供的技术功能强大,需要限制它仅从APIM访问您的函数。(函数不应该是匿名的,除了APIM代码之外,不需要任何授权代码) 现在考虑如何保护APIM。 您有多种选择,但可能可以考虑将客户端证书作为适当身份验证的方式。 最后,消费者需要一些东西来对他们进行身份验证(密码,证书,设备或其他任何东西)..因此,设置策略以检查证书是否存在以及找到验证证书的方法可以帮助保护您的APIM。 现在的问题是关于保护APIM的问题,这里您有许多基于策略的选项。 希望能有所帮助。 (也别忘了考虑以上Noel提供的其他解决方案)