你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 基于角色的访问控制 (RBAC) 和 Device Update

设备更新使用 Azure RBAC 为用户和服务 API 提供身份验证和授权。 为了使其他用户和应用程序有权访问设备更新,必须为用户和应用程序授予对此资源的访问权限。 还需要配置 Azure Device Update 服务主体的访问权限,以便成功部署更新和管理设备。

配置访问控制角色

以下是设备更新支持的角色:

角色名称 说明
设备更新管理员 有权访问所有 Device Update 资源
设备更新读取者 可以查看所有更新和部署
设备更新内容管理员 可以查看、导入和删除更新
设备更新内容读取者 可以查看更新
设备更新部署管理员 可以管理设备更新部署
设备更新部署读取者 可以查看设备更新部署

可以使用组合角色提供正确的访问级别。 例如,开发人员可以使用设备更新内容管理员角色导入和管理更新,但需要设备更新部署读取者角色才能查看更新进度。 相反,具有设备更新读取者角色的解决方案操作员可以查看所有更新,但需要使用设备更新部署管理员角色才能将特定更新部署到设备。

在 IoT 中心配置 Azure Device Update 服务主体的访问权限

Device Update for IoT Hub 与 IoT 中心通信,以进行大规模部署和管理更新。 若要启用设备更新以执行此操作,用户需要在 IoT 中心权限中为 Azure Device Update 服务主体设置 IoT 中心数据参与者访问权限。

如果未设置这些权限,则不允许执行部署、设备和更新管理以及诊断操作。 将阻止的操作包括:

  • 创建部署
  • 取消部署
  • 重试部署
  • Get Device

可以从 IoT 中心访问控制 (IAM) 设置权限。 请参阅在关联的 IoT 中心配置 Azure Device Update 服务主体的访问权限

对设备更新 REST API 进行身份验证

设备更新使用 Microsoft Entra ID 对其 REST API 进行身份验证。 若要开始使用,你需要创建并配置客户端应用程序。

创建客户端 Microsoft Entra 应用

要将应用程序或服务与 Microsoft Entra ID 集成,请先向 Microsoft Entra ID 注册客户端应用程序。 客户端应用程序安装程序将根据所需的授权流(用户、应用程序或托管标识)而有所不同。 例如,要从中调用设备更新,请执行以下操作:

  • 移动或桌面应用程序,使用重定向 URI 的 https://login.microsoftonline.com/common/oauth2/nativeclient 添加“移动和桌面应用程序”平台。
  • 支持隐式登录的网站,添加“Web”平台,然后选择“访问令牌(用于隐式流)”。

注意

Microsoft 建议使用最安全的可用身份验证流。 隐式流身份验证需要应用程序具有非常高的信任度,并且具有其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。

配置权限

接下来,请向应用添加调用设备更新的权限:

  1. 转到应用的“API 权限”页,然后选择“添加权限”。
  2. 转到“我的组织使用的 API”并搜索“Azure Device Update”。
  3. 依次选择“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 模块是 Microsoft Authentication Library for .NET (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

对托管标识的支持

托管标识在 Microsoft Entra ID 中以安全方式为 Azure 服务提供了一个自动托管标识。 这样,开发人员无需提供标识即可管理凭据。 Device Update for IoT Hub 支持系统分配的托管标识。

系统分配的托管标识

若要在 Azure 门户中添加和删除系统分配的托管标识,请执行以下操作:

  1. 登录到 Azure 门户,导航到所需的 Device Update for IoT Hub 帐户。
  2. 在 Device Update for IoT Hub 门户中导航到“标识”
  3. 在 IoT 中心门户中导航到“标识”
  4. 在“系统分配”选项卡下,选择“打开”,然后单击“保存” 。

若要从 Device Update for IoT Hub 帐户中删除系统分配的托管标识,请选择“关闭”,然后单击“保存”。

后续步骤