Amazon IoT Greengrass 的安全最佳实践 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到Amazon IoT Greengrass Version 2,它补充说重要的新功能支持其他平台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon IoT Greengrass 的安全最佳实践

本主题包含 Amazon IoT Greengrass 的安全最佳实践。

授予可能的最低权限

在 IAM 角色中使用最低权限集,遵循最小权限原则。限制在您的 IAM 策略中对ActionResource属性的使用*通配符。而是在可能的情况下声明一组有限的操作和资源。有关最低权限和其他策略最佳实践的更多信息,请参阅 策略最佳实践

最低权限最佳实践也适用于您附加到 Greengrass 核心和客户端设备的Amazon IoT策略。

不要在 Lambda 函数中对凭据进行硬编码

不要在用户定义的 Lambda 函数中对证书进行硬编码。为了更好地保护您的凭证:

  • 要与 Amazon 服务交互,请为 Greengrass 组角色中的特定操作和资源定义权限。

  • 使用本地密钥存储您的凭证。或者,如果此函数使用Amazon SDK,则使用默认凭证提供程序链获取凭证。

不要记录敏感信息

您应该禁止记录凭证和其他个人身份信息 (PII)。尽管访问核心设备上的本地日志需要 root 权限,而访问 CloudWatch 日志需要 IAM 权限,但我们建议您实施以下保护措施。

  • 不要在 MQTT 主题路径中使用敏感信息。

  • 不要在 Amazon IoT Core 注册表中的设备(事物)名称、类型和属性中使用敏感信息。

  • 不要在用户定义的 Lambda 函数中记录敏感信息。

  • 不要在 Greengrass 资源的名称和 ID 中使用敏感信息:

    • 连接器

    • 核心

    • 设备

    • 函数

    • 日志记录程序

    • 资源(本地、机器学习或密钥)

    • 订阅

创建目标订阅

订阅通过定义服务、设备和 Lambda 函数之间的消息交换方式来控制 Greengrass 组中的信息流。为了确保应用程序只能够按预期执行操作,您的订阅应该允许发布者仅向特定主题发送消息,并限制订阅者仅从其功能所需的主题接收消息。

使设备时钟保持同步

请务必确保您的设备上有准确的时间。X.509 证书具有到期日期和时间。设备上的时钟用于验证服务器证书是否仍有效。设备时钟可能会在一段时间后出现偏差,或者电池可能会放电。

有关更多信息,请参阅《Amazon IoT Core开发者指南》中的 “保持设备时钟同步” 最佳实践。

使用 Greengrass 核心管理设备身份验证

客户端设备可以运行 FreeRTOS,也可以使用Amazon IoT设备 SDK 或 DAmazon IoT Greengrass iscover y API 来获取发现信息,用于连接和验证同一 Greengrass 组中的内核。发现信息包括:

  • 与客户端设备位于同一 Greengrass 组中的 Greengrass 核心的连接信息。此信息包括核心设备每个终端节点的主机地址和端口号。

  • 用于签署本地 MQTT 服务器证书的组 CA 证书。客户端设备使用组 CA 证书来验证核心提供的 MQTT 服务器证书。

以下是客户端设备使用 Greengrass 内核管理相互身份验证的最佳实践。如果您的核心设备遭到破坏,这些实践可以帮助您降低风险。

验证每个连接的本地 MQTT 服务器证书。

每次与内核建立连接时,客户端设备都应验证内核提供的 MQTT 服务器证书。此验证是核心设备和客户端设备之间相互身份验证的客户端设备端。客户端设备必须能够检测到故障并终止连接。

不要对发现信息进行硬编码。

即使内核使用静态 IP 地址,客户端设备也应依靠发现操作来获取核心连接信息和组 CA 证书。客户端设备不应硬编码此发现信息。

定期更新发现信息。

客户端设备应定期运行发现以更新核心连接信息和组 CA 证书。我们建议客户端设备在与内核建立连接之前更新此信息。由于缩短发现操作之间的持续时间可以最大限度地缩短潜在的暴露时间,因此我们建议客户端设备定期断开连接并重新连接以触发更新。

如果您失去对 Greengrass 核心设备的控制并且想要阻止客户端设备向内核传输数据,请执行以下操作:

  1. 从 Greengrass 组中移除 Greengrass 核心。

  2. 轮换组 CA 证书。在Amazon IoT控制台中,您可以在群组的 “设置” 页面上轮换 CA 证书。在Amazon IoT Greengrass API 中,您可以使用该CreateGroupCertificateAuthority操作。

    如果您的核心设备的硬盘驱动器容易被盗,我们还建议使用全磁盘加密。

有关更多信息,请参阅Amazon IoT Greengrass 的设备身份验证和授权

另请参阅