

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 以下方面的安全最佳实践 AWS IoT Greengrass
<a name="security-best-practices"></a>

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

## 授予可能的最低权限
<a name="least-privilege"></a>

通过在 IAM 角色中使用最低权限集，遵循最低特权原则。在 IAM 策略中限制对 `Action` 和 `Resource` 属性使用 `*` 通配符。而是在可能的情况下声明一组有限的操作和资源。有关最低权限和其他策略最佳实践的更多信息，请参阅 [策略最佳实践](security_iam_id-based-policy-examples.md#security_iam_service-with-iam-policy-best-practices)。

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

## 不要在 Lambda 函数中对凭证进行硬编码
<a name="no-hardcoded-credentials"></a>

不要在用户定义的 Lambda 函数中对凭证进行硬编码。为了更好地保护您的凭证：
+ 要与 AWS 服务交互，请在 [Greengrass](group-role.md) 组角色中定义特定操作和资源的权限。
+ 使用[本地密钥](secrets.md)存储您的凭证。或者，如果该函数使用 AWS SDK，则使用来自默认凭证提供程序链的凭证。

## 不要记录敏感信息
<a name="protect-pii"></a>

您应该禁止记录凭证和其他个人身份信息 (PII)。尽管访问核心设备上的本地日志需要根权限，而访问 CloudWatch 日志需要 IAM 权限，但我们仍建议您实施以下保护措施。
+ 不要在 MQTT 主题路径中使用敏感信息。
+ 请勿在 AWS IoT Core 注册表中的设备（事物）名称、类型和属性中使用敏感信息。
+ 不要在用户定义的 Lambda 函数中记录敏感信息。
+ 不要在 Greengrass 资源的名称和 Greengrass IDs 资源中使用敏感信息：
  + 连接器
  + 内核
  + 设备
  + 函数
  + 组
  + 日志记录程序
  + 资源（本地、机器学习或密钥）
  + 订阅

## 创建目标订阅
<a name="targeted-subscriptions"></a>

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

## 使设备时钟保持同步
<a name="device-clock"></a>

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

有关更多信息，请参阅《*AWS IoT Core 开发者指南*》中的[保持设备时钟同步](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-clock)最佳实践。

## 使用 Greengrass 核心管理设备身份验证
<a name="manage-device-authentication-with-core"></a>

<a name="gg-device-discovery"></a>客户端进设备可以运行 [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-lib-gg-connectivity.html) 或使用 [AWS IoT 设备开发工具包](what-is-gg.md#iot-device-sdk)或 [AWS IoT Greengrass 发现 API](gg-discover-api.md)，以获取用于连接和验证同一 Greengrass 组中核心的发现信息。发现信息包括：
+ 与客户端设备位于同一个 Greengrass 组的 Greengrass 核心的连接信息。此信息包括核心设备每个终端节点的主机地址和端口号。
+ 用于签署本地 MQTT 服务器证书的组 CA 证书。客户端设备使用组 CA 证书验证核心提供的 MQTT 服务器证书。

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

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

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

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

如果您失去了对 Greengrass 核心设备的控制，并且希望阻止客户端设备将数据传输到核心，请执行以下操作：<a name="make-devices-distrust-core"></a>

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

1. 轮换组 CA 证书。在 AWS IoT 控制台中，您可以在群组的 “**设置”** 页面上轮换 CA 证书。在 AWS IoT Greengrass API 中，您可以使用[CreateGroupCertificateAuthority](https://docs.aws.amazon.com/greengrass/v1/apireference/creategroupcertificateauthority-post.html)操作。

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

有关更多信息，请参阅 [设备身份验证和授权 AWS IoT Greengrass](device-auth.md)。

## 另请参阅
<a name="security-best-practices-see-also"></a>
+ 《*AWS IoT 开发人员指南》*中的 [AWS IoT Core中的安全最佳实践](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html)
+ * AWS 官方博客上物联网工业物联网解决方案的*[十大安全黄金法则](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/)