Azure 基于角色的访问控制 (RBAC) 和设备更新

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

配置访问控制角色

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

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

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

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

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

如果未设置以下权限,即将发布的操作将被阻止:

  • 创建部署
  • 取消部署
  • 重试部署
  • 获取设备
  1. 转到 连接到您的设备更新实例的 IoT 中心。 单击 访问控制(IAM)
  2. 单击+ 添加 ->,然后添加角色分配
  3. 在“角色”选项卡下,选择 IoT 中心数据参与者
  4. 单击 “下一步” 。 对于分配访问权限,选择用户、组或服务主体。 请单击 后选择成员,然后搜索“Azure 设备更新
  5. 单击 “下一步” ->“审阅 + 分配”

验证是否已正确设置权限:

  1. 转到 连接到您的设备更新实例的 IoT 中心。 单击 访问控制(IAM)
  2. 单击 检查访问
  3. 选择 用户、组或服务主体 并搜索“Azure 设备更新
  4. 单击“Azure 设备更新”后,验证 IoT 中心数据贡献者 角色是否列在 角色分配 中。

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

设备更新使用 Azure Active Directory(AD)对其 REST API 进行身份验证。 若要开始使用,你需要创建并配置客户端应用程序。

创建客户端 Azure AD 应用

若要将应用程序或服务与 Azure AD 集成,请先 将客户端应用程序注册到 Azure AD。 客户端应用程序安装程序将根据所需的授权流(用户、应用程序或托管标识)而有所不同。 例如,要从 Device Update 进行调用,请执行以下操作:

  • 移动或桌面应用程序中,添加“移动和桌面应用程序”平台,并使用 作为重定向 URI。
  • 支持隐式登录的网站,添加“Web”平台,然后选择“访问令牌(用于隐式流)”。

配置权限

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

  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

对托管身份的支持

托管身份在 Azure AD 中为 Azure 服务自动提供身份管理,以确保安全。 通过提供标识,这样就消除了开发人员管理凭据的需要。 Device Update for IoT Hub 支持系统分配的托管标识。

系统分配的托管标识

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

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

若要从 IoT 中心帐户的设备更新中删除系统分配的托管标识,请选择“关闭”,然后单击“保存”。

后续步骤