2

我有一组 Azure 函数在同一主机上运行,​​有时可以扩展到许多实例。我想存储非常少量的临时数据(几 kb),并有机会在函数执行之间共享这些数据。我知道临时目录仅适用于在同一实例上运行的函数。我还知道我可以使用主目录、持久函数或其他 Azure(例如 blob)存储在所有函数之间持久共享数据。

我有两个主要问题

  1. 使用临时目录有什么安全隐患?谁可以在运行函数之外访问它的内容?
  2. 这仍然是一个合理的解决方案吗?除了这里的一些过时的 kudu 文档之外,我在 Microsoft 文档中找不到太多内容。

谢谢!

4

3 回答 3

1

对问题 1 的回答 是的,它是安全的。Function 宿主进程在沙箱中运行。存储到的所有访问数据D:\local都是独立的,并且与沙箱内的进程隔离。请参阅https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox

问题2的答案D:\local\Temp只要Function宿主进程活着,里面 的数据就存在。由于意外事件(例如未处理的异常、超时、达到计划的资源使用限制),Functions 主机进程可以随时回收。只要您的工作流程考虑到存储在其中的数据D:\local\Temp是短暂的这一事实,那么答案就是“是”。

于 2020-10-02T08:55:02.253 回答
0

我相信这会回答你的问题:

在此处输入图像描述

请参阅了解更多详细信息。

此外,当通过“Temp”文件夹中的代码创建文件夹/文件时;当您访问 KUDU 网站时,您无法查看它们。但是您可以使用这些文件/文件夹。

如果通过 KUDU 创建,如何查看文件/文件夹?我们需要在配置(应用程序设置)中添加 - WEBSITE_DISABLE_SCM_SEPARATION = true。

注意:- 另一个重要的注意事项是主站点和 scm 站点不共享临时文件。因此,如果您从您的站点在那里编写一些文件,您将不会从 Kudu 控制台看到它们(反之亦然)。如果禁用分离(通过 WEBSITE_DISABLE_SCM_SEPARATION),则可以使它们使用相同的临时空间。但请注意,这是一个遗留标志,不推荐/不支持使用它。(参考:共享文档链接)

于 2020-09-27T12:30:28.167 回答
0

安全隐患取决于您寻求的隔离级别。

  1. 在共享应用服务计划或消费计划中,您需要信任沙盒隔离。这不是像 AWS lambda 这样的孤立 microvm。
  2. 如果您有自己的应用服务计划,那么您需要信任应用服务计划的虚拟机管理程序隔离。
  3. 如果您真的很偏执或正在运行医疗保健应用程序,那么您可能需要在 ASE 计划中运行您的功能。

合理的解决方案是成本不超过您保护的数据价值的解决方案:)

于 2020-10-02T09:47:57.703 回答