使用 Azure Functions 的临时目录
Using the temp directory for Azure Functions
我在同一台主机上有一组 Azure 函数 运行,有时可以扩展到多个实例。我想存储非常少量的临时数据(几 kb)并在函数执行之间机会性地共享这些数据。我知道临时目录仅可用于同一实例上的函数 运行。我还知道我可以使用主目录、持久函数或其他 Azure(例如 blob)存储在所有函数之间持久共享数据。
我有两个主要问题
- 使用临时目录对安全有何影响?谁可以在 运行 函数之外访问其内容?
- 这仍然是一个合理的解决方案吗?除了看起来像一些过时的 kudu 文档 here.
之外,我在 Microsoft 文档中找不到太多东西
谢谢!
我相信这会回答你的问题:
详情请参考this
此外,当 Folder/Files 通过“Temp”文件夹内的代码创建时;当您访问 KUDU 网站时,您无法查看它们。但是你可以使用那些文件/文件夹。
如何查看通过KUDU创建的文件/文件夹?
我们需要在配置(应用程序设置)中添加 - WEBSITE_DISABLE_SCM_SEPARATION = true。
注意:- 另一个重要注意事项是主站点和 scm 站点不共享临时文件。因此,如果您从您的站点在那里写入一些文件,您将不会从 Kudu 控制台看到它们(反之亦然)。
如果您禁用分离(通过 WEBSITE_DISABLE_SCM_SEPARATION),您可以让它们使用相同的温度 space。
但请注意,这是一个遗留标志,它的使用不是 recommended/supported。
(参考:共享文档 link)
问题 1 的答案
是的,它是安全的。 Function 宿主进程在沙箱内运行。存储到 D:\local
的所有访问数据都是 self-contained,并且与沙箱内的进程隔离。请参阅 https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox
问题 2 的答案
D:\local\Temp
中的数据只要 Function 宿主进程还活着就存在。由于未处理的异常、超时、达到计划的资源使用限制等意外事件,Functions 主机进程可以随时回收。只要您的工作流程考虑到 D:\local\Temp
中存储的数据是短暂的这一事实,那么答案就是 'yes'.
安全隐患取决于您寻求的隔离级别。
- 在共享 app-service 计划或消费计划中,您需要信任沙箱隔离。这不是像 AWS lambda 这样的孤立的 microvm。
- 如果您有自己的 app-service 计划,那么您需要信任 app-service 计划的 VM 管理程序隔离。
- 如果您真的很偏执或 运行 正在使用医疗保健应用程序,那么您可能需要 运行 在 ASE 计划中发挥您的作用。
合理的解决方案是成本不超过您保护的数据的价值:)
我在同一台主机上有一组 Azure 函数 运行,有时可以扩展到多个实例。我想存储非常少量的临时数据(几 kb)并在函数执行之间机会性地共享这些数据。我知道临时目录仅可用于同一实例上的函数 运行。我还知道我可以使用主目录、持久函数或其他 Azure(例如 blob)存储在所有函数之间持久共享数据。
我有两个主要问题
- 使用临时目录对安全有何影响?谁可以在 运行 函数之外访问其内容?
- 这仍然是一个合理的解决方案吗?除了看起来像一些过时的 kudu 文档 here. 之外,我在 Microsoft 文档中找不到太多东西
谢谢!
我相信这会回答你的问题:
详情请参考this
此外,当 Folder/Files 通过“Temp”文件夹内的代码创建时;当您访问 KUDU 网站时,您无法查看它们。但是你可以使用那些文件/文件夹。
如何查看通过KUDU创建的文件/文件夹? 我们需要在配置(应用程序设置)中添加 - WEBSITE_DISABLE_SCM_SEPARATION = true。
注意:- 另一个重要注意事项是主站点和 scm 站点不共享临时文件。因此,如果您从您的站点在那里写入一些文件,您将不会从 Kudu 控制台看到它们(反之亦然)。 如果您禁用分离(通过 WEBSITE_DISABLE_SCM_SEPARATION),您可以让它们使用相同的温度 space。 但请注意,这是一个遗留标志,它的使用不是 recommended/supported。 (参考:共享文档 link)
问题 1 的答案
是的,它是安全的。 Function 宿主进程在沙箱内运行。存储到 D:\local
的所有访问数据都是 self-contained,并且与沙箱内的进程隔离。请参阅 https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox
问题 2 的答案
D:\local\Temp
中的数据只要 Function 宿主进程还活着就存在。由于未处理的异常、超时、达到计划的资源使用限制等意外事件,Functions 主机进程可以随时回收。只要您的工作流程考虑到 D:\local\Temp
中存储的数据是短暂的这一事实,那么答案就是 'yes'.
安全隐患取决于您寻求的隔离级别。
- 在共享 app-service 计划或消费计划中,您需要信任沙箱隔离。这不是像 AWS lambda 这样的孤立的 microvm。
- 如果您有自己的 app-service 计划,那么您需要信任 app-service 计划的 VM 管理程序隔离。
- 如果您真的很偏执或 运行 正在使用医疗保健应用程序,那么您可能需要 运行 在 ASE 计划中发挥您的作用。
合理的解决方案是成本不超过您保护的数据的价值:)