我们非常高兴地介绍 AWS IoT Greengrass 的 证书轮换器组件,这是 Greengrass 软件目录 中的新组件。
AWS IoT Greengrass 将 AWS 云与边缘设备紧密连接,支持需要本地数据处理和低延迟的应用程序。随着消费、企业和工业领域边缘设备数量的增加,如何应对 IoT 边缘设备带来的安全风险,尤其是与云通信时的风险,成为一个重要的课题。在有着几十年历史的工业控制系统ICS的操作技术环境中,边缘设备往往充当网关,保护和连接这些能力较弱的系统。
我们推荐采用多层次的安全策略来保护 IoT 解决方案。为确保数据从 IoT 边缘设备到云的传输安全、加密,AWS IoT Core 支持基于 TLS 的双向认证,使用 X509 证书。用户必须为每个 IoT 边缘设备配置唯一的身份,包括唯一的私钥和 X509 证书。虽然证书是长期有效的凭证,但在设备的生命周期内可能需要进行证书续签。管理设备证书的生命周期,包括证书和私钥的定期轮换,是 AWS WellArchitected Framework 中 IoT 设计最佳实践之一。
在本文中,您将学习如何使用证书轮换器组件,以及如何利用 AWS 服务轮换 AWS IoT Greengrass 核心设备证书和私钥。这个解决方案可直接部署,但也是一个 开源参考实现,您可以根据需要进行定制。
AWS IoT Greengrass 是一款边缘计算的 IoT 运行时和云服务,帮助您构建、部署和管理智能 IoT 设备软件。它提供了常见功能的 预构建组件,例如 本地/云 MQTT 消息传递、支持本地边缘处理的 机器学习推理、日志记录与监控、与 AWS 服务的开箱即用集成,以及 本地数据聚合、过滤和传输到云目标。完成开发后,您可以 无缝部署 并远程管理数百万设备的软件。
AWS IoT Greengrass 核心设备通过其设备证书和私钥来 认证 和连接到 AWS IoT Core。一个 AWS IoT 策略 授权访问 AWS IoT Core 和 AWS IoT Greengrass 数据平面。当核心设备被授权后,AWS IoT Greengrass 组件可以通过进程间通信发送和接收 MQTT 消息,无需额外的身份验证或授权。为了获得对非 IoT AWS 服务的 授权访问,AWS IoT Greengrass 使用 令牌交换服务 和 AWS IoT Core 凭证提供程序 将 X509 设备证书交换为时效性 AWS 凭证。这些时效性凭证被授权执行 AWS IoT Greengrass 核心设备角色也称为令牌交换角色 中定义的操作。
因此,X509 设备证书和私钥是 AWS IoT Greengrass 核心设备身份和认证的基础。您有责任根据您的操作需要轮换设备证书和私钥。为了指导您实施这一过程,AWS 提供了 设备证书轮换的博客、IoT Jumpstart 工作坊,以及 连接设备框架CDF证书供应商模块。这些文档化的轮换流程提供了部分实现参考。
对于许多 AWS IoT 设备类型,由于设备软件极度依赖设备硬件,因此提供完整的端到端设备证书轮换参考实现会比较困难。尤其是证书和私钥的存储及 API 强烈受硬件和硬件抽象层HAL的影响。不过,通过 AWS IoT Greengrass 核心软件安装配置 ,AWS 标准化了证书和私钥的存储。证书和私钥的位置由 certificateFilePath 和 privateKeyPath 配置参数定义。因此,可以提供可部署的端到端证书轮换参考实现。
证书轮换器组件由两部分组成:一个名为 awsgreengrasslabsCertificateRotator 的 AWS IoT Greengrass 组件,负责设备的合同部分,以及一个基于 AWS 云开发工具包 (CDK) 的云后端堆栈。云后端主要由三个 Lambda 函数、三个 AWS IoT Core 规则、一个名为 AWSLabsCertificateRotator 的 AWS IoT 自定义作业模板,以及一个 Amazon Simple Notification Service (SNS) 主题组成。证书由 AWS IoT Core 或 AWS 私有证书颁发机构 (CA) 颁发。
正如所述,证书轮换器组件与云后端通过 MQTT 进行通信。一个 AWS IoT 作业 定义了一组可以发送到一个或多个设备并在其上运行的远程操作。云应用程序通过使用自定义作业模板创建 AWS IoT 作业来启动证书和私钥的轮换。作业创建的调用条件和业务逻辑由客户或应用开发者决定。换句话说,该解决方案提供了轮换设备证书和私钥的手段,但不限制何时或为何进行轮换。示例调用条件包括 AWS IoT 设备防御审计检查 或 检测异常、一定的周期性,或新的合规要求要求使用不同的私钥算法。
SNS 主题用于通知用户任何证书轮换失败的情况。客户可以利用 SNS 订阅 的灵活性,实施适合其业务的失败处理和恢复。
解决方案的主要特性包括:
能够轮换存储在磁盘上的文件或作为 PKCS#11 对象在硬件安全模块 (HSM) 中的凭证。您应选择适合您安全策略的存储类型,AWS 推荐使用 HSM 来保护这些凭证。云后端可以使用 AWS IoT Core 或 AWS 私有 CA 来颁发设备证书,这一选择在解决方案部署期间由 CDK 上下文变量 确定。选择 AWS 私有 CA 可以让您使用自己的 CA,并控制证书的过期日期。证书轮换过程封装在一个 AWS IoT 作业 中,该作业是根据提供的作业模板创建的。这意味着您可以利用作业的高级能力,例如 作业配置 和处理 intermittent 连通性的设备,以规模管理您的设备队伍上的凭证。该组件可部署到运行 Linux 或 Windows 的核心设备。唯一的限制是该组件假设 AWS IoT Greengrass 作为系统服务安装。您可以根据用例、风险评估和安全策略灵活决定何时轮换证书,轮换可以自动进行,以减少因手动轮换而导致的潜在访问中断。该解决方案对扰动具有韧性,并通过 SNS 为用户提供 通知。详细的 部署说明 和 先决条件 包含在 证书轮换器存储库 中,以及 “AWS IoT Greengrass 的证书轮换器”视频。您需要在每个运行 IoT/IIoT 工作负载的 AWS 账户和/或区域中部署该解决方案。部署分为两部分:部署云后端 CDK 应用程序,以及构建、发布和部署 AWS IoT Greengrass 组件。
一旦组件和云后端部署完成,只需使用 AWSLabsCertificateRotator 作业模板创建一个作业即可执行证书轮换。作业的创建可以通过多种方式实现,包括:
surfshark大陆版AWS IoT 控制台AWS CLIAWS IoT 设备管理的 Fleet Hub
尽管解决方案以可部署形式提供,但您可能希望对其进行修改,以适应您的用例。组件和云后端提供了:
广泛的 单元测试套件,具备 100 行和分支覆盖率。广泛的 自动化集成测试套件,对根据用户定义的 AWS IoT Greengrass 核心设备的事物组进行证书轮换测试。CI/CD 管道,用于开发环境,自动化构建、发布和部署组件及云后端,并运行完整的单元和集成测试以进行自动化回归测试。AWS 推荐采用多层次的安全策略来保护 IoT 解决方案,包括使用强身份、最少特权访问、监控设备健康与异常、安全连接以修复问题、以及应用更新以保持设备的最新与健康。当您使用 X509 证书进行数字身份和认证时,可能需要根据设备健康和业务环境轮换证书和私钥。
您可以使用 AWS IoT 设备防御 来审计设备证书何时过期,检查设备证书密钥质量和其他证书最佳实践,这些都可以作为轮换 IoT 边缘设备证书和私钥的调用条件。尽管较短的证书有效期需要更多关注,但有了这个 AWS IoT Greengrass 证书轮换器组件,AWS IoT 使得 IoT 边缘设备证书和私钥的轮换变得更加简易,同时增强了 IoT 系统的安全性。
Ryan Dsouza 是 AWS 的 IoT 首席解决方案架构师,位于纽约市。他帮助客户设计、开发和运营更安全、可扩展和创新的解决方案,利用 AWS 的广泛和深厚能力实现可衡量的业务成果。Ryan 拥有超过 25 年的数字平台、智能制造、能源管理、建筑和工业自动化与 OT/IIoT 安全等各领域的经验。在加入 AWS 之前,Ryan 曾在埃森哲、西门子、通用电气、IBM 和 AECOM 工作,服务于客户的数字化转型项目。