Device Update 會使用 Azure RBAC 來提供使用者和服務 API 的驗證和授權。 您必須將此資源的存取權授與使用者或應用程式,以便其他使用者和應用程式存取 Device Update。 您也必須設定 Azure Device Update 服務主體的存取權,以成功部署更新和管理您的裝置。
設定存取控制角色
以下是裝置更新支援的角色:
| 角色名稱 | 說明 |
|---|---|
| 裝置更新管理員 | 可存取所有 Device Update 資源 |
| 設備更新讀取器 | 可檢視所有更新和部署 |
| 裝置內容更新管理員 | 可檢視、匯入和刪除更新 |
| 裝置更新內容閱讀器 | 可檢視更新 |
| 裝置更新部署管理員 | 可管理裝置更新的部署 |
| Device Update 部署檢視者 | 可檢視裝置更新的部署 |
角色組合可用於提供正確的存取層級。 例如:開發人員可使用 Device Update 內容管理員角色匯入和管理更新,但需要 Device Update 部署讀取者角色,才能檢視更新的進度。 反之,具有 Device Update 讀取者角色的解決方案操作員可檢視所有更新,但需要使用 Device Update 部署系統管理員角色,才能將特定更新部署至裝置。
在 IoT 中樞中設定 Azure Device Update 服務主體的存取權
IoT 中樞的裝置更新會與 IoT 中樞進行通訊,以推動部署並大規模管理更新。 若要讓 Device Update 能夠執行此動作,使用者必須在 IoT 中樞權限設定對 Azure Device Update 服務主體的 IoT 中樞資料參與者存取權。
如果未設定下列許可權,即將發行的版本將會封鎖這些動作:
- 建立佈署
- 取消部署
- 重試部署
- 取得裝置
- 移至連線到裝置更新實例的 IoT中樞 。 按兩下 [存取控制][IAM]
- 按一下 + 加入 ->新增角色指派
- 在 [角色] 索引標籤下,選取 [IoT 中樞數據參與者]
- 按一下 [下一步]。 在存取權指派對象,選取使用者、群組或服務主體。 按兩下 [+ 選取成員],搜尋 [Azure 裝置更新]
- 按 下一步 - >檢視和指派
若要驗證您已正確設定權限:
- 前往連接到您裝置更新實例的 IoT Hub。 按兩下 [存取控制][IAM]
- 按一下 [檢查存取權]
- 選取 [使用者、群組或服務主體],然後搜尋 [Azure 裝置更新]
- 按兩下 [Azure 裝置更新] 之後,請確認IoT中樞數據參與者角色列在 [角色指派] 底下
驗證以存取設備更新 REST API
裝置更新會使用 Azure Active Directory (AD) 對其 REST API 進行驗證。 開始使用時,必須先建立及設定用戶端應用程式。
建立用戶端 Azure AD 應用程式
若要整合應用程式或服務與 Azure AD,請先 向 Azure AD 註冊用戶端應用程式。 視所需的授權流程 (使用者、應用程式或受控識別),用戶端應用程式安裝會有所不同。 例如,若要從下列來源呼叫 Device Update:
- 行動或桌面應用程式,新增行動和桌面應用程式平台,並將重新導向 URI 設為
https://login.microsoftonline.com/common/oauth2/nativeclient。 - 採用隱含登錄的網站,新增 Web 平台,並選取 [存取權杖 (用於隱含流程)]。
設定許可權
接著,將呼叫 Device Update 的權限新增至應用程式:
- 移至應用程式的 [API 權限] 頁面,並選取 [新增權限]。
- 移至 [我的組織所使用的 API],並搜尋 Azure Device Update。
- 選取 user_impersonation 權限,並選取 [新增權限]。
要求授權令牌
Device Update REST API 需要在要求標頭中包含 OAuth 2.0 授權權杖。 以下各節顯示一些請求授權令牌的方法範例。
使用 Azure CLI
az login
az account get-access-token --resource 'https://api.adu.microsoft.com/'
使用 PowerShell MSAL 程式庫
MSAL.PS PowerShell 模組為適用於 .NET 的 Microsoft 驗證程式庫 (MSAL .NET) 包裝函式。 該模組支援各種驗證方法。
使用使用者認證:
$clientId = '<app_id>'
$tenantId = '<tenant_id>'
$authority = "https://login.microsoftonline.com/$tenantId/v2.0"
$Scope = 'https://api.adu.microsoft.com/user_impersonation'
Get-MsalToken -ClientId $clientId -TenantId $tenantId -Authority $authority -Scopes $Scope
使用透過裝置代碼的使用者認證:
$clientId = '<app_id>’
$tenantId = '<tenant_id>’
$authority = "https://login.microsoftonline.com/$tenantId/v2.0"
$Scope = 'https://api.adu.microsoft.com/user_impersonation'
Get-MsalToken -ClientId $clientId -TenantId $tenantId -Authority $authority -Scopes $Scope -Interactive -DeviceCode
使用應用程式認證:
$clientId = '<app_id>’
$tenantId = '<tenant_id>’
$cert = '<client_certificate>'
$authority = "https://login.microsoftonline.com/$tenantId/v2.0"
$Scope = 'https://api.adu.microsoft.com/.default'
Get-MsalToken -ClientId $clientId -TenantId $tenantId -Authority $authority -Scopes $Scope -ClientCertificate $cert
支援受管理的身分識別
Azure 受管理的身分識別能夠以安全的方式在 Azure AD 中提供自動管理的身分識別服務。 這可消除開發人員必須藉由提供身分識別來管理認證的需求。 IoT 中樞裝置更新支援系統指派的受控識別。
系統指派的管理身份識別
若要在 Azure 入口網站中新增和移除系統指派的受控識別:
- 登入 Azure 入口網站,並且瀏覽至您想要的「IoT 中樞裝置更新」帳戶。
- 在您的 IoT 中樞裝置更新門戶中,導航至身份識別。
- 在您的 IoT Hub 入口網站中,導航至 [身分識別]
- 在 [系統指派] 索引標籤下,選取 [開啟],然後按一下 [儲存]。
若要從IoT中樞帳戶的裝置更新中移除系統指派的受控識別,請選取[關閉],然後按兩下 [儲存]。