

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 中的程式碼完整性 AWS IoT Greengrass V2
<a name="code-integrity"></a>

AWS IoT Greengrass 會將軟體元件從 部署 AWS 雲端 到執行 AWS IoT Greengrass Core 軟體的裝置。這些軟體元件包含 [AWS提供的元件](public-components.md)，以及您上傳至 的[自訂元件](create-components.md) AWS 帳戶。每個元件都由配方組成。配方會定義元件的中繼資料，以及任意數量的成品，這些成品是元件二進位檔，例如編譯的程式碼和靜態資源。元件成品存放在 Amazon S3 中。

當您開發和部署 Greengrass 元件時，請遵循這些基本步驟，在 AWS 帳戶 和 裝置上使用元件成品：

1. 建立成品並將其上傳至 S3 儲存貯體。

1. 從 AWS IoT Greengrass 服務中的配方和成品建立元件，這會計算每個成品的密碼[編譯雜湊](https://en.wikipedia.org/wiki/Cryptographic_hash_function)。

1. 將元件部署到 Greengrass 核心裝置，以下載和驗證每個成品的完整性。

AWS 負責在您將成品上傳至 S3 儲存貯體後維護成品的完整性，包括將元件部署至 Greengrass 核心裝置時。上傳成品到 S3 儲存貯體之前，您必須負責保護軟體成品的安全。您也必須負責保護對 中資源的存取 AWS 帳戶，包括上傳元件成品的 S3 儲存貯體。

**注意**  
Amazon S3 提供名為 S3 物件鎖定的功能，可用來防止 S3 儲存貯體中元件成品的變更 AWS 帳戶。您可以使用 S3 物件鎖定來防止刪除或覆寫元件成品。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用 S3 物件鎖定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)。

 AWS 發佈公有元件時，當您上傳自訂元件時， AWS IoT Greengrass 會計算每個元件成品的密碼編譯摘要。 會 AWS IoT Greengrass 更新元件配方，以包含每個成品的摘要，以及用於計算該摘要的雜湊演算法。此摘要保證成品的完整性，因為如果成品在 AWS 雲端 中或在下載期間變更，其檔案摘要將與 AWS IoT Greengrass 存放在元件配方中的摘要不相符。如需詳細資訊，請參閱[元件配方參考中的成品](component-recipe-reference.md#manifest-artifacts-definition)。

當您將元件部署到核心裝置時， AWS IoT Greengrass 核心軟體會下載元件配方和配方定義的每個元件成品。 AWS IoT Greengrass 核心軟體會計算每個下載成品檔案的摘要，並將其與該成品在配方中的摘要進行比較。如果摘要不相符，部署會失敗，而 AWS IoT Greengrass Core 軟體會從裝置的檔案系統刪除下載的成品。如需如何保護核心裝置與 AWS IoT Greengrass 之間連線的詳細資訊，請參閱 [傳輸中加密](encryption-in-transit.md)。

您有責任保護核心裝置檔案系統上元件成品檔案的安全。Core AWS IoT Greengrass 軟體會將成品儲存至 Greengrass 根`packages`資料夾中的 資料夾。您可以使用 AWS IoT Device Defender 來分析、稽核和監控核心裝置。如需詳細資訊，請參閱[中的組態和漏洞分析 AWS IoT Greengrass](vulnerability-analysis-and-management.md)。