裝置身分識別和安全性
您可以一次部署和管理許多裝置。 裝置管理是以在必要時個別識別及存取每個裝置的能力為基礎。 為了讓您能夠這麼做,每個 Azure 球體裝置都會獲得唯一的內部裝置識別碼,該識別碼會持續透過裝置的任何更新執行,包括復原作業。
不過,在數字系統中,裝置的識別碼很容易遭到詐騙、偽造或濫用。 因此,您只應允許其身分識別可以驗證及驗證的裝置存取您極有價值的資料並聯機到您的服務。
Azure 球體提供一個程式,讓裝置在驗證) (識別自己,以及確認裝置的身分識別 (證明) 。 Azure 球體安全性服務所採用的驗證和證明程式使用預先已知的金鑰、安全通訊和特殊硬體來確認裝置的身分識別。 如果裝置驗證和證明成功,系統會向裝置發出憑證。 有效的憑證表示:
- 已驗證裝置的身分識別。
- 可以信任裝置。
在 Azure 球體中,裝置憑證會先鏈結至型錄層級憑證, (讓組織輕鬆信任來自其本身目錄) 的裝置,然後再信任 Microsoft 憑證,這反映 Microsoft 已驗證此硬體是執行受保護 Microsoft OS 之認證 Azure 球體晶片的驗證實例。
下列概念可協助以最安全且最有效的方式使用裝置身分識別:
信任是暫時的
對系統的信任可能會遺失,而且可以重新獲得信任。 在 IoT 系統中實作零信任架構的原則是進行明確驗證。 這表示每次您與裝置互動時,都會明確判斷裝置的真實性,並證明資料交易值得信任。 Azure 球體裝置會使用 Azure 球體雲端安全性服務,每 24 小時自動執行一次驗證和證明程式。 指出裝置的身分識別已成功驗證,表示有密碼編號憑證存在於 Microsoft Azure 球體雲端安全性服務中。Identity = 識別碼 + 證明
識別碼可以複製和複製。 因此,裝置不能只是以其識別碼來已知。 裝置的身分識別 (或使用者的身分識別) 必須視為識別碼的組合,並證明這類識別碼在特定內容中有效。 您不應該將識別碼指派給裝置,而且使用這些識別碼與證明程式無關。 盡可能將識別碼與系統內每一層互動的證明結合。識別碼 + 信任憑證
識別碼應視為非參照。 單獨假設不應該假設它所參照之物件的可信度有任何相關資訊。 例如,使用識別碼訂閱 MQTT 郵件、使用識別碼在入口網站內將信任的資料組成群組,以及使用識別碼路由系統中的流量和資料。 不過,若要信任,而非信任識別碼,請信任以密碼編譯方式簽署及鏈聯的憑證。 憑證對於系統元件之間的無密碼資料流程程特別有説明,而且可證明已在特定內容中經過測試且證明值得信任的身分識別。
使用Azure IoT 中樞時,如果是根據檔中的建議進行設定,則這些概念已整合,簡化安全且有彈性系統的部署。
連線到您直接控制的非 Azure 端點或服務時,也必須套用這些概念。 例如,如果使用 MQTT,裝置可能會在其發佈到的 MQTT 主題中包含自己的身分識別。 不過,在接受來自裝置的主題更新之前,MQTT 伺服器必須驗證裝置提供的憑證是否經過驗證,才能發佈至此特定主題。
Azure 球體裝置憑證和裝置識別碼存取權
若要在應用程式中存取裝置憑證,請使用 DeviceAuth_GetCertificatePath 函數。
若要存取裝置的唯一裝置識別碼,請使用wolfSSL_X509_get_subject_name函數,從DeviceAuth_GetCertificatePath () 函數所提供的憑證剖析主旨。
程式碼片段 取得 Azure 球體裝置識別碼 示範如何在高階應用程式中取得 Azure 球體裝置識別碼。 它會將裝置識別碼傳回為 128 個字元的字元緩衝區。 此程式碼片段命令 wolfSSL 可開啟具有憑證的會話、提取內容和憑證、剖析出憑證的主體識別碼,也就是 Azure 球體裝置的裝置識別碼,並以指標的形式傳回 char
。