AWS IoT Device Defender - AWS IoT Greengrass

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

AWS IoT Device Defender

AWS IoT Device Defender元件 (aws.greengrass.DeviceDefender) 會通知系統管理員 Greengrass 核心裝置狀態的變更。這可協助識別可能會表示裝置受損的不尋常行為。如需詳細資訊,請參閱《AWS IoT Core 開發人員指南》中的 AWS IoT Device Defender

此元件會讀取核心裝置上的系統指標。然後,它會將指標發佈到AWS IoT Device Defender。如需有關如何讀取和解譯此元件報告之量度的詳細資訊,請參閱AWS IoT Core開發人員指南中的裝置量度文件規格

注意

此元件提供與中的裝置 Defender 連接器類似的功能AWS IoT Greengrass V1。如需詳細資訊,請參閱AWS IoT Greengrass V1開發人員指南中的裝置防禦者連接器

版本

此元件具有下列版本:

  • 3.1.x 版本

  • 3.0.x

  • 2.0.x

如需元件每個版本中變更的相關資訊,請參閱變更記錄檔

類型

v3.x

元件是一般元件 (aws.greengrass.generic)。Greengrass 核會執行元件的生命週期指令碼。

v2.x

這個組件是一個 Lambda 組件(aws.greengrass.lambda)。Greengrass 核使用 Lambda 啟動器組件運行此組件的 Lambda 函數。

如需詳細資訊,請參閱元件類型

作業系統

v3.x

此元件可安裝在執行下列作業系統的核心裝置上:

  • Linux

  • Windows

v2.x

此元件只能安裝在 Linux 核心裝置上。

請求

此元件具有下列需求:

v3.x
  • Python 版本 3.7 安裝在核心設備上,並添加到 PATH 環境變量中。

  • AWS IoT Device Defender設定為使用「偵測」功能來監視違規。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的偵測

v2.x
  • 您的核心裝置必須符合執行 Lambda 函數的需求。如果您希望核心裝置執行容器化 Lambda 函數,則該裝置必須符合要求才能執行此操作。如需詳細資訊,請參閱拉姆達函數要求

  • Python 版本 3.7 安裝在核心設備上,並添加到 PATH 環境變量中。

  • AWS IoT Device Defender設定為使用「偵測」功能來監視違規。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的偵測

  • 安裝在核心裝置上的 psutil 程式庫。版本 5.7.0 是經過驗證可與元件搭配使用的最新版本。

  • 核心裝置上安裝的 cbor 程式庫。版本 1.0.0 是驗證與組件一起使用的最新版本。

  • 若要從此元件接收輸出資料,您必須在部署此元件時,合併舊版訂閱路由器元件的下列組態更新 (aws.greengrass.LegacySubscriptionRouter)。此配置指定此組件發布響應的主題。

    Legacy subscription router v2.1.xLegacy subscription router v2.0.x
    Legacy subscription router v2.1.x
    { "subscriptions": { "aws-greengrass-device-defender": { "id": "aws-greengrass-device-defender", "source": "component:aws.greengrass.DeviceDefender", "subject": "$aws/things/+/defender/metrics/json", "target": "cloud" } } }
    Legacy subscription router v2.0.x
    { "subscriptions": { "aws-greengrass-device-defender": { "id": "aws-greengrass-device-defender", "source": "arn:aws:lambda:region:aws:function:aws-greengrass-device-defender:version", "subject": "$aws/things/+/defender/metrics/json", "target": "cloud" } } }
    • 區域替換為您AWS 區域使用的區域。

    • 版本取代為此元件執行的 Lambda 函數版本。若要尋找 Lambda 函數版本,您必須檢視要部署之此元件版本的方案。在AWS IoT Greengrass主控台中開啟此元件的詳細資料頁面,然後尋找 Lambda 函數索引鍵值組。此鍵值對包含 Lambda 函數的名稱和版本。

    重要

    每次部署此元件時,您都必須更新舊版訂閱路由器上的 Lambda 函數版本。這可確保您針對部署的元件版本使用正確的 Lambda 函數版本。

    如需詳細資訊,請參閱建立部署

相依性

部署元件時,AWS IoT Greengrass也會部署其相依性的相容版本。這表示您必須符合元件及其所有相依性的需求,才能成功部署元件。本節列出此元件之已發行版本的相依性,以及定義每個相依性之元件版本的語意版本條件約束。您也可以在AWS IoT Greengrass主控台中檢視元件每個版本的相依性。在元件詳細資料頁面上,尋找 [相依性] 清單。

3.1.1

下表列出此元件 3.1.1 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 軟式
代幣交換服務 >=0.0.0 硬式
3.0.0 - 3.0.2

下表列出此元件 3.0.0 至 3.0.2 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 軟式
代幣交換服務 >=0.0.0 硬式
2.0.10 and 2.0.11

下表列出此元件 2.0.10 和 2.0.11 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.9

下表列出此元件 2.0.9 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.8

下表列出此元件 2.0.8 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 >=2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.7

下表列出此元件 2.0.7 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.6

下表列出此元件 2.0.6 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.5

下表列出此元件 2.0.5 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.4

下表列出此元件 2.0.4 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.3

下表列出此元件 2.0.3 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.3 硬式
发 Lambda 器 >=1.0.0 硬式
Lambda 執行階段 >=1.0.0 軟式
代幣交換服務 >=1.0.0 硬式

如需有關元件相依性的詳細資訊,請參閱元件方案參考

組態

此元件提供下列組態參數,您可以在部署元件時自訂這些參數。

v3.x
PublishRetryCount

重試發佈的次數。此功能在 3.1.1 版本中提供。

最小值為 0。

最大值為 72。

預設:5

SampleIntervalSeconds

(選擇性) 元件收集並報告量度的每個週期之間的時間 (以秒為單位)。

最低值為 300 秒 (5 分鐘)。

預設值:300 秒

UseInstaller

(選擇性) Boolean 值,定義是否使用此元件中的安裝程式指令碼來安裝此元件的相依性。

false如果您想要使用自訂指令碼安裝相依性,或者想要在預先建置的 Linux 映像檔中包含執行階段相依性,請將此值設定為。若要使用此元件,您必須安裝下列程式庫 (包括任何相依性),並讓預設的 Greengrass 系統使用者可以使用這些程式庫。

注意

如果您在設定為使用 HTTPS Proxy 的核心裝置上使用此元件 3.0.0 或 3.0.1 版,則必須將此值設定為。false在這些版本的此元件中,安裝程式指令碼不支援 HTTPS Proxy 後方的作業。

預設:true

v2.x
注意

此元件的預設組態包括 Lambda 函數參數。建議您只編輯下列參數,以便在裝置上設定此元件。

lambdaParams

包含此元件 Lambda 函數之參數的物件。此物件包含下列資訊:

EnvironmentVariables

包含 Lambda 函數參數的物件。此物件包含下列資訊:

PROCFS_PATH

(選擇性) 資/proc料夾的路徑。

  • 若要在容器中執行此元件,請使用預設值/host-proc。依預設,元件會在容器中執行。

  • 若要以無容器模式執行此元件,請/proc為此參數指定。

預設:/host-proc。這是此元件在容器中裝載/proc資料夾的預設路徑。

注意

此元件對此資料夾具有唯讀存取權。

SAMPLE_INTERVAL_SECONDS

(選擇性) 元件收集並報告量度的每個週期之間的時間 (以秒為單位)。

最低值為 300 秒 (5 分鐘)。

預設值:300 秒

containerMode

(選擇性) 此元件的容器化模式。您可以從以下選項中選擇:

  • GreengrassContainer— 元件在AWS IoT Greengrass容器內的隔離執行階段環境中執行。

  • NoContainer— 元件不會在隔離的執行階段環境中執行。

    如果指定此選項,則必須/procPROCFS_PATH環境變數參數指定。

預設:GreengrassContainer

containerParams

(選擇性) 包含此元件之容器參數的物件。如果您指定GreengrassContainer為,則元件會使用這些參數containerMode

此物件包含下列資訊:

memorySize

(選擇性) 配置給元件的記憶體容量 (以 KB 為單位)。

預設值為 5 萬 KB。

pubsubTopics

(選擇性) 包含元件訂閱以接收訊息之主題的物件。您可以指定每個主題,以及元件是否訂閱 MQTT 主題AWS IoT Core或本機發佈/訂閱主題。

此物件包含下列資訊:

0-這是一個數組索引作為一個字符串。

包含下列資訊的物件:

type

(選擇性) 此元件用來訂閱訊息的發佈/訂閱訊息類型。您可以從以下選項中選擇:

  • Pubsub - 訂閱本機發佈/訂閱訊息。如果您選擇此選項,則主題不能包含 MQTT 萬用字元。如需指定此選項時如何從自訂元件傳送郵件的詳細資訊,請參閱發佈/訂閱本地訊息

  • IotCore – 訂閱 AWS IoT Core MQTT 訊息。如果您選擇此選項,主題可以包含 MQTT 萬用字元。如需指定此選項時如何從自訂元件傳送郵件的詳細資訊,請參閱發布/訂閱AWS IoT CoreMQTT 訊息

預設:Pubsub

topic

(選擇性) 元件訂閱接收訊息的主題。如果您指定IotCoretype,您可以在本主題中使用 MQTT 萬用字元 (+#)。

範例:組態合併更新 (容器模式)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "PROCFS_PATH": "/host_proc" } }, "containerMode": "GreengrassContainer" }
範例:組態合併更新 (無容器模式)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "PROCFS_PATH": "/proc" } }, "containerMode": "NoContainer" }

輸入資料

此組件不接受消息作為輸入數據。

輸出資料

此元件會將安全度量結果發佈至的下列保留主題AWS IoT Device Defender。發佈指標時,此元件會取代coreDeviceName為核心裝置的名稱。

主題 (AWS IoT CoreMQTT): $aws/things/coreDeviceName/defender/metrics/json

範例輸出
{ "header": { "report_id": 1529963534, "version": "1.0" }, "metrics": { "listening_tcp_ports": { "ports": [ { "interface": "eth0", "port": 24800 }, { "interface": "eth0", "port": 22 }, { "interface": "eth0", "port": 53 } ], "total": 3 }, "listening_udp_ports": { "ports": [ { "interface": "eth0", "port": 5353 }, { "interface": "eth0", "port": 67 } ], "total": 2 }, "network_stats": { "bytes_in": 1157864729406, "bytes_out": 1170821865, "packets_in": 693092175031, "packets_out": 738917180 }, "tcp_connections": { "established_connections":{ "connections": [ { "local_interface": "eth0", "local_port": 80, "remote_addr": "192.168.0.1:8000" }, { "local_interface": "eth0", "local_port": 80, "remote_addr": "192.168.0.1:8000" } ], "total": 2 } } } }

如需有關此元件報告之量度的詳細資訊,請參閱AWS IoT Core開發人員指南中的裝置量度文件規格

本機記錄檔

此元件使用下列記錄檔。

Linux
/greengrass/v2/logs/aws.greengrass.DeviceDefender.log
Windows
C:\greengrass\v2\logs\aws.greengrass.DeviceDefender.log
若要檢視此元件的記錄
  • 在核心裝置上執行下列命令,即時檢視此元件的記錄檔。將/greengrass/v2C:\greengrass\v2 取代為AWS IoT Greengrass根資料夾的路徑。

    Linux
    sudo tail -f /greengrass/v2/logs/aws.greengrass.DeviceDefender.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\aws.greengrass.DeviceDefender.log -Tail 10 -Wait

许可证

此元件是根據 Greengrass 核心軟體授權合約發行的。

Changelog

下表說明元件每個版本中的變更。

v3.x

版本

變更

3.1.1

錯誤修復和改進
  • 當網路中斷後連線無法復原時,新增用戶端連線的重試次數。

  • 為發佈指標新增可設定的重試。

3.1.0

錯誤修復和改進

3.0.1

修正元件如何計算量度差異值的問題。

3.0.0

警告

此版本不再可用。此版本中的改進功能在此元件的更新版本中提供。

初始版本。

v2.x

版本

變更

2.0.11

版本更新了 Greengrass 核 2.11.0 版本釋放。

2.0.10

版本更新了 Greengrass 核 2.7.0 版本釋放。

2.0.9

版本更新 Greengrass 2.6.0 版本的版本。

2.0.8

版本更新了 Greengrass 核 2.5.0 版本。

2.0.7

版本更新 Greengrass 2.4.0 版本的版本。

2.0.6

版本更新了 Greengrass 核 2.3.0 版本。

2.0.5

版本更新了 Greengrass 核 2.2.0 版本。

2.0.4

版本更新 Greengrass 2.1.0 版本發布。

2.0.3

初始版本。