Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保护Azure功能的方法有哪些_C#_Azure_Security_Azure Functions_Azure Security - Fatal编程技术网

C# 保护Azure功能的方法有哪些

C# 保护Azure功能的方法有哪些,c#,azure,security,azure-functions,azure-security,C#,Azure,Security,Azure Functions,Azure Security,我已经在Azure Portal中使用c#编写了5个Azure函数 以下是安装我的应用程序的步骤:- 将部署脚本复制到群集的边缘节点 部署 执行以下操作的脚本 调用Azure函数从WASB获取我的应用程序构建 在边缘节点上安装我的应用程序 调用Azure函数进行一些更新 上述流程将在客户边缘节点上执行 这里描述的使用“”的授权只是为了提供另一层API密钥授权,当公共客户端(如边缘节点)需要调用我的脚本时不适用,因为它可以在那里发现 在我的场景中,保护Azure功能的最佳方法是什么?默认情

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

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

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

这里描述的使用“”的授权只是为了提供另一层API密钥授权,当公共客户端(如边缘节点)需要调用我的脚本时不适用,因为它可以在那里发现


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

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

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

您可以使用azure环境服务在vnet内构建函数。但为此,您需要支付大量费用,并且必须使用azure功能的服务计划版本

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

请注意,Azure portal已经取消了通过标准功能网络选项卡设置IP限制的功能。因此,您需要进入资源管理器并在web配置部分手动设置IP限制

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

AZURE ASE(应用程序服务环境)对于仅5个函数来说过于昂贵。您可以通过在函数中添加应用程序网关和白名单应用程序网关的IP地址来保护函数。您可以在此处找到更多详细信息:


这是对基于令牌或基于AAD的身份验证和授权的补充(如前一回复中提到的“Noel”)。

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

也许你可以把链接包含到官方文档中,它也概述了可用的选项:考虑“存储过程”——比如流程。公共函数的行为类似于webhook(验证数据并将其推送到私有azure函数/队列)。另外:
永远不要信任,始终验证[/sanitize]
。在这两者之间,我们可以弥合一些差距,而无需对关键交易所进行充分投资。但有些东西需要密钥(
delete\u user()
等)