应用程序平台

在 Azure Sphere 设备上运行的应用程序在沙盒容器中运行。 此环境旨在维护软件和数据的安全性,并防止服务中断。

该图显示了应用程序平台的软件元素。 Microsoft 提供的元素为灰色,制造商提供的元素为白色。

应用程序平台

Azure Sphere 应用程序平台

应用程序平台支持两种操作环境:Normal World 和 Secure World。 Azure Sphere 应用程序在普通世界用户模式下的应用程序容器中运行,并有权访问 Azure Sphere 库和一组有限的 OS 服务。 基础自定义 Linux 内核(包括 Microsoft 提供的设备驱动程序)在“普通世界”监督模式下运行,安全监视器在 Secure World 中运行。 只有 Microsoft 提供的代码才能在监督模式或安全世界中运行。

应用程序在支持 POSIX 环境的子集的容器中运行。 只能通过 Azure Sphere 库和运行时服务访问系统函数;完整的 POSIX 系统函数集不可用。

在硬件级别 () 图中未显示,安全子系统提供基于硬件的安全信任根。 在设备启动时,安全子系统会验证整体硬件安全性,然后仅在验证其固件是否正确签名后才会启动其他组件。 同样,固件在加载软件的下一层之前会验证它的安全性,并且每个后续的软件层都会验证它上面的层。

应用程序安全性

Azure Sphere 应用程序平台旨在确保设备、应用程序及其数据的安全性。 应用程序安全功能包括:

  • 对外部资源的有限访问
  • 应用程序功能
  • 签名要求
  • 设备功能

访问资源

为了防止来自外部软件的恶意干扰,Azure Sphere 应用程序只能访问 Microsoft 提供的库和运行时服务。 库受到限制,以确保平台保持安全且可以轻松更新。 除其他限制外,它们不支持直接文件 I/O、进程间通信 (IPC) 或 shell 访问。

应用程序功能

应用程序功能 是应用程序所需的资源。 应用程序功能包括应用程序使用的 GPIO 和 UART 外围设备、它连接到的 Internet 主机以及更改 Wi-Fi 配置的权限。 每个应用程序都必须有一个 应用程序清单,用于标识这些资源。

签名要求

必须对部署到 Azure Sphere 设备的所有映像包进行签名。 Azure Sphere SDK 和 [az sphere image-package] (./reference/az sphere-image-package.md) 命令对映像包进行签名,以便使用 SDK 签名密钥进行测试。 仅当 appDevelopment设备功能 也存在时,Azure Sphere 设备才信任此密钥。

将映像包上传到云时,Azure Sphere 安全服务对映像包进行生产签名。 生产签名的映像包可以旁加载或从云加载。

设备功能

设备功能允许用户执行特定于设备的活动。 设备功能由 Azure Sphere 安全服务授予,并存储在 Azure Sphere 芯片上的闪存中。 默认情况下,Azure Sphere 芯片没有设备功能。

appDevelopment 设备功能更改设备信任的签名类型。 默认情况下,Azure Sphere 设备信任生产签名的映像包,但不信任 SDK 签名的映像包。 因此,无法将 SDK 签名的映像包旁加载到没有此功能的 Azure Sphere 设备。 但是,当存在 appDevelopment 功能时,设备信任 SDK 签名的映像包。 此外,它使用户能够启动、停止、调试或删除设备中的应用程序。 总之,必须先在设备上提供应用程序开发功能,然后才能:

az sphere device enable-development 命令创建并应用 appDevelopment 功能,并阻止设备接收云应用程序更新。