> For the complete documentation index, see [llms.txt](https://wokough.gitbook.io/iot-firmware-aio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wokough.gitbook.io/iot-firmware-aio/appendix/fu-lu-5azure-iot-sdlc-best-practice.md).

# 附录5：Azure IOT SDLC Best Practice

保护物联网 (IoT) 基础结构需要严格的深度安全防御策略。 该策略要求保护云中的数据，在公共 Internet 中传输数据时保护数据的完整性以及安全预配设备。 在总体基础结构中的每一层构建更强的安全性保证。

### 一、**保护 IoT 基础结构**

此深度安全保护可由制造、开发和部署 IoT 设备与基础结构所涉及的各个积极参与者来开发及执行。 下面是这些参与者的高级描述。

* **IoT 硬件制造商/集成商**：通常这些参与者是要部署的 IoT 硬件的制造商、组装来自各个制造商的硬件的集成商，或针对其他供应商制造或集成的 IoT 部署提供硬件的供应商。
* **IoT 解决方案开发人员**：IoT 解决方案的开发通常由解决方案开发人员完成。 此开发人员可能是内部团队成员或专门从事此活动的系统集成商 (SI)。 IoT 解决方案开发人员可从头开始开发 IoT 解决方案的各种组件，或者集成各种现成组件或开源组件。
* **IoT 解决方案部署人员**：完成开发 IoT 解决方案之后，需要在现场部署解决方案。 此过程涉及硬件部署、设备互连以及在硬件设备或云中部署解决方案。
* **IoT 解决方案操作员**：IoT 解决方案部署完成之后，需要长期的操作、监视、升级和维护。 这些任务可由内部团队来完成，该团队由信息技术专业人员、硬件操作和维护团队，以及负责监督整体 IoT 基础结构行为是否正常的领域专业人员组成。

后续部分将提供每个参与者可遵循的最佳实践，以帮助开发、部署和操作安全的 IoT 基础结构。

### 二、**IoT 硬件制造商/集成商**

以下是 IoT 硬件制造商和硬件集成商的最佳做法。

* **设置符合最低要求的硬件范围**：硬件设计应包括硬件工作时所需的最少功能，仅此而已。 其中一个例子就是仅在必需运行设备时，才包括 USB 端口。 这些附加功能会使硬件容易出现有害的攻击载体，因此应予以避免。
* **让硬件具有防篡改功能**：内置检测物理篡改（例如打开设备护盖、拆下设备构件）的机制。 这些篡改信号可以是上传到云的数据流的一部分，可提醒操作员这些事件。
* **围绕安全硬件构建功能**：如果 COGS 允许，请构建安全功能，例如，安全与加密存储或基于受信任的平台模块 (TPM) 的引导功能。 这些功能将使设备更安全，有助于保护 IoT 总体基础结构。
* **安全升级**：设备生存期内，固件升级无可避免。 构建安全的设备升级路径和固件版本加密保证，可保护设备在升级期间和升级之后的安全性。

### 三、**IoT 解决方案开发人员**

以下是 IoT 解决方案开发人员的最佳做法：

* **遵循安全软件开发方法**：开发安全软件需要在项目开端到项目实施、测试和部署过程中，随时考量安全相关事项。 平台、语言和工具的选择也都受此方法的影响。 Microsoft 安全开发周期提供构建安全软件的循序渐进方法。
* **谨慎选择开源软件**：开源软件有时可以加速解决方案的开发。 选择开源软件时，请考虑每个开源组件的社区活跃程度。 活跃的社区可确保软件受支持，问题得以发现和解决。 相反，不知名或不活跃的开源软件项目可能不会受到支持，且问题也可能不会得以发现。
* **谨慎集成**：库和 API 的边界上存在许多软件安全漏洞。 当前部署中不需要的功能仍然可能会通过 API 层得到使用。 若要确保总体安全性，请务必检查正针对安全缺陷进行集成的组件的所有接口。

### 四、**IoT 解决方案部署人员**

以下是 IoT 解决方案部署人员的最佳做法：

* **安全部署硬件**：IoT 部署可能需要将硬件部署在不安全的位置，例如公共场所或不受监督的区域。 在这种情况下，请确保硬件部署能够在最大程度上防篡改。 如果硬件上有 USB 或其他端口，请确保这些端口盖有安全保护盖。 许多攻击载体可能使用这些端口作为入口点。
* **保持身份验证密钥处于安全状态**：在部署期间，每个设备需要使用云服务生成的设备 ID 和关联的身份验证密钥。 即使是在部署之后，也必须以物理方式保护这些密钥的安全。 恶意设备可能会使用任何透漏的密钥伪装成现有设备。

### 五、**IoT 解决方案操作员**

以下是 IoT 解决方案操作员的最佳做法：

* **使系统保持最新状态**：确保设备的操作系统和所有设备驱动程序都已升级到最新版本。 如果在 Windows 10（IoT 或 其他 SKU）中启用自动更新，则 Microsoft 将使其保持最新状态，为 IoT 设备提供安全的操作系统。 使其他操作系统（例如 Linux）保持最新有助于确保它们也能免于恶意攻击。
* **防御恶意活动**：如果操作系统允许，请在每个设备操作系统上安装最新的防病毒和反恶意软件功能。 这种做法有助于缓解大多数外部威胁。 采取合适的步骤可保护大多数现代操作系统免受威胁。
* **经常审核**：响应安全事件时，针对安全相关问题审核 IoT 基础结构是关键所在。 大多数操作系统都提供内置事件日志记录，应经常进行审查这些日志以确保未出现安全违规。 可将审核信息作为单独的遥测流发送到云服务，并在云中进行分析。
* **以物理方式保护 IoT 基础结构**：针对 IoT 基础结构的最严重安全攻击是通过物理访问设备的方式发起的。 防止恶意使用 USB 端口和其他物理访问是一种非常重要的安全做法。 发现可能已出现的安全违规的一个关键在于记录物理访问，例如 USB 端口的使用。 同样，Windows 10（IoT 和其他 SKU）可针对这些事件启用详细日志记录。
* **保护云凭据**：用于配置和操作 IoT 部署的云身份验证凭据可能是访问和损坏 IoT 系统的最简单手段。 经常更改密码并避免在公用计算机上使用凭据可保护这些凭据。

不同的 IoT 设备具有不同的功能。 某些设备可能是运行常见桌面操作系统的计算机，而某些设备可能运行极其精简的操作系统。 前面描述的安全最佳做法可能适用于这些不同级别的设备。 如果这些设备的制造商提供了附加的安全和部署最佳实践，则应予以遵循。

某些旧式设备和功能受限的设备可能不是专门为 IoT 部署而设计的。 这些设备可能缺少加密数据、连接 Internet 或提供高级审核功能。 在这种情况下，安全的新式现场网关可聚合旧式设备中的数据，并提供通过 Internet 连接这些设备所必需的安全性。 现场网关可提供安全身份验证、加密会话协商、云命令接收，以及其他许多安全功能。

来源：[***Azure固件安全***](https://docs.microsoft.com/zh-cn/azure/security/fundamentals/firmware)
