保护您的 IoT 部署





0/5 (0投票)
本文档提供了有关保护基于 Azure IoT 的物联网 (IoT) 基础设施的更详细信息。它链接到配置和部署每个组件的实现级别详细信息。此外,它还提供了各种竞争方法之间的比较和选择。
Azure IoT 部署的安全性可分为以下三个安全领域:
- 设备安全:在物联网设备部署到实际应用环境中时保护其安全。
- 连接安全:确保物联网设备和 IoT Hub 之间传输的所有数据都是保密的且不可篡改。
- 云安全:提供一种在数据通过云层传输和存储时保护数据的方法。
安全设备配置和身份验证
Azure IoT Suite 通过以下两种方法保护 IoT 设备:
- 为每个设备提供唯一的身份密钥(安全令牌),设备可以使用该密钥与 IoT Hub 通信。
- 使用设备上的 X.509 证书和私钥作为向 IoT Hub 验证设备的手段。此身份验证方法确保设备上的私钥在任何时候都不会在设备外部泄露,从而提供更高级别的安全性。
安全令牌方法通过将对称密钥与每个调用关联,为设备向 IoT Hub 的每次调用提供身份验证。基于 X.509 的身份验证允许在 TLS 连接建立过程中,在物理层上对 IoT 设备进行身份验证。在没有 X.509 身份验证的情况下也可以使用基于安全令牌的方法,但这是一种安全性较低的模式。这两种方法之间的选择主要取决于设备身份验证的安全性需求以及设备上是否存在安全存储(用于安全地存储私钥)。
IoT Hub 安全令牌
IoT Hub 使用安全令牌来验证设备和服务,以避免在网络上发送密钥。此外,安全令牌具有时间有效性和范围限制。Azure IoT Hub SDK 会自动生成令牌,无需任何特殊配置。但在某些情况下,需要用户直接生成和使用安全令牌。这些情况包括直接使用 AMQP、MQTT 或 HTTP 接口,或实现令牌服务模式。
有关安全令牌结构及其用法的更多详细信息,请参阅以下文章:
- 安全令牌结构
- 将 SAS 令牌用作设备
每个 IoT Hub 都拥有一个 设备身份注册表,可用于在服务中创建每个设备的资源,例如包含正在传输的云到设备消息的队列,以及允许访问面向设备的终结点。IoT Hub 身份注册表为解决方案提供设备身份和安全密钥的安全存储。可以为个体或一组设备身份添加允许列表或阻止列表,从而实现对设备访问的完全控制。以下文章提供了有关设备身份注册表结构和支持的操作的更多详细信息。
IoT Hub 支持 AMQP、MQTT 和 HTTPS 等协议。这些协议在物联网设备到 IoT Hub 的安全令牌使用方式上有所不同:
- AMQP:SASL PLAIN 和基于声明的 AMQP 安全(对于 Hub 级别令牌,为 {policyName}@sas.root.{iothubName};对于设备范围的令牌,为 {deviceId})。
- MQTT:CONNECT 数据包使用 {deviceId} 作为 {ClientId},使用 {IoThubhostname}/{deviceId} 作为 Username 字段,并使用 SAS 令牌作为 Password 字段。
- HTTP:有效的令牌包含在授权请求标头中。
IoT Hub 设备身份注册表可用于配置每个设备的安全性凭证和访问控制。但是,如果 IoT 解决方案已大量投资于 自定义设备身份注册表和/或身份验证方案,则可以通过创建令牌服务将其集成到现有基础架构中,并与 IoT Hub 一起使用。
基于 X.509 证书的设备身份验证
使用 基于设备的 X.509 证书及其关联的私钥和公钥对,可以在物理层上实现额外的身份验证。私钥安全地存储在设备上,并且无法在设备外部发现。X.509 证书包含有关设备的信息,例如设备 ID 和其他组织详细信息。使用私钥为证书生成签名。
高层设备配置流程
- 将标识符与物理设备相关联——在设备制造或调试过程中,将设备身份和/或 X.509 证书与设备关联。
- 在 IoT Hub 中创建相应的身份条目——在 IoT Hub 设备注册表中创建设备身份和关联的设备信息。
- 安全地在 IoT Hub 设备注册表中存储 X.509 证书的指纹。
设备上的根证书
在与 IoT Hub 建立安全 TLS 连接时,IoT 设备使用设备 SDK 中的根证书来验证 IoT Hub。对于 C 客户端 SDK,证书位于存储库根目录下的 "\c\certs" 文件夹中。虽然这些根证书的有效期很长,但仍可能过期或被吊销。如果无法在设备上更新证书,设备将无法连接到 IoT Hub(或任何其他云服务)。一旦 IoT 设备部署完毕,能够更新根证书的机制将有效地缓解此风险。
保护连接
物联网设备和 IoT Hub 之间的 Internet 连接使用传输层安全 (TLS) 标准进行保护。Azure IoT 按以下顺序支持 TLS 1.2、TLS 1.1 和 TLS 1.0。对 TLS 1.0 的支持仅出于向后兼容性考虑。建议使用 TLS 1.2,因为它提供了最高的安全性。
Azure IoT Suite 按以下顺序支持以下密码套件:
密码套件 | 长度 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp384r1 (相当于 7680 位 RSA) FS | 256 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp256r1 (相当于 3072 位 RSA) FS | 128 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp384r1 (相当于 7680 位 RSA) FS | 256 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp256r1 (相当于 3072 位 RSA) FS | 128 |
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) | 256 |
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) | 128 |
TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) | 256 |
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c) | 128 |
TLS_RSA_WITH_AES_256_CBC_SHA (0x35) | 256 |
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) | 128 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) | 112 |
保护云
Azure IoT Hub 允许为每个安全密钥定义 访问控制策略。它使用以下权限集来授予对 IoT Hub 各个终结点的访问权限。权限通过功能限制对 IoT Hub 的访问。
- RegistryRead。授予对设备身份注册表的读取访问权限。有关更多信息,请参阅 设备身份注册表。
- RegistryReadWrite。授予对设备身份注册表的读取和写入访问权限。有关更多信息,请参阅 设备身份注册表。
- ServiceConnect。授予对面向云服务的通信和监视终结点的访问权限。例如,它授予后端云服务接收设备到云消息、发送云到设备消息以及检索相应传递确认的权限。
- DeviceConnect。授予对面向设备的通信终结点的访问权限。例如,它授予发送设备到云消息和接收云到设备消息的权限。此权限由设备使用。
使用 安全令牌,有两种方法可以获得 IoT Hub 的 DeviceConnect 权限:使用设备身份密钥或共享访问策略密钥。此外,值得注意的是,从设备访问的所有功能均按设计通过具有前缀/devices/{deviceId}
的终结点公开。
Azure IoT Hub 和可能构成解决方案一部分的其他服务允许使用 Azure Active Directory 管理用户。
Azure IoT Hub 摄入的数据可以由各种服务使用,例如 Azure Stream Analytics、Blob 存储等。这些服务允许进行管理访问。有关这些服务和可用选项的详细信息,请参阅下方内容:
- Azure DocumentDB:一个可扩展的、完全索引的半结构化数据数据库服务,用于管理您配置的设备的元数据,如属性、配置和安全属性。DocumentDB 提供高性能、高吞吐量的数据处理,以及无模式的数据索引和丰富的 SQL 查询界面。
- Azure Stream Analytics:云中的实时流处理,使您能够快速开发和部署低成本的分析解决方案,从而从设备、传感器、基础设施和应用程序中挖掘实时见解。这项全托管服务的数据可以扩展到任何规模,同时仍能实现高吞吐量、低延迟和高弹性。
- Azure App Services:一个云平台,用于构建强大的 Web 和移动应用程序,这些应用程序可以连接到任何地方的数据;无论是云端还是本地。为 iOS、Android 和 Windows 构建引人入胜的移动应用程序。通过与数十种基于云的服务和企业应用程序的开箱即用连接,集成到您的软件即服务 (SaaS) 和企业应用程序中。使用您喜欢的语言和 IDE(.NET、NodeJS、PHP、Python 或 Java)编写代码,比以往任何时候都更快地构建 Web 应用程序和 API。
- Logic Apps:Azure App Service 的 Logic Apps 功能有助于将您的 IoT 解决方案与现有的业务线系统集成,并自动化工作流流程。Logic Apps 使开发人员能够设计从触发器开始然后执行一系列步骤的工作流——这些步骤是规则和操作,利用强大的连接器与您的业务流程集成。Logic Apps 提供与广泛的 SaaS、基于云和本地应用程序生态系统的开箱即用连接。
- Blob 存储:为您的设备发送到云中的数据提供可靠、经济高效的云存储。
结论
本文档提供了使用 Azure IoT 设计和部署 IoT 基础设施的实现级别详细信息概述。配置每个组件的安全是保护整个 IoT 基础设施的关键。Azure IoT 中提供的设计选择提供了一定程度的灵活性和选择性;然而,每个选择都可能带来安全隐患。建议通过风险/成本评估来评估这些选择中的每一个。
下一步
您还可以探索 IoT Suite 预配置解决方案的其他一些功能
有关该主题的进一步更新和新功能,请参阅 原始文档。