使用IoT Hub将文件上载到Azure BLOB - 权限

时间:2017-08-16 08:17:37

标签: azure azure-iot-hub

我使用Azure IoT中心将文件从Raspberry Pi上传到Azure Blob存储,使用this microsoft tutorial作为我的C#代码的基础,并且它正常工作。

查看方法UploadToBlobAsync()的Microsoft文档,"如果blob已经存在,它将被覆盖。"

我想知道是否有任何方法可以限制设备在Azure门户中或通过PowerShell创建的权限。我担心的是,如果某人访问设备的存储并获取设备ID和密钥,他们就可以删除或覆盖该设备先前在存储容器中上传的文件。

作为一种解决方案,我可以让服务器端进程在收到文件后将其移动到其他位置,但是如果设备ID /密钥被限制为创建 - 然后我就不需要这个开销了。

1 个答案:

答案 0 :(得分:1)

方法 UploadToBlobAsync (程序集Microsoft.Azure.Devices.Client.UWP)是REST API序列调用的包装,用于将blob上载到Azure存储容器。 处理以下序列:

  1. REST API调用Azure IoT Hub以获取上传blob的参考,请参阅以下屏幕片段:
  2. ReferenceUploadFile

    如上图所示,此操作的 sasToken 已生成读/写。

    1. 一旦设备收到上述响应,就可以调用REST API PUT blob。 这是我的建议。设备可以调用REST API获取blob的元数据,请参阅以下屏幕摘要:
    2. UploadFile-GET

      根据上述结果,可以跳过此序列,也可以继续使用REST API PUT实际上传blob。

      1. 这是序列的最后一步(非常重要)。设备需要使用上载序列的状态向Azure IoT Hub发送通知。以下屏幕截图显示了此REST API调用:
      2. NotifyUploadFile

        好吧,正如您所看到的,上面的步骤#2可以决定跳过或覆盖上传blob进程。