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

Amazon IoT Greengrass Version 1 2023 年 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 开发工具包,请使用默认凭证提供程序链中的凭证。

不要记录敏感信息

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

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

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

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

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

    • 连接器

    • 内核

    • 设备

    • 函数

    • 日志记录程序

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

    • 订阅

创建目标订阅

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

使设备时钟保持同步

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

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

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

客户端设备可以运行 FreeRTOS 或使用 Amazon IoT 设备开发工具包Amazon IoT Greengrass 发现 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 的设备身份验证和授权

另请参阅