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

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

AWS IoT Greengrass 的安全最佳实践

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

授予可能的最低权限

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

最低权限最佳实践也适用于您附加到 Greengrass 核心设备和连接设备的 AWS IoT 策略。

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

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

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

  • 使用本地密钥存储您的凭证。或者,如果函数使用 AWS 开发工具包,请使用默认凭证提供程序链中的凭证。

不要记录敏感信息

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

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

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

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

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

    • 连接器

    • 核心

    • 设备

    • 函数

    • 日志记录程序

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

    • 订阅

创建目标订阅

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

使设备时钟保持同步

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

有关更多信息,请参阅 AWS IoT Core 开发人员指南 中的使设备的时钟保持同步最佳实践。

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

Greengrass设备可以运行 FreeRTOS 或使用 AWS IoT 设备SDK AWS IoT Greengrass 发现API 获取发现信息,用于连接和验证同一Greengrass组中的core。 发现信息包括:

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

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

以下是连接设备使用 Greengrass 核心管理双向身份验证的的最佳实践。如果您的核心设备遭到破坏,这些实践可以帮助您降低风险。

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

设备应该在每次与核心建立连接时验证核心提供的 MQTT 服务器证书。此验证是核心设备与连接设备之间进行双向身份验证的连接设备端。设备必须能够检测故障并终止连接。

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

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

定期更新发现信息。

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

如果您失去了对 Greengrass 核心设备的控制,并且希望阻止连接设备将数据传输到核心,请执行以下操作:

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

  2. 轮换组 CA 证书。在 AWS IoT 控制台 中,您可以在组的 Settings (设置) 页面上轮换 CA 证书。在 AWS IoT Greengrass API,您可以使用 CreateGroupCertificateAuthority 行动。

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

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

另请参阅