用戶端裝置驗證 - AWS IoT Greengrass

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

用戶端裝置驗證

用戶端裝置 auth 元件 (aws.greengrass.clientdevices.Auth) 會驗證用戶端裝置並授權用戶端裝置處理行動。

注意

用戶端裝置是連線到 Greengrass 核心裝置以傳送 MQTT 訊息和資料進行處理的本機 IoT 裝置。如需詳細資訊,請參閱與本機 IoT 裝置互動

版本

注意

客戶端設備身份驗證版本 2.3.0 已經停產。強烈建議您升級至用戶端裝置驗證 2.3.1 或更新版本。

此元件具有下列版本:

  • 2.4.x 版本

  • 2.3.x 版本

  • 2.2.x 版本

  • 2.1.x

  • 2.0.x

類型

這個組件是一個插件組件(aws.greengrass.plugin)。Greengrass 核在與核相同的 Java 虛擬機(JVM)中運行此組件。當您在核心裝置上變更此元件的版本時,核心會重新啟動。

此組件使用與 Greengrass 核相同的日誌文件。如需詳細資訊,請參閱監控AWS IoT Greengrass日誌

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

作業系統

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

  • Linux

  • Windows

請求

此元件具有下列需求:

  • Greengrass 服務角色必須與您的關聯AWS 帳戶並允許權限。iot:DescribeCertificate

  • 核心裝置的AWS IoT策略必須允許以下權限:

    • greengrass:GetConnectivityInfo,其中資源包括執行此元件的核心裝置的 ARN

    • greengrass:VerifyClientDeviceIoTCertificateAssociation,其中資源包括連線至核心裝置的每個用戶端裝置的 Amazon 資源名稱 (ARN)

    • greengrass:VerifyClientDeviceIdentity

    • greengrass:PutCertificateAuthorities

    • iot:Publish,其中資源包括以下 MQTT 主題的 ARN:

      • $aws/things/coreDeviceThingName*-gci/shadow/get

    • iot:Subscribe,其中資源包括下列 MQTT 主題篩選器的 ARN:

      • $aws/things/coreDeviceThingName*-gci/shadow/update/delta

      • $aws/things/coreDeviceThingName*-gci/shadow/get/accepted

    • iot:Receive,其中資源包括下列 MQTT 主題的 ARN:

      • $aws/things/coreDeviceThingName*-gci/shadow/update/delta

      • $aws/things/coreDeviceThingName*-gci/shadow/get/accepted

    如需詳細資訊,請參閱 資料平面操作的AWS IoT 政策支援用戶端裝置的最低AWS IoT原則

  • (選用) 若要使用離線驗證,AWS IoT Greengrass服務使用的 AWS Identity and Access Management (IAM) 角色必須包含下列權限:

    • greengrass:ListClientDevicesAssociatedWithCoreDevice,以讓核心裝置列出用戶端以進行離線驗證。

端點和連接埠

除了基本作業所需的端點和連接埠之外,此元件還必須能夠對下列端點和連接埠執行輸出要求。如需詳細資訊,請參閱允許裝置流量透過 Proxy 或防火牆

端點 連線埠 必要 描述

iot.region.amazonaws.com

443

用來取得有關AWS IoT物件憑證的資訊。

相依性

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

2.4.3

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.6.0 軟式
2.4.1 and 2.4.2

下表列出此元件 2.4.1 和 2.4.2 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 >=2.6.0 軟式
2.3.0 – 2.4.0

下表列出此元件 2.3.0 至 2.4.0 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.6.0 軟式
2.3.0

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

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.6.0 軟式
2.2.3

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

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.6.0 軟式
2.2.2

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

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.6.0 軟式
2.2.1

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.6.0 軟式
2.2.0

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.6.0 軟式
2.1.0

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.2.0 軟式
2.0.4

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.2.0 軟式
2.0.2 and 2.0.3

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.2.0 軟式
2.0.1

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.2.0 軟式
2.0.0

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.2.0 軟式

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

組態

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

v2.4.2
deviceGroups

裝置群組是具有與核心裝置連線和通訊之權限的用戶端裝置群組。使用選取規則識別用戶端裝置群組,並定義用戶端裝置授權原則,以指定每個裝置群組的權限。

此物件包含下列資訊:

formatVersion

此配置物件的格式版本。

您可以從以下選項中選擇:

  • 2021-03-05

definitions

此核心裝置的裝置群組。每個定義都會指定一個選取規則,以評估用戶端裝置是否為群組的成員。每個定義也會指定要套用至符合選取規則的用戶端裝置的權限原則。如果用戶端裝置是多個裝置群組的成員,則該裝置的權限將由每個群組的權限原則組成。

此物件包含下列資訊:

groupNameKey

此裝置群組的名稱。以可協助您識別此裝置群組的名稱取groupNameKey代。

此物件包含下列資訊:

selectionRule

指定哪些用戶端裝置為此裝置群組成員的查詢。當用戶端裝置連線時,核心裝置會評估此選擇規則,以判斷用戶端裝置是否為此裝置群組的成員。如果用戶端裝置是成員,則核心裝置會使用此裝置群組的策略來授權用戶端裝置的處理行動。

每個選取規則至少包含一個選取規則子句,這是一個可以與用戶端裝置相符的單一運算式查詢。選取規則使用與AWS IoT叢集索引相同的查詢語法。如需有關選取規則語法的詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT叢集索引查詢語法

使用*萬用字元來比對多個用戶端裝置與一個選取規則子句。您可以在物件名稱結尾使用此萬用字元,以符合名稱以您指定之字串開頭的用戶端裝置。您也可以使用此萬用字元來比對所有用戶端裝置。

注意

若要選取包含冒號字元 (:) 的值,請使用反斜線字元 (\) 逸出冒號。在 JSON 等格式中,您必須逸出反斜線字元,因此您必須在冒號字元前輸入兩個反斜線字元。例如,指thingName: MyTeam\\:ClientDevice1定選取名稱為的物件MyTeam:ClientDevice1

您可以指定下列選取器:

  • thingName— 用戶端裝置AWS IoT物件的名稱。

範例選取規則

下列選取規則符合名稱為MyClientDevice1或的用戶端裝置MyClientDevice2

thingName: MyClientDevice1 OR thingName: MyClientDevice2
範例選取規則 (使用萬用字元)

下列選取規則符合名稱開頭為的用戶端裝置MyClientDevice

thingName: MyClientDevice*
範例選取規則 (符合所有裝置)

下列選取規則符合所有用戶端裝置。

thingName: *
policyName

適用於此裝置群組中用戶端裝置的權限原則。指定您在物件中定義的策略名policies稱。

policies

連線至核心裝置的用戶端裝置的用戶端裝置授權原則。每個授權原則都會指定一組處理行動以及用戶端裝置可以執行這些處理行動的資源。

此物件包含下列資訊:

policyNameKey

此授權原則的名稱。以可協助您識別此授權原則的名稱取policyNameKey代。您可以使用此原則名稱來定義要套用至裝置群組的原則。

此物件包含下列資訊:

statementNameKey

本政策聲明的名稱。請statementNameKey以可協助您識別此政策聲明的名稱取代。

此物件包含下列資訊:

operations

此原則中允許資源的作業清單。

您可以包括以下任何操作:

  • mqtt:connect— 授予連接到核心設備的權限。用戶端裝置必須具有此權限才能連線至核心裝置。

    此作業支援下列資源:

    • mqtt:clientId:deviceClientId— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId為要使用的用戶端 ID。

  • mqtt:publish— 授予將 MQTT 訊息發佈至主題的權限。

    此作業支援下列資源:

    • mqtt:topic:mqttTopic— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將 MQTT 主題取代為要使用的主題。

      此資源不支援 MQTT 主題萬用字元。

  • mqtt:subscribe— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。

    此作業支援下列資源:

    • mqtt:topicfilter:mqttTopicFilter— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter用的主題篩選器取代。

      此資源支援+# MQTT 主題萬用字元。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 MQTT 主題

      用戶端裝置可以訂閱您允許的確切主題篩選器。例如,如果您允許用戶端裝置訂閱mqtt:topicfilter:client/+/status資源,則用戶端裝置可以訂閱,client/+/status但無法訂閱client/client1/status

您可以指定*萬用字元以允許存取所有動作。

resources

此原則中允許作業的資源清單。指定與此策略中作業對應的資源。例如,您可以在指定作業的策略中指定 MQTT 主題資源 (mqtt:topic:mqttTopic) 清單。mqtt:publish

您可以指定*萬用字元以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別碼。例如,您可以指定"resources": "*",但無法指定"resources": "mqtt:clientId:*"

statementDescription

(選擇性) 此政策聲明的說明。

certificates

(選擇性) 此核心裝置的憑證組態選項。此物件包含下列資訊:

serverCertificateValiditySeconds

(選擇性) 本機 MQTT 伺服器憑證到期後的時間 (秒)。您可以設定此選項來自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

此元件會在到期前 24 小時輪換本機 MQTT 伺服器憑證。MQTT 代理程式 (例如 Moquette MQTT 代理程式元件) 會產生新憑證並重新啟動。發生這種情況時,連接到此核心裝置的所有用戶端裝置都會中斷連線。用戶端裝置可在短時間後重新連線至核心裝置。

預設值:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

(選擇性) 此核心裝置的效能組態選項。此物件包含下列資訊:

maxActiveAuthTokens

(選擇性) 作用中用戶端裝置授權權杖的數目上限。您可以增加此數目,讓更多數目的用戶端裝置連線到單一核心裝置,而無需重新驗證。

預設:2500

cloudRequestQueueSize

(選擇性) 此元件拒絕AWS 雲端要求之前,要排入佇列的要求數目上限。

預設:100

maxConcurrentCloudRequests

(選擇性) 要傳送至的並行要求數目上限AWS 雲端。您可以增加此數目,以改善連線大量用戶端裝置的核心裝置上的驗證效能。

預設:1

certificateAuthority

(選擇性) 憑證授權單位組態選項,以您自己的中繼憑證授權單位取代核心裝置中繼授權單位。此物件包含下列資訊。

证书

憑證的位置。它可以是文件系統 URI 或指向存儲在硬件安全模塊中的證書的 URI。

certificateChainUri

核心裝置 CA 的憑證鏈結位置。這應該是回到根 CA 的完整憑證鏈結。它可以是一個文件系統 URI 或指向存儲在硬件安全模塊中的證書鏈的 URI。

privateKeyUri

核心裝置私密金鑰的位置。這可以是檔案系統 URI 或指向儲存在硬體安全性模組中的憑證私密金鑰的 URI。

security

(選擇性) 此核心裝置的安全性設定選項。此物件包含下列資訊。

clientDeviceTrustDurationMinutes

在需要與核心裝置重新驗證之前,可以信任用戶端裝置的驗證資訊的持續時間 (以分鐘為單位)。預設值為 1。

metrics

(選擇性) 此核心裝置的指標選項。只有在用戶端裝置驗證發生錯誤時,才會顯示錯誤指標。此物件包含下列資訊:

disableMetrics

如果該disableMetrics字段設置為true,則客戶端設備身份驗證將不會收集指標。

預設:false

aggregatePeriodSeconds

以秒為單位的彙總期間,可決定用戶端裝置驗證彙總度量並將其傳送至遙測代理程式的頻率。這不會變更發佈指標的頻率,因為遙測代理程式仍會每天發佈一次。

預設:3600

startupTimeoutSeconds

(選擇性) 元件啟動的時間上限 (以秒為單位)。BROKEN如果超過此逾時,組件的狀態會變更為。

預設:120

範例:組態合併更新 (使用限制性原則)

下列範例組態指定允許名稱開頭為的用戶端裝置MyClientDevice連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
範例:組態合併更新 (使用寬容原則)

下列範例設定指定允許所有用戶端裝置連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.4.0 - v2.4.1
deviceGroups

裝置群組是具有與核心裝置連線和通訊之權限的用戶端裝置群組。使用選取規則識別用戶端裝置群組,並定義用戶端裝置授權原則,以指定每個裝置群組的權限。

此物件包含下列資訊:

formatVersion

此配置物件的格式版本。

您可以從以下選項中選擇:

  • 2021-03-05

definitions

此核心裝置的裝置群組。每個定義都會指定一個選取規則,以評估用戶端裝置是否為群組的成員。每個定義也會指定要套用至符合選取規則的用戶端裝置的權限原則。如果用戶端裝置是多個裝置群組的成員,則該裝置的權限將由每個群組的權限原則組成。

此物件包含下列資訊:

groupNameKey

此裝置群組的名稱。以可協助您識別此裝置群組的名稱取groupNameKey代。

此物件包含下列資訊:

selectionRule

指定哪些用戶端裝置為此裝置群組成員的查詢。當用戶端裝置連線時,核心裝置會評估此選擇規則,以判斷用戶端裝置是否為此裝置群組的成員。如果用戶端裝置是成員,則核心裝置會使用此裝置群組的策略來授權用戶端裝置的處理行動。

每個選取規則至少包含一個選取規則子句,這是一個可以與用戶端裝置相符的單一運算式查詢。選取規則使用與AWS IoT叢集索引相同的查詢語法。如需有關選取規則語法的詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT叢集索引查詢語法

使用*萬用字元來比對多個用戶端裝置與一個選取規則子句。您可以在物件名稱結尾使用此萬用字元,以符合名稱以您指定之字串開頭的用戶端裝置。您也可以使用此萬用字元來比對所有用戶端裝置。

注意

若要選取包含冒號字元 (:) 的值,請使用反斜線字元 (\) 逸出冒號。在 JSON 等格式中,您必須逸出反斜線字元,因此您必須在冒號字元前輸入兩個反斜線字元。例如,指thingName: MyTeam\\:ClientDevice1定選取名稱為的物件MyTeam:ClientDevice1

您可以指定下列選取器:

  • thingName— 用戶端裝置AWS IoT物件的名稱。

範例選取規則

下列選取規則符合名稱為MyClientDevice1或的用戶端裝置MyClientDevice2

thingName: MyClientDevice1 OR thingName: MyClientDevice2
範例選取規則 (使用萬用字元)

下列選取規則符合名稱開頭為的用戶端裝置MyClientDevice

thingName: MyClientDevice*
範例選取規則 (符合所有裝置)

下列選取規則符合所有用戶端裝置。

thingName: *
policyName

適用於此裝置群組中用戶端裝置的權限原則。指定您在物件中定義的策略名policies稱。

policies

連線至核心裝置的用戶端裝置的用戶端裝置授權原則。每個授權原則都會指定一組處理行動以及用戶端裝置可以執行這些處理行動的資源。

此物件包含下列資訊:

policyNameKey

此授權原則的名稱。以可協助您識別此授權原則的名稱取policyNameKey代。您可以使用此原則名稱來定義要套用至裝置群組的原則。

此物件包含下列資訊:

statementNameKey

本政策聲明的名稱。請statementNameKey以可協助您識別此政策聲明的名稱取代。

此物件包含下列資訊:

operations

此原則中允許資源的作業清單。

您可以包括以下任何操作:

  • mqtt:connect— 授予連接到核心設備的權限。用戶端裝置必須具有此權限才能連線至核心裝置。

    此作業支援下列資源:

    • mqtt:clientId:deviceClientId— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId為要使用的用戶端 ID。

  • mqtt:publish— 授予將 MQTT 訊息發佈至主題的權限。

    此作業支援下列資源:

    • mqtt:topic:mqttTopic— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將 MQTT 主題取代為要使用的主題。

      此資源不支援 MQTT 主題萬用字元。

  • mqtt:subscribe— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。

    此作業支援下列資源:

    • mqtt:topicfilter:mqttTopicFilter— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter用的主題篩選器取代。

      此資源支援+# MQTT 主題萬用字元。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 MQTT 主題

      用戶端裝置可以訂閱您允許的確切主題篩選器。例如,如果您允許用戶端裝置訂閱mqtt:topicfilter:client/+/status資源,則用戶端裝置可以訂閱,client/+/status但無法訂閱client/client1/status

您可以指定*萬用字元以允許存取所有動作。

resources

此原則中允許作業的資源清單。指定與此策略中作業對應的資源。例如,您可以在指定作業的策略中指定 MQTT 主題資源 (mqtt:topic:mqttTopic) 清單。mqtt:publish

您可以指定*萬用字元以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別碼。例如,您可以指定"resources": "*",但無法指定"resources": "mqtt:clientId:*"

statementDescription

(選擇性) 此政策聲明的說明。

certificates

(選擇性) 此核心裝置的憑證組態選項。此物件包含下列資訊:

serverCertificateValiditySeconds

(選擇性) 本機 MQTT 伺服器憑證到期後的時間 (秒)。您可以設定此選項來自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

此元件會在到期前 24 小時輪換本機 MQTT 伺服器憑證。MQTT 代理程式 (例如 Moquette MQTT 代理程式元件) 會產生新憑證並重新啟動。發生這種情況時,連接到此核心裝置的所有用戶端裝置都會中斷連線。用戶端裝置可在短時間後重新連線至核心裝置。

預設值:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

(選擇性) 此核心裝置的效能組態選項。此物件包含下列資訊:

maxActiveAuthTokens

(選擇性) 作用中用戶端裝置授權權杖的數目上限。您可以增加此數目,讓更多數目的用戶端裝置連線到單一核心裝置,而無需重新驗證。

預設:2500

cloudRequestQueueSize

(選擇性) 此元件拒絕AWS 雲端要求之前,要排入佇列的要求數目上限。

預設:100

maxConcurrentCloudRequests

(選擇性) 要傳送至的並行要求數目上限AWS 雲端。您可以增加此數目,以改善連線大量用戶端裝置的核心裝置上的驗證效能。

預設:1

certificateAuthority

(選擇性) 憑證授權單位組態選項,以您自己的中繼憑證授權單位取代核心裝置中繼授權單位。此物件包含下列資訊。

证书

憑證的位置。它可以是文件系統 URI 或指向存儲在硬件安全模塊中的證書的 URI。

certificateChainUri

核心裝置 CA 的憑證鏈結位置。這應該是回到根 CA 的完整憑證鏈結。它可以是一個文件系統 URI 或指向存儲在硬件安全模塊中的證書鏈的 URI。

privateKeyUri

核心裝置私密金鑰的位置。這可以是檔案系統 URI 或指向儲存在硬體安全性模組中的憑證私密金鑰的 URI。

security

(選擇性) 此核心裝置的安全性設定選項。此物件包含下列資訊。

clientDeviceTrustDurationMinutes

在需要與核心裝置重新驗證之前,可以信任用戶端裝置的驗證資訊的持續時間 (以分鐘為單位)。預設值為 1。

metrics

(選擇性) 此核心裝置的指標選項。只有在用戶端裝置驗證發生錯誤時,才會顯示錯誤指標。此物件包含下列資訊:

disableMetrics

如果該disableMetrics字段設置為true,則客戶端設備身份驗證將不會收集指標。

預設:false

aggregatePeriodSeconds

以秒為單位的彙總期間,可決定用戶端裝置驗證彙總度量並將其傳送至遙測代理程式的頻率。這不會變更發佈指標的頻率,因為遙測代理程式仍會每天發佈一次。

預設:3600

範例:組態合併更新 (使用限制性原則)

下列範例組態指定允許名稱開頭為的用戶端裝置MyClientDevice連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
範例:組態合併更新 (使用寬容原則)

下列範例設定指定允許所有用戶端裝置連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.3.x
deviceGroups

裝置群組是具有與核心裝置連線和通訊之權限的用戶端裝置群組。使用選取規則識別用戶端裝置群組,並定義用戶端裝置授權原則,以指定每個裝置群組的權限。

此物件包含下列資訊:

formatVersion

此配置物件的格式版本。

您可以從以下選項中選擇:

  • 2021-03-05

definitions

此核心裝置的裝置群組。每個定義都會指定一個選取規則,以評估用戶端裝置是否為群組的成員。每個定義也會指定要套用至符合選取規則的用戶端裝置的權限原則。如果用戶端裝置是多個裝置群組的成員,則該裝置的權限將由每個群組的權限原則組成。

此物件包含下列資訊:

groupNameKey

此裝置群組的名稱。以可協助您識別此裝置群組的名稱取groupNameKey代。

此物件包含下列資訊:

selectionRule

指定哪些用戶端裝置為此裝置群組成員的查詢。當用戶端裝置連線時,核心裝置會評估此選擇規則,以判斷用戶端裝置是否為此裝置群組的成員。如果用戶端裝置是成員,則核心裝置會使用此裝置群組的策略來授權用戶端裝置的處理行動。

每個選取規則至少包含一個選取規則子句,這是一個可以與用戶端裝置相符的單一運算式查詢。選取規則使用與AWS IoT叢集索引相同的查詢語法。如需有關選取規則語法的詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT叢集索引查詢語法

使用*萬用字元來比對多個用戶端裝置與一個選取規則子句。您可以在物件名稱結尾使用此萬用字元,以符合名稱以您指定之字串開頭的用戶端裝置。您也可以使用此萬用字元來比對所有用戶端裝置。

注意

若要選取包含冒號字元 (:) 的值,請使用反斜線字元 (\) 逸出冒號。在 JSON 等格式中,您必須逸出反斜線字元,因此您必須在冒號字元前輸入兩個反斜線字元。例如,指thingName: MyTeam\\:ClientDevice1定選取名稱為的物件MyTeam:ClientDevice1

您可以指定下列選取器:

  • thingName— 用戶端裝置AWS IoT物件的名稱。

範例選取規則

下列選取規則符合名稱為MyClientDevice1或的用戶端裝置MyClientDevice2

thingName: MyClientDevice1 OR thingName: MyClientDevice2
範例選取規則 (使用萬用字元)

下列選取規則符合名稱開頭為的用戶端裝置MyClientDevice

thingName: MyClientDevice*
範例選取規則 (符合所有裝置)

下列選取規則符合所有用戶端裝置。

thingName: *
policyName

適用於此裝置群組中用戶端裝置的權限原則。指定您在物件中定義的策略名policies稱。

policies

連線至核心裝置的用戶端裝置的用戶端裝置授權原則。每個授權原則都會指定一組處理行動以及用戶端裝置可以執行這些處理行動的資源。

此物件包含下列資訊:

policyNameKey

此授權原則的名稱。以可協助您識別此授權原則的名稱取policyNameKey代。您可以使用此原則名稱來定義要套用至裝置群組的原則。

此物件包含下列資訊:

statementNameKey

本政策聲明的名稱。請statementNameKey以可協助您識別此政策聲明的名稱取代。

此物件包含下列資訊:

operations

此原則中允許資源的作業清單。

您可以包括以下任何操作:

  • mqtt:connect— 授予連接到核心設備的權限。用戶端裝置必須具有此權限才能連線至核心裝置。

    此作業支援下列資源:

    • mqtt:clientId:deviceClientId— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId為要使用的用戶端 ID。

  • mqtt:publish— 授予將 MQTT 訊息發佈至主題的權限。

    此作業支援下列資源:

    • mqtt:topic:mqttTopic— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將 MQTT 主題取代為要使用的主題。

      此資源不支援 MQTT 主題萬用字元。

  • mqtt:subscribe— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。

    此作業支援下列資源:

    • mqtt:topicfilter:mqttTopicFilter— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter用的主題篩選器取代。

      此資源支援+# MQTT 主題萬用字元。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 MQTT 主題

      用戶端裝置可以訂閱您允許的確切主題篩選器。例如,如果您允許用戶端裝置訂閱mqtt:topicfilter:client/+/status資源,則用戶端裝置可以訂閱,client/+/status但無法訂閱client/client1/status

您可以指定*萬用字元以允許存取所有動作。

resources

此原則中允許作業的資源清單。指定與此策略中作業對應的資源。例如,您可以在指定作業的策略中指定 MQTT 主題資源 (mqtt:topic:mqttTopic) 清單。mqtt:publish

您可以指定*萬用字元以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別碼。例如,您可以指定"resources": "*",但無法指定"resources": "mqtt:clientId:*"

statementDescription

(選擇性) 此政策聲明的說明。

certificates

(選擇性) 此核心裝置的憑證組態選項。此物件包含下列資訊:

serverCertificateValiditySeconds

(選擇性) 本機 MQTT 伺服器憑證到期後的時間 (秒)。您可以設定此選項來自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

此元件會在到期前 24 小時輪換本機 MQTT 伺服器憑證。MQTT 代理程式 (例如 Moquette MQTT 代理程式元件) 會產生新憑證並重新啟動。發生這種情況時,連接到此核心裝置的所有用戶端裝置都會中斷連線。用戶端裝置可在短時間後重新連線至核心裝置。

預設值:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

(選擇性) 此核心裝置的效能組態選項。此物件包含下列資訊:

maxActiveAuthTokens

(選擇性) 作用中用戶端裝置授權權杖的數目上限。您可以增加此數目,讓更多數目的用戶端裝置連線到單一核心裝置,而無需重新驗證。

預設:2500

cloudRequestQueueSize

(選擇性) 此元件拒絕AWS 雲端要求之前,要排入佇列的要求數目上限。

預設:100

maxConcurrentCloudRequests

(選擇性) 要傳送至的並行要求數目上限AWS 雲端。您可以增加此數目,以改善連線大量用戶端裝置的核心裝置上的驗證效能。

預設:1

certificateAuthority

(選擇性) 憑證授權單位組態選項,以您自己的中繼憑證授權單位取代核心裝置中繼授權單位。此物件包含下列資訊。

证书

憑證的位置。它可以是文件系統 URI 或指向存儲在硬件安全模塊中的證書的 URI。

certificateChainUri

核心裝置 CA 的憑證鏈結位置。這應該是回到根 CA 的完整憑證鏈結。它可以是一個文件系統 URI 或指向存儲在硬件安全模塊中的證書鏈的 URI。

privateKeyUri

核心裝置私密金鑰的位置。這可以是檔案系統 URI 或指向儲存在硬體安全性模組中的憑證私密金鑰的 URI。

security

(選擇性) 此核心裝置的安全性設定選項。此物件包含下列資訊。

clientDeviceTrustDurationMinutes

在需要與核心裝置重新驗證之前,可以信任用戶端裝置的驗證資訊的持續時間 (以分鐘為單位)。預設值為 1。

範例:組態合併更新 (使用限制性原則)

下列範例組態指定允許名稱開頭為的用戶端裝置MyClientDevice連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
範例:組態合併更新 (使用寬容原則)

下列範例設定指定允許所有用戶端裝置連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.2.x
deviceGroups

裝置群組是具有與核心裝置連線和通訊之權限的用戶端裝置群組。使用選取規則識別用戶端裝置群組,並定義用戶端裝置授權原則,以指定每個裝置群組的權限。

此物件包含下列資訊:

formatVersion

此配置物件的格式版本。

您可以從以下選項中選擇:

  • 2021-03-05

definitions

此核心裝置的裝置群組。每個定義都會指定一個選取規則,以評估用戶端裝置是否為群組的成員。每個定義也會指定要套用至符合選取規則的用戶端裝置的權限原則。如果用戶端裝置是多個裝置群組的成員,則該裝置的權限將由每個群組的權限原則組成。

此物件包含下列資訊:

groupNameKey

此裝置群組的名稱。以可協助您識別此裝置群組的名稱取groupNameKey代。

此物件包含下列資訊:

selectionRule

指定哪些用戶端裝置為此裝置群組成員的查詢。當用戶端裝置連線時,核心裝置會評估此選擇規則,以判斷用戶端裝置是否為此裝置群組的成員。如果用戶端裝置是成員,則核心裝置會使用此裝置群組的策略來授權用戶端裝置的處理行動。

每個選取規則至少包含一個選取規則子句,這是一個可以與用戶端裝置相符的單一運算式查詢。選取規則使用與AWS IoT叢集索引相同的查詢語法。如需有關選取規則語法的詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT叢集索引查詢語法

使用*萬用字元來比對多個用戶端裝置與一個選取規則子句。您可以在物件名稱結尾使用此萬用字元,以符合名稱以您指定之字串開頭的用戶端裝置。您也可以使用此萬用字元來比對所有用戶端裝置。

注意

若要選取包含冒號字元 (:) 的值,請使用反斜線字元 (\) 逸出冒號。在 JSON 等格式中,您必須逸出反斜線字元,因此您必須在冒號字元前輸入兩個反斜線字元。例如,指thingName: MyTeam\\:ClientDevice1定選取名稱為的物件MyTeam:ClientDevice1

您可以指定下列選取器:

  • thingName— 用戶端裝置AWS IoT物件的名稱。

範例選取規則

下列選取規則符合名稱為MyClientDevice1或的用戶端裝置MyClientDevice2

thingName: MyClientDevice1 OR thingName: MyClientDevice2
範例選取規則 (使用萬用字元)

下列選取規則符合名稱開頭為的用戶端裝置MyClientDevice

thingName: MyClientDevice*
範例選取規則 (符合所有裝置)

下列選取規則符合所有用戶端裝置。

thingName: *
policyName

適用於此裝置群組中用戶端裝置的權限原則。指定您在物件中定義的策略名policies稱。

policies

連線至核心裝置的用戶端裝置的用戶端裝置授權原則。每個授權原則都會指定一組處理行動以及用戶端裝置可以執行這些處理行動的資源。

此物件包含下列資訊:

policyNameKey

此授權原則的名稱。以可協助您識別此授權原則的名稱取policyNameKey代。您可以使用此原則名稱來定義要套用至裝置群組的原則。

此物件包含下列資訊:

statementNameKey

本政策聲明的名稱。請statementNameKey以可協助您識別此政策聲明的名稱取代。

此物件包含下列資訊:

operations

此原則中允許資源的作業清單。

您可以包括以下任何操作:

  • mqtt:connect— 授予連接到核心設備的權限。用戶端裝置必須具有此權限才能連線至核心裝置。

    此作業支援下列資源:

    • mqtt:clientId:deviceClientId— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId為要使用的用戶端 ID。

  • mqtt:publish— 授予將 MQTT 訊息發佈至主題的權限。

    此作業支援下列資源:

    • mqtt:topic:mqttTopic— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將 MQTT 主題取代為要使用的主題。

      此資源不支援 MQTT 主題萬用字元。

  • mqtt:subscribe— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。

    此作業支援下列資源:

    • mqtt:topicfilter:mqttTopicFilter— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter用的主題篩選器取代。

      此資源支援+# MQTT 主題萬用字元。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 MQTT 主題

      用戶端裝置可以訂閱您允許的確切主題篩選器。例如,如果您允許用戶端裝置訂閱mqtt:topicfilter:client/+/status資源,則用戶端裝置可以訂閱,client/+/status但無法訂閱client/client1/status

您可以指定*萬用字元以允許存取所有動作。

resources

此原則中允許作業的資源清單。指定與此策略中作業對應的資源。例如,您可以在指定作業的策略中指定 MQTT 主題資源 (mqtt:topic:mqttTopic) 清單。mqtt:publish

您可以指定*萬用字元以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別碼。例如,您可以指定"resources": "*",但無法指定"resources": "mqtt:clientId:*"

statementDescription

(選擇性) 此政策聲明的說明。

certificates

(選擇性) 此核心裝置的憑證組態選項。此物件包含下列資訊:

serverCertificateValiditySeconds

(選擇性) 本機 MQTT 伺服器憑證到期後的時間 (秒)。您可以設定此選項來自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

此元件會在到期前 24 小時輪換本機 MQTT 伺服器憑證。MQTT 代理程式 (例如 Moquette MQTT 代理程式元件) 會產生新憑證並重新啟動。發生這種情況時,連接到此核心裝置的所有用戶端裝置都會中斷連線。用戶端裝置可在短時間後重新連線至核心裝置。

預設值:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

(選擇性) 此核心裝置的效能組態選項。此物件包含下列資訊:

maxActiveAuthTokens

(選擇性) 作用中用戶端裝置授權權杖的數目上限。您可以增加此數目,讓更多數目的用戶端裝置連線到單一核心裝置,而無需重新驗證。

預設:2500

cloudRequestQueueSize

(選擇性) 此元件拒絕AWS 雲端要求之前,要排入佇列的要求數目上限。

預設:100

maxConcurrentCloudRequests

(選擇性) 要傳送至的並行要求數目上限AWS 雲端。您可以增加此數目,以改善連線大量用戶端裝置的核心裝置上的驗證效能。

預設:1

範例:組態合併更新 (使用限制性原則)

下列範例組態指定允許名稱開頭為的用戶端裝置MyClientDevice連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
範例:組態合併更新 (使用寬容原則)

下列範例設定指定允許所有用戶端裝置連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.1.x
deviceGroups

裝置群組是具有與核心裝置連線和通訊之權限的用戶端裝置群組。使用選取規則識別用戶端裝置群組,並定義用戶端裝置授權原則,以指定每個裝置群組的權限。

此物件包含下列資訊:

formatVersion

此配置物件的格式版本。

您可以從以下選項中選擇:

  • 2021-03-05

definitions

此核心裝置的裝置群組。每個定義都會指定一個選取規則,以評估用戶端裝置是否為群組的成員。每個定義也會指定要套用至符合選取規則的用戶端裝置的權限原則。如果用戶端裝置是多個裝置群組的成員,則該裝置的權限將由每個群組的權限原則組成。

此物件包含下列資訊:

groupNameKey

此裝置群組的名稱。以可協助您識別此裝置群組的名稱取groupNameKey代。

此物件包含下列資訊:

selectionRule

指定哪些用戶端裝置為此裝置群組成員的查詢。當用戶端裝置連線時,核心裝置會評估此選擇規則,以判斷用戶端裝置是否為此裝置群組的成員。如果用戶端裝置是成員,則核心裝置會使用此裝置群組的策略來授權用戶端裝置的處理行動。

每個選取規則至少包含一個選取規則子句,這是一個可以與用戶端裝置相符的單一運算式查詢。選取規則使用與AWS IoT叢集索引相同的查詢語法。如需有關選取規則語法的詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT叢集索引查詢語法

使用*萬用字元來比對多個用戶端裝置與一個選取規則子句。您可以在物件名稱結尾使用此萬用字元,以符合名稱以您指定之字串開頭的用戶端裝置。您也可以使用此萬用字元來比對所有用戶端裝置。

注意

若要選取包含冒號字元 (:) 的值,請使用反斜線字元 (\) 逸出冒號。在 JSON 等格式中,您必須逸出反斜線字元,因此您必須在冒號字元前輸入兩個反斜線字元。例如,指thingName: MyTeam\\:ClientDevice1定選取名稱為的物件MyTeam:ClientDevice1

您可以指定下列選取器:

  • thingName— 用戶端裝置AWS IoT物件的名稱。

範例選取規則

下列選取規則符合名稱為MyClientDevice1或的用戶端裝置MyClientDevice2

thingName: MyClientDevice1 OR thingName: MyClientDevice2
範例選取規則 (使用萬用字元)

下列選取規則符合名稱開頭為的用戶端裝置MyClientDevice

thingName: MyClientDevice*
範例選取規則 (符合所有裝置)

下列選取規則符合所有用戶端裝置。

thingName: *
policyName

適用於此裝置群組中用戶端裝置的權限原則。指定您在物件中定義的策略名policies稱。

policies

連線至核心裝置的用戶端裝置的用戶端裝置授權原則。每個授權原則都會指定一組處理行動以及用戶端裝置可以執行這些處理行動的資源。

此物件包含下列資訊:

policyNameKey

此授權原則的名稱。以可協助您識別此授權原則的名稱取policyNameKey代。您可以使用此原則名稱來定義要套用至裝置群組的原則。

此物件包含下列資訊:

statementNameKey

本政策聲明的名稱。請statementNameKey以可協助您識別此政策聲明的名稱取代。

此物件包含下列資訊:

operations

此原則中允許資源的作業清單。

您可以包括以下任何操作:

  • mqtt:connect— 授予連接到核心設備的權限。用戶端裝置必須具有此權限才能連線至核心裝置。

    此作業支援下列資源:

    • mqtt:clientId:deviceClientId— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId為要使用的用戶端 ID。

  • mqtt:publish— 授予將 MQTT 訊息發佈至主題的權限。

    此作業支援下列資源:

    • mqtt:topic:mqttTopic— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將 MQTT 主題取代為要使用的主題。

      此資源不支援 MQTT 主題萬用字元。

  • mqtt:subscribe— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。

    此作業支援下列資源:

    • mqtt:topicfilter:mqttTopicFilter— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter用的主題篩選器取代。

      此資源支援+# MQTT 主題萬用字元。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 MQTT 主題

      用戶端裝置可以訂閱您允許的確切主題篩選器。例如,如果您允許用戶端裝置訂閱mqtt:topicfilter:client/+/status資源,則用戶端裝置可以訂閱,client/+/status但無法訂閱client/client1/status

您可以指定*萬用字元以允許存取所有動作。

resources

此原則中允許作業的資源清單。指定與此策略中作業對應的資源。例如,您可以在指定作業的策略中指定 MQTT 主題資源 (mqtt:topic:mqttTopic) 清單。mqtt:publish

您可以指定*萬用字元以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別碼。例如,您可以指定"resources": "*",但無法指定"resources": "mqtt:clientId:*"

statementDescription

(選擇性) 此政策聲明的說明。

certificates

(選擇性) 此核心裝置的憑證組態選項。此物件包含下列資訊:

serverCertificateValiditySeconds

(選擇性) 本機 MQTT 伺服器憑證到期後的時間 (秒)。您可以設定此選項來自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

此元件會在到期前 24 小時輪換本機 MQTT 伺服器憑證。MQTT 代理程式 (例如 Moquette MQTT 代理程式元件) 會產生新憑證並重新啟動。發生這種情況時,連接到此核心裝置的所有用戶端裝置都會中斷連線。用戶端裝置可在短時間後重新連線至核心裝置。

預設值:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

範例:組態合併更新 (使用限制性原則)

下列範例組態指定允許名稱開頭為的用戶端裝置MyClientDevice連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
範例:組態合併更新 (使用寬容原則)

下列範例設定指定允許所有用戶端裝置連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.0.x
deviceGroups

裝置群組是具有與核心裝置連線和通訊之權限的用戶端裝置群組。使用選取規則識別用戶端裝置群組,並定義用戶端裝置授權原則,以指定每個裝置群組的權限。

此物件包含下列資訊:

formatVersion

此配置物件的格式版本。

您可以從以下選項中選擇:

  • 2021-03-05

definitions

此核心裝置的裝置群組。每個定義都會指定一個選取規則,以評估用戶端裝置是否為群組的成員。每個定義也會指定要套用至符合選取規則的用戶端裝置的權限原則。如果用戶端裝置是多個裝置群組的成員,則該裝置的權限將由每個群組的權限原則組成。

此物件包含下列資訊:

groupNameKey

此裝置群組的名稱。以可協助您識別此裝置群組的名稱取groupNameKey代。

此物件包含下列資訊:

selectionRule

指定哪些用戶端裝置為此裝置群組成員的查詢。當用戶端裝置連線時,核心裝置會評估此選擇規則,以判斷用戶端裝置是否為此裝置群組的成員。如果用戶端裝置是成員,則核心裝置會使用此裝置群組的策略來授權用戶端裝置的處理行動。

每個選取規則至少包含一個選取規則子句,這是一個可以與用戶端裝置相符的單一運算式查詢。選取規則使用與AWS IoT叢集索引相同的查詢語法。如需有關選取規則語法的詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT叢集索引查詢語法

使用*萬用字元來比對多個用戶端裝置與一個選取規則子句。您可以在物件名稱結尾使用此萬用字元,以符合名稱以您指定之字串開頭的用戶端裝置。您也可以使用此萬用字元來比對所有用戶端裝置。

注意

若要選取包含冒號字元 (:) 的值,請使用反斜線字元 (\) 逸出冒號。在 JSON 等格式中,您必須逸出反斜線字元,因此您必須在冒號字元前輸入兩個反斜線字元。例如,指thingName: MyTeam\\:ClientDevice1定選取名稱為的物件MyTeam:ClientDevice1

您可以指定下列選取器:

  • thingName— 用戶端裝置AWS IoT物件的名稱。

範例選取規則

下列選取規則符合名稱為MyClientDevice1或的用戶端裝置MyClientDevice2

thingName: MyClientDevice1 OR thingName: MyClientDevice2
範例選取規則 (使用萬用字元)

下列選取規則符合名稱開頭為的用戶端裝置MyClientDevice

thingName: MyClientDevice*
範例選取規則 (符合所有裝置)

下列選取規則符合所有用戶端裝置。

thingName: *
policyName

適用於此裝置群組中用戶端裝置的權限原則。指定您在物件中定義的策略名policies稱。

policies

連線至核心裝置的用戶端裝置的用戶端裝置授權原則。每個授權原則都會指定一組處理行動以及用戶端裝置可以執行這些處理行動的資源。

此物件包含下列資訊:

policyNameKey

此授權原則的名稱。以可協助您識別此授權原則的名稱取policyNameKey代。您可以使用此原則名稱來定義要套用至裝置群組的原則。

此物件包含下列資訊:

statementNameKey

本政策聲明的名稱。請statementNameKey以可協助您識別此政策聲明的名稱取代。

此物件包含下列資訊:

operations

此原則中允許資源的作業清單。

您可以包括以下任何操作:

  • mqtt:connect— 授予連接到核心設備的權限。用戶端裝置必須具有此權限才能連線至核心裝置。

    此作業支援下列資源:

    • mqtt:clientId:deviceClientId— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId為要使用的用戶端 ID。

  • mqtt:publish— 授予將 MQTT 訊息發佈至主題的權限。

    此作業支援下列資源:

    • mqtt:topic:mqttTopic— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將 MQTT 主題取代為要使用的主題。

      此資源不支援 MQTT 主題萬用字元。

  • mqtt:subscribe— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。

    此作業支援下列資源:

    • mqtt:topicfilter:mqttTopicFilter— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter用的主題篩選器取代。

      此資源支援+# MQTT 主題萬用字元。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 MQTT 主題

      用戶端裝置可以訂閱您允許的確切主題篩選器。例如,如果您允許用戶端裝置訂閱mqtt:topicfilter:client/+/status資源,則用戶端裝置可以訂閱,client/+/status但無法訂閱client/client1/status

您可以指定*萬用字元以允許存取所有動作。

resources

此原則中允許作業的資源清單。指定與此策略中作業對應的資源。例如,您可以在指定作業的策略中指定 MQTT 主題資源 (mqtt:topic:mqttTopic) 清單。mqtt:publish

您可以指定*萬用字元以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別碼。例如,您可以指定"resources": "*",但無法指定"resources": "mqtt:clientId:*"

statementDescription

(選擇性) 此政策聲明的說明。

範例:組態合併更新 (使用限制性原則)

下列範例組態指定允許名稱開頭為的用戶端裝置MyClientDevice連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
範例:組態合併更新 (使用寬容原則)

下列範例設定指定允許所有用戶端裝置連線和發佈/訂閱所有主題。

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }

本機記錄檔

此元件使用與 Greengrass 核元件相同的記錄檔。

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

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

Changelog

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

版本

變更

2.4.3

版本更新 Greengrass 2.11.0 版本釋放。

2.4.2

新的 功能

添加一個新的startupTimeoutSeconds配置選項。

2.4.1

版本更新了 Greengrass 2.10.0 版本。

2.4.0

新的 功能
  • 新增對用戶端裝置驗證的支援,以發出遙測代理程式將發佈的作業指標。

錯誤修復和改進
  • 修正用戶端裝置驗證需要 10 秒以上才能驗證用戶端裝置身分的問題。

  • 其他小的修正和改進。

2.3.2

錯誤修復和改進
  • 添加對緩存主機名信息的支持,以便組件在離線時重新啟動時正確生成證書主題。

2.3.1

錯誤修復和改進
  • 修復了內存洩漏。

2.3.0

警告

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

新的 功能

  • 添加了對客戶端設備的離線身份驗證的支持,以便當核心設備未連接到 Internet 時,它們可以繼續連接到核心設備。

  • 新增對客戶提供的憑證授權單位的支援,核心裝置用作根憑證來產生 MQTT 代理人憑證。

2.2.3

版本更新 Greengrass 2.8.0 版本的版本。

2.2.2

錯誤修復和改進
  • 修正本機 MQTT 伺服器憑證在特定情況下旋轉頻率高於預期的問題。

2.2.1

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

2.2.0

新的 功能
  • 添加對自定義組件的支持,以調用進程間通信(IPC)操作以驗證和授權客戶端設備。例如,您可以在自訂 MQTT 代理程式元件中使用這些作業。如需詳細資訊,請參閱 IPC:驗證和授權用戶端裝置

  • 新增maxActiveAuthTokens、和threadPoolSize選項cloudQueueSize,您可以設定這些選項來調整此元件的執行方式。

2.1.0

新的 功能
  • 新增您可以設定的serverCertificateValiditySeconds選項,以便在 MQTT 代理程式伺服器憑證到期時自訂。您可以設定伺服器憑證在 2 到 10 天後到期。

錯誤修復和改進
  • 修正此元件如何處理組態重設更新的問題。

  • 修正本機 MQTT 伺服器憑證在特定情況下旋轉頻率高於預期的問題。

    若要套用此修正程式,您也必須使用 v2.1.0 或更新版本的 Moquette M QTT 代理程式元件。

  • 改善此元件在輪換憑證時記錄的訊息。

  • 版本更新 Greengrass 2.6.0 版本發布。

2.0.4

版本更新了 Greengrass 核 2.5.0 版本。

2.0.3

錯誤修復和改進
  • 如果您輪換核心裝置的私密金鑰,認證現在會重新整理。

  • 更新以使日誌消息更清晰。

2.0.2

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

2.0.1

版本更新了 Greengrass 核 2.3.0 版本。

2.0.0

初始版本。