

支援終止通知：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 Logs 需要 IAM 許可，仍建議您實作下列保護措施。
+ 請勿在 MQTT 主題路徑中使用敏感資訊。
+ 請勿在 AWS IoT Core 登錄檔的裝置 （物件） 名稱、類型和屬性中使用敏感資訊。
+ 請勿在使用者定義的 Lambda 函數中記錄敏感資訊。
+ 請勿在 Greengrass 資源的名稱和 ID 中使用敏感資訊：
  + 連接器
  + 核心
  + 裝置
  + 函數
  + 群組
  + Loggers
  + 資源 (本機、機器學習和秘密)
  + 訂閱

## 建立目標訂閱
<a name="targeted-subscriptions"></a>

訂閱透過定義 服務、裝置和 Lambda 函數之間的訊息交換方式，來控制 Greengrass 群組中的資訊流程。若要確保應用程式只能執行其預期執行的動作，您的訂閱應允許發行者只將訊息傳送至特定主題，並限制訂閱者只接收來自其職能所需的主題的訊息。

## 讓裝置的時鐘保持同步
<a name="device-clock"></a>

在裝置上保持準確的時間是很重要的。X.509 憑證具到期日期和時間。裝置上的時鐘用來驗證伺服器憑證是否仍然有效。裝置時鐘可能會隨著時間而偏移，或是電池可能會放電。

如需詳細資訊，請參閱《 [ 開發人員指南》中的保持裝置的時鐘同步](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-clock)最佳實務。 *AWS IoT Core *

## 使用 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 裝置 SDK](what-is-gg.md#iot-device-sdk) 或[AWS IoT Greengrass 探索 API](gg-discover-api.md)，取得用來與相同 Greengrass 群組中核心進行連線和驗證的探索資訊。探索資訊包括：
+ 與用戶端裝置位於相同 Greengrass 群組的 Greengrass 核心連線資訊。此資訊包括核心裝置每個端點的主機地址和連接埠號碼。
+ 用來簽署本機 MQTT 伺服器憑證的群組憑證授權機構憑證。用戶端裝置使用群組 CA 憑證來驗證核心呈現的 MQTT 伺服器憑證。

以下是用戶端裝置使用 Greengrass 核心管理交互身分驗證的最佳實務。如果您的核心裝置遭到入侵，這些做法有助於降低風險。

**驗證每個連線的本機 MQTT 伺服器憑證。**  
用戶端裝置每次與核心建立連線時，都應驗證核心提供的 MQTT 伺服器憑證。此驗證是核心*裝置與用戶端*裝置之間交互身分驗證的用戶端裝置端。用戶端裝置必須能夠偵測故障並終止連線。

**請勿硬式編碼探索資訊。**  
用戶端裝置應該依賴探索操作來取得核心連線資訊和群組 CA 憑證，即使核心使用靜態 IP 地址也是如此。用戶端裝置不應硬式編碼此探索資訊。

**定期更新探索資訊。**  
用戶端裝置應定期執行探索，以更新核心連線資訊和群組 CA 憑證。我們建議用戶端裝置在與核心建立連線之前更新此資訊。由於探索操作之間的持續時間較短，可將潛在的暴露時間降至最低，因此我們建議用戶端裝置定期中斷連線並重新連線，以觸發更新。

如果您失去對 Greengrass 核心裝置的控制權，並且想要防止用戶端裝置將資料傳輸到核心，請執行下列動作：<a name="make-devices-distrust-core"></a>

1. 從 Greengrass 群組中移除 Greengrass 核心。

1. 輪換群組憑證授權機構憑證。在 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 官方部落格*上[工業 IoT 解決方案的十項安全黃金規則](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/) 