概述 AWS IoT Greengrass 安全 - AWS IoT Greengrass

若我們提供該指南英語版本的翻譯,在有任何牴觸的狀況下請以英文版本的指南為主。其透過機器翻譯提供翻譯。

概述 AWS IoT Greengrass 安全

AWS IoT Greengrass 使用X.509證書, AWS IoT 政策,以及 IAM 保護您當地綠草環境中設備上運行應用程序的政策和角色。

下列的圖表顯示 AWS IoT Greengrass 安全模型的元件。

A - Greengrass 服務角色

客戶創建的 IAM 角色假設 AWS IoT Greengrass 在訪問 AWS 資源來源 AWS IoT Core, AWS Lambda、和 AWS 服務。如需詳細資訊,請參閱Greengrass 服務角色.

B -核心裝置憑證

用於認證GreengrassCore的X.509證書 AWS IoT Core 和 AWS IoT Greengrass. 如需詳細資訊,請參閱AWS IoT Greengrass 的裝置身份驗證和授權.

C - 裝置憑證

用於認證Greengrass(已連接)設備的X.509證書 AWS IoT Core 和 AWS IoT Greengrass. 如需詳細資訊,請參閱AWS IoT Greengrass 的裝置身份驗證和授權.

D - 群組角色

客戶創建的 IAM 角色假設 AWS IoT Greengrass 呼叫時 AWS GreengrassCore的服務。

您使用此角色指定用戶定義的訪問權限 Lambda 功能和連接器需要訪問 AWS 服務,例如 DynamoDB. 您還可以使用 AWS IoT Greengrass 將流管理器流導出到 AWS 服務和寫入 CloudWatch Logs. 如需詳細資訊,請參閱Greengrass 群組角色.

注意

AWS IoT Greengrass 不使用 Lambda 執行角色,在 AWS Lambda 對於雲版本的 Lambda 功能。

E-MQTT 伺服器憑證

用於 Greengrass 核心裝置與 Greengrass 群組中連線裝置之間的 Transport Layer Security (TLS) 相互驗證的憑證。憑證由儲存在 AWS 雲端的群組憑證授權機構憑證簽署。

裝置連線工作流程

本節說明 Greengrass 連線裝置如何連接到 AWS IoT Greengrass 服務和 Greengrass 核心裝置。Greengrass 連線裝置是已註冊的 AWS IoT Core 裝置,與核心裝置位於相同 Greengrass 群組中。

  • GreengrassCore設備使用其設備證書、私鑰和 AWS IoT Core 用於連接到 AWS IoT Greengrass 服務。在覈心設備上, crypto 對象 配置文件 指定這些項目的文件路徑。

  • Greengrass 核心裝置會從 AWS IoT Greengrass 服務下載群組成員資格資訊。

  • 當部署於 Greengrass 核心裝置時,裝置憑證管理員 (DCM) 會處理 Greengrass 核心裝置的本機伺服器憑證管理工作。

  • 連接的設備連接到 AWS IoT Greengrass 使用其設備證書、私鑰和 AWS IoT Core 根CA。連線之後,AWS IoT Core 裝置使用 Greengrass Discovery Service 尋找其 Greengrass 裝置的 IP 地址。裝置也會下載群組憑證授權機構憑證,用於與 Greengrass 核心裝置進行 TLS 相互驗證。

  • 連線的裝置會嘗試連接到 Greengrass 核心裝置,並傳遞其裝置憑證和用戶端 ID。如果用戶端 ID 符合裝置的物件名稱且憑證又有效 (屬於 Greengrass 群組的一部分) 的話,則會建立連線。若否,則終止連線。

TheThethe AWS IoT 已連接設備的政策必須授予 greengrass:Discover 允許設備發現核心連接信息的權限。如需有關此政策陳述式的詳細資訊,請參閱發現授權.

設定 AWS IoT Greengrass 安全性

設定您的 Greengrass 應用程式的安全性

  1. 為您的 Greengrass 核心裝置建立一個 AWS IoT Core 物件。

  2. 為您的 Greengrass 核心裝置產生金鑰對和裝置憑證。

  3. 創建並附加 AWS IoT 政策 到設備證書。證書和政策允許Greengrass核心設備訪問 AWS IoT Core 和 AWS IoT Greengrass 服務。如需詳細資訊,請參閱核心裝置的最低 AWS IoT 政策.

    注意

    使用 事件策略變量iot:Connection.Thing.*)在 AWS IoT 不支持核心設備的策略。核心使用相同的設備證書來製作 多個連接 至 AWS IoT Core 但是,連接中的客戶ID可能不是核心事件名稱的完全匹配。

  4. 創建 Greengrass服務角色. 這個 IAM 角色授權 AWS IoT Greengrass 要代表您訪問其他AWS服務的資源。這允許 AWS IoT Greengrass 執行重要任務,例如檢索 AWS Lambda 功能和管理設備陰影。

    您可以在各 AWS 區域使用相同的服務角色,但此角色必須與您使用 所在的各 AWS 區域中的 AWS 帳戶相關聯。AWS IoT Greengrass.

  5. (可選)創建一個 Greengrass集團角色. 這個 IAM 角色授予權限 Lambda 在Greengrass核心運行的功能和連接器致電AWS服務。例如, Kinesis Firehose 連接器 要求允許將記錄寫入到 Amazon Kinesis Data Firehose 交貨流。

    您只能連接一個角色到 Greengrass 群組。

  6. 為每個連接到 Greengrass 核心的裝置建立一個 AWS IoT Core 物件。

    注意

    您也可以使用現有的 AWS IoT Core 物件和憑證。

  7. 為每個會連接到您的 Greengrass 核心的裝置建立裝置憑證、金鑰對和 AWS IoT 政策。

AWS IoT Greengrass 核心安全性主體

Greengrass 核心使用以下安全性主體:AWS IoT 用戶端、本機 MQTT 伺服器,以及本機 Secrets Manager。這些主體的配置存儲在 crypto 對象 config.json 配置文件。如需詳細資訊,請參閱AWS IoT Greengrass 核心組態檔案.

此組態包含主體元件針對身分驗證及加密使用的私有金鑰的路徑。AWS IoT Greengrass 支援兩個模式的私有金鑰儲存:以硬體為基礎或以檔案系統為基礎 (預設值)。如需在硬體安全模組上存放金鑰的詳細資訊,請參閱硬體安全整合.

AWS IoT Client()

TheThethe AWS IoT 客戶(物聯網客戶端)管理綠草核心和 AWS IoT Core... AWS IoT Greengrass 在爲此通信建立TLS連接時,使用X.509證書帶有公鑰和私鑰進行互相認證。有關詳細信息,請參閱 X.509證書和 AWS IoT CoreAWS IoT Core 開發人員指南.

IoT 用戶端支援 RSA 和 EC 憑證和金鑰。指定了證書和私鑰路徑 IoTCertificate 本金 config.json.

MQTT 伺服器

本機 MQTT 伺服器會管理透過本機網路與 Greengrass Core 和群組中其他 Greengrass 裝置之間的通訊。AWS IoT Greengrass 使用 X.509 憑證搭配公有和私有金鑰,在為此通訊建立 TLS 連線時用於交互身分驗證。

在預設情況下,AWS IoT Greengrass 會為您產生 RSA 私有金鑰。要配置核心以使用不同的私鑰,您必須提供 MQTTServerCertificate 本金 config.json...您負責旋轉客戶提供的密鑰。

私有金鑰支援
RSA 金鑰 EC 金鑰
金鑰類型 支援 支援
重要參數 最小 2048 位元長度 NIST P-256 或 NIST P-384 曲線
磁碟格式 PKCS#1、PKCS#8 SECG1、PKCS#8
最低 GGC 版本
  • 使用默認RSA密鑰: 1.0

  • 指定RSA密鑰: 1.7

  • 指定EC密鑰: 1.9

私有金鑰的組態會決定相關的程序。如需 Greengrass Core 支援做為伺服器的密碼套件的清單,請參閱 TLS 密碼套件支援.

如果未指定私鑰 (默認)
  • AWS IoT Greengrass 會根據您的輪換設定來輪換金鑰。

  • 核心會產生 RSA 金鑰,它用來產生憑證。

  • MQTT 伺服器憑證具有一個 RSA 公開金鑰和 SHA-256 RSA 簽章。

如果指定RSA私鑰 (需要GGCV1.7 or later)
  • 您需負責輪換金鑰。

  • 核心會使用指定的金鑰來產生憑證。

  • RSA 金鑰的長度必須至少為 2048 個位元。

  • MQTT 伺服器憑證具有一個 RSA 公開金鑰和 SHA-256 RSA 簽章。

如果指定EC私鑰 (需要GGCV1.9 or later)
  • 您需負責輪換金鑰。

  • 核心會使用指定的金鑰來產生憑證。

  • EC 私有金鑰必須使用 NIST P-256 或 NIST P-384 曲線。

  • MQTT 伺服器憑證具有一個 EC 公開金鑰和 SHA-256 RSA 簽章。

    無論金鑰類型為何,核心呈現的 MQTT 伺服器憑證都有一個 SHA-256 RSA 簽章。因此,用戶端必須支援 SHA-256 RSA 憑證驗證,以與核心建立安全的連線。

Secrets Manager

本機 Secrets Manager 會安全地管理您在 中建立的密碼的本機副本。AWS Secrets Manager. 它使用私有金鑰來保護用於加密密碼的資料金鑰。如需詳細資訊,請參閱將私密部署至 AWS IoT Greengrass 核心.

默認情況下,使用Iot客戶端私鑰,但您可以爲 SecretsManager 本金 config.json...僅支持RSA密鑰類型。如需詳細資訊,請參閱指定用於秘密加密的私有金鑰.

注意

目前,使用硬碟型私有金鑰時,AWS IoT Greengrass 僅支援用於本機機密的加密和解密的 PKCS#1 v1.5 填補機制。如果您遵循廠商提供的指示來手動產生硬體型私有金鑰,請確定選擇 PKCS#1 v1.5。AWS IoT Greengrass 不支援加密演算法搭配最佳非對稱加密填補 (OAEP)。

私有金鑰支援
RSA 金鑰 EC 金鑰
金鑰類型 支援 不支援.
重要參數 最小 2048 位元長度 不適用.
磁碟格式 PKCS#1、PKCS#8 不適用.
最低 GGC 版本 1.7 不適用.

MQTT 簡訊工作流程中的受管訂閱

AWS IoT Greengrass 使用訂閱表格來定義 MQTT 訊息如何在 Greengrass 群組中的裝置、函數和連接器之間交換,以及與 AWS IoT Core 或本機陰影服務交換。每個訂閱會指定要透過它傳送或接收訊息的來源、目標和 MQTT 主題 (或主體)。只有在已定義對應的訂閱時,AWS IoT Greengrass 才會允許將訊息從來源傳送到目標。

訂閱只會定義單向的訊息流程,從來源到目標。若要支援雙向訊息交換,您必須建立兩個訂閱,每個方向各一個。

TLS 密碼套件支援

AWS IoT Greengrass 使用 AWS IoT Core 運輸安全模型,使用 TLS 密碼套件. 此外,AWS IoT Greengrass 資料在休息時 (於雲端) 也會被加密。有關 AWS IoT Core 傳輸安全和支持的密碼套件,請參閱 運輸安全AWS IoT Core 開發人員指南.

支援用於本機網路通訊的密碼套件

與 AWS IoT Core、 AWS IoT Greengrass 核心 支持以下內容 本地網絡 用於證書籤名算法的TLS密碼套件。於檔案系統上存放私有金鑰時,支援所有這些加密套件。當核心設定為使用硬體安全模組 (HSM) 時,支援一個子集。如需詳細資訊,請參閱AWS IoT Greengrass 核心安全性主體和。硬體安全整合. 此表格還包括支援所需的最低版本 AWS IoT Greengrass Core 軟體。

加密 HSM 支援 最低 GGC 版本
TLSv1.2 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 支援 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 支援 1.0
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 支援 1.0
TLS_RSA_WITH_AES_128_CBC_SHA 不支援. 1.0
TLS_RSA_WITH_AES_128_GCM_SHA256 不支援. 1.0
TLS_RSA_WITH_AES_256_CBC_SHA 不支援. 1.0
TLS_RSA_WITH_AES_256_GCM_SHA384 不支援. 1.0
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 支援 1.9
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 支援 1.9
TLSv1.1 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 支援 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 支援 1.0
TLS_RSA_WITH_AES_128_CBC_SHA 不支援. 1.0
TLS_RSA_WITH_AES_256_CBC_SHA 不支援. 1.0
TLSv1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 支援 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 支援 1.0
TLS_RSA_WITH_AES_128_CBC_SHA 不支援. 1.0
TLS_RSA_WITH_AES_256_CBC_SHA 不支援. 1.0