我使用Azure IoT集線器將文件從Raspberry Pi上傳到Azure Blob存儲,使用this microsoft tutorial作爲我的C#代碼的基礎,並且工作正常。使用IoT Hub將文件上傳到Azure BLOB - 權限
查看有關方法的Microsoft文檔UploadToBlobAsync(),「如果blob已經存在,它將被覆蓋。」
我想知道是否有任何方法來限制設備的權限,以在Azure門戶或通過PowerShell創建。我擔心的是,如果有人訪問設備的存儲並獲取設備ID和密鑰,他們將有辦法刪除或覆蓋此設備先前在存儲容器中上傳的文件。
作爲一個解決方案我可能有一個服務器端進程接收文件,一旦他們已收到並將他們移動到其他地方,但如果設備ID /鍵被限制爲只創建那麼我wouldn'噸需要這個開銷。
感謝UploadToBlobAsync()方法的詳細分解。如果我理解正確,客戶端會向Azure撥打一個共享訪問令牌,然後用它來上傳文件。既然如此,爲了防止BLOB被覆蓋,我需要一種方法來防止步驟1發出一個令牌,如果BLOB已經存在於存儲器中的話。正確? – Pete
Step1是向Azure IoT Hub發送啓動AMQP狀態機以上傳進程通知的設備請求。每個設備可以同時擁有最多10個狀態機。上傳過程(狀態機)的完成是通過步驟3或到期TTL時間(48小時)完成的。換句話說,必須調用步驟1和步驟3。步驟2是可選的,在此步驟中設備可以檢查文件是否已經存在。基於步驟2的結果,可以在步驟3中發送通知狀態以用於通知後端邏輯。 –
這裏的問題是,我並不關心我自己的應用程序是否覆蓋BLOB容器中的文件,但其他人如果從我的設備上的存儲設備中獲取設備ID和密鑰,則會這樣做。因此,任何解決方案都需要在Azure門戶中配置,而不是在應用程序代碼中配置。 – Pete