用戶端裝置驗證 - AWS IoT Greengrass

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

用戶端裝置驗證

用戶端裝置驗證元件 (aws.greengrass.clientdevices.Auth) 會驗證用戶端裝置,並授權用戶端裝置動作。

注意

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

版本

注意

用戶端裝置驗證 2.3.0 版已停止。我們強烈建議您升級至用戶端裝置驗證版本 2.3.1 或更新版本。

此元件具有下列版本:

  • 2.5.x

  • 2.4.x 版本

  • 2.3.x 版本

  • 2.2.x 版本

  • 2.1.x

  • 2.0.x

Type

此元件是外掛程式元件 (aws.greengrass.plugin)。Greengrass 核會在與核相同的 Java 虛擬機器 (JVM) 中執行此元件。當您在核心裝置上變更此元件的版本時,核會重新啟動。

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

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

作業系統

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

  • Linux

  • Windows

要求

此元件有下列需求:

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

  • 核心裝置的 AWS IoT 政策必須允許下列許可:

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

    • greengrass:VerifyClientDeviceIoTCertificateAssociation,其中資源包含連接至核心裝置之每個用戶端裝置的 Amazon Resource Name (ARN)

    • greengrass:VerifyClientDeviceIdentity

    • greengrass:PutCertificateAuthorities

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

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

    • iot:Subscribe,其中資源包含下列MQTT主題篩選條件ARNs的 :

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

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

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

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

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

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

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

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

  • 用戶端裝置驗證元件支援在 中執行VPC。若要在 中部署此元件VPC,需要下列項目。

    • 用戶端裝置身分驗證元件必須具有與 AWS IoT data AWS IoT 、 登入資料和 Amazon S3 的連線。

端點和連接埠

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

端點 連線埠 必要 描述

iot.region.amazonaws.com

443

用於取得 AWS IoT 物件憑證的相關資訊。

相依性

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

2.5.2

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

相依性 相容版本 相依性類型
Greengrass 核 >=2.6.0 <2.15.0 軟式
2.5.1

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

相依性 相容版本 相依性類型
Greengrass 核 >=2.6.0 <2.14.0 軟式
2.4.4 - 2.5.0

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

相依性 相容版本 相依性類型
Greengrass 核 >=2.6.0 <2.13.0 軟式
2.4.3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

組態

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

注意

在向本機MQTT代理程式提出用戶端訂閱請求時,會評估訂閱許可。如果用戶端的現有訂閱許可遭到撤銷,用戶端將無法再訂閱主題。不過,它會繼續接收來自任何先前訂閱主題的訊息。為了防止這種行為,在撤銷訂閱許可以強制重新授權用戶端之後,應該重新啟動本機MQTT代理程式。

對於 MQTT 5 個代理程式 (EMQX) 元件,請更新restartIdentifier組態以重新啟動 MQTT 5 個代理程式。

對於 MQTT 3.1.1 代理程式 (Moquette) 元件,當伺服器憑證變更強制用戶端重新授權時,它會預設每週重新啟動。您可以變更核心裝置的連線資訊 (IP 地址),或進行部署以移除代理程式元件,然後再次部署,以強制重新啟動。

v2.5.0
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*
範例選取規則 (使用萬用字元)

下列選擇規則符合名稱結尾為 的用戶端裝置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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

您可以在資源變數內的任何位置指定*萬用字元,以允許存取所有資源。例如,您可以指定 mqtt:topic:my* 以允許存取與該輸入相符的資源。

支援下列資源變數:

  • mqtt:topic:${iot:Connection.Thing.ThingName}

    這會解析為正在評估政策之 AWS IoT Core 登錄檔中的物件名稱。 AWS IoT Core 會使用裝置在驗證時提供的憑證,來判斷要使用哪些物件來驗證連線。此政策變數只有在裝置透過 MQTT通訊協定或透過 MQTT WebSocket 通訊協定連線時才能使用。

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項來自訂用戶端裝置中斷連線和重新連線核心裝置的頻率。

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

預設:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

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

maxActiveAuthTokens

(選用) 作用中用戶端裝置授權字符的數量上限。您可以增加此數字,讓更多用戶端裝置連接到單一核心裝置,而無需重新驗證它們。

預設:2500

cloudRequestQueueSize

(選用) 此元件拒絕 AWS 雲端 請求之前佇列的請求數量上限。

預設:100

maxConcurrentCloudRequests

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

預設:1

certificateAuthority

(選用) 憑證授權機構組態選項,可將核心裝置中繼授權單位取代為您自己的中繼憑證授權機構。

注意

如果您使用自訂憑證授權機構 (CA) 設定 Greengrass 核心裝置,並使用相同的 CA 來發出用戶端裝置憑證,Greengrass 會略過用戶端裝置MQTT操作的授權政策檢查。用戶端裝置身分驗證元件會使用其設定為使用的 CA 簽署的憑證,完全信任用戶端。

若要在使用自訂 CA 時限制此行為,請使用不同的 CA 或中繼 CA 建立和簽署用戶端裝置,然後調整 certificateUricertificateChainUri 欄位以指向正確的中繼 CA。

此物件包含下列資訊。

certificateUri

憑證的位置。它可以是檔案系統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": [ "*" ] } } } } }
範例:組態合併更新 (使用物件名稱政策)

下列範例組態可讓用戶端裝置在以用戶端裝置物件名稱開頭並以字串 結尾的主題上發佈topic

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "myThing": { "selectionRule": "thingName: *", "policyName": "MyThingNamePolicy" } }, "policies": { "MyThingNamePolicy": { "policyStatement": { "statementDescription": "mqtt publish", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:${iot:Connection.Thing.ThingName}/*/topic" ] } } } } }
v2.4.5
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*
範例選取規則 (使用萬用字元)

下列選擇規則符合名稱結尾為 的用戶端裝置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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

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

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項,以自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

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

預設:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

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

maxActiveAuthTokens

(選用) 作用中用戶端裝置授權字符的數量上限。您可以增加此數字,讓更多用戶端裝置連接到單一核心裝置,而無需重新驗證它們。

預設:2500

cloudRequestQueueSize

(選用) 此元件拒絕 AWS 雲端 請求之前佇列的請求數量上限。

預設:100

maxConcurrentCloudRequests

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

預設:1

certificateAuthority

(選用) 憑證授權機構組態選項,可將核心裝置中繼授權單位取代為您自己的中繼憑證授權單位。

注意

如果您使用自訂憑證授權機構 (CA) 設定 Greengrass 核心裝置,並使用相同的 CA 來發出用戶端裝置憑證,Greengrass 會略過用戶端裝置MQTT操作的授權政策檢查。用戶端裝置身分驗證元件會使用其設定為使用的 CA 簽署的憑證,完全信任用戶端。

若要在使用自訂 CA 時限制此行為,請使用不同的 CA 或中繼 CA 建立和簽署用戶端裝置,然後調整 certificateUricertificateChainUri 欄位以指向正確的中繼 CA。

此物件包含下列資訊。

certificateUri

憑證的位置。它可以是檔案系統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.2 - v2.4.4
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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

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

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項來自訂用戶端裝置中斷連線和重新連線核心裝置的頻率。

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

預設:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

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

maxActiveAuthTokens

(選用) 作用中用戶端裝置授權字符的數量上限。您可以增加此數字,讓更多用戶端裝置連接到單一核心裝置,而無需重新驗證它們。

預設:2500

cloudRequestQueueSize

(選用) 此元件拒絕 AWS 雲端 請求之前佇列的請求數量上限。

預設:100

maxConcurrentCloudRequests

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

預設:1

certificateAuthority

(選用) 憑證授權機構組態選項,可將核心裝置中繼授權單位取代為您自己的中繼憑證授權機構。

注意

如果您使用自訂憑證授權機構 (CA) 設定 Greengrass 核心裝置,並使用相同的 CA 來發出用戶端裝置憑證,Greengrass 會略過用戶端裝置MQTT操作的授權政策檢查。用戶端裝置身分驗證元件會使用其設定為使用的 CA 簽署的憑證,完全信任用戶端。

若要在使用自訂 CA 時限制此行為,請使用不同的 CA 或中繼 CA 建立和簽署用戶端裝置,然後調整 certificateUricertificateChainUri 欄位以指向正確的中繼 CA。

此物件包含下列資訊。

certificateUri

憑證的位置。它可以是檔案系統URI,URI也可以指向存放在硬體安全模組中的憑證。

certificateChainUri

核心裝置 CA 的憑證鏈位置。這應該是完整憑證鏈結,再回到您的根 CA。它可以是檔案系統URI,URI也可以指向存放在硬體安全模組中的憑證鏈。

privateKeyUri

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

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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

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

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項來自訂用戶端裝置中斷連線和重新連線核心裝置的頻率。

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

預設:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

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

maxActiveAuthTokens

(選用) 作用中用戶端裝置授權字符的數量上限。您可以增加此數字,讓更多用戶端裝置連接到單一核心裝置,而無需重新驗證它們。

預設:2500

cloudRequestQueueSize

(選用) 此元件拒絕 AWS 雲端 請求之前佇列的請求數量上限。

預設:100

maxConcurrentCloudRequests

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

預設:1

certificateAuthority

(選用) 憑證授權機構組態選項,可將核心裝置中繼授權單位取代為您自己的中繼憑證授權機構。此物件包含下列資訊。

此物件包含下列資訊:

certificateUri

憑證的位置。它可以是檔案系統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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

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

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項來自訂用戶端裝置中斷連線和重新連線核心裝置的頻率。

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

預設:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

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

maxActiveAuthTokens

(選用) 作用中用戶端裝置授權字符的數量上限。您可以增加此數字,讓更多用戶端裝置連接到單一核心裝置,而無需重新驗證它們。

預設:2500

cloudRequestQueueSize

(選用) 此元件拒絕 AWS 雲端 請求之前佇列的請求數量上限。

預設:100

maxConcurrentCloudRequests

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

預設:1

certificateAuthority

(選用) 憑證授權機構組態選項,可將核心裝置中繼授權單位取代為您自己的中繼憑證授權單位。此物件包含下列資訊。

certificateUri

憑證的位置。它可以是檔案系統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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

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

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項,以自訂用戶端裝置中斷連線並重新連線至核心裝置的頻率。

此元件會在本機MQTT伺服器憑證過期前 24 小時輪換本機伺服器憑證。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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

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

statementDescription

(選用) 此政策陳述式的描述。

certificates

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

serverCertificateValiditySeconds

(選用) 本機MQTT伺服器憑證過期的時間量 (以秒為單位)。您可以設定此選項來自訂用戶端裝置中斷連線和重新連線核心裝置的頻率。

此元件會在本機MQTT伺服器憑證過期前 24 小時輪換本機伺服器憑證。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的主題來限制存取。mqttTopic 將 取代為要使用的主題。

      此資源不支援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:publish操作的政策中指定MQTT主題資源 (mqtt:topic:mqttTopic) 的清單。

您可以指定*萬用字元,以允許存取所有資源。您無法使用*萬用字元來比對部分資源識別符。例如,您可以指定 "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/v2或 取代C:\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

變更記錄

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

版本

變更

2.5.2

針對 Greengrass nucleus 2.14.0 版更新版本。

2.5.1

錯誤修正和改善
  • 支援FIPS端點。

2.5.0

新功能
  • 允許政策資源的${iot:Connection.Thing.ThingName}變數取代。

  • 允許具有萬用字元的政策資源,例如 mqtt:topic:my*

2.4.5

新功能

新增對萬用字元字首的支援,以使用 selectionRule 參數選取物件名稱。

錯誤修正和改善

修正在特定情況下,憑證未更新為新連線資訊的問題。

2.4.4

針對 Greengrass nucleus 2.12.0 版更新版本。

2.4.3

針對 Greengrass nucleus 2.11.0 版更新版本。

2.4.2

新功能

新增新的startupTimeoutSeconds組態選項。

2.4.1

針對 Greengrass nucleus 2.10.0 版更新版本。

2.4.0

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

錯誤修正和改善
  • 修正用戶端裝置身分驗證需要超過 10 秒才能驗證用戶端裝置身分的問題。

  • 其他次要修正和改善。

2.3.2

錯誤修正和改善
  • 新增快取主機名稱資訊的支援,讓元件在離線重新啟動時正確產生憑證主體。

2.3.1

錯誤修正和改善
  • 修正記憶體洩漏。

2.3.0

警告

此版本不再可用。此版本的改善項目可在此元件的較新版本中使用。

新功能

  • 新增對用戶端裝置的離線身分驗證支援,以便在核心裝置未連線至網際網路時繼續連線至核心裝置。

  • 新增支援核心裝置用來產生MQTT代理程式憑證的客戶提供的憑證授權機構做為根憑證。

2.2.3

針對 Greengrass nucleus 2.8.0 版更新版本。

2.2.2

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

2.2.1

針對 Greengrass nucleus 2.7.0 版更新版本。

2.2.0

新功能
  • 新增對自訂元件的支援,以呼叫處理間通訊 (IPC) 操作,以驗證和授權用戶端裝置。例如,您可以在自訂MQTT代理程式元件中使用這些操作。如需詳細資訊,請參閱IPC:驗證和授權用戶端裝置

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

2.1.0

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

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

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

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

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

  • 針對 Greengrass nucleus 2.6.0 版更新版本。

2.0.4

針對 Greengrass nucleus 2.5.0 版更新版本。

2.0.3

錯誤修正和改善
  • 如果您輪換核心裝置的私有金鑰,登入資料現在會重新整理。

  • 更新以更清楚日誌訊息。

2.0.2

針對 Greengrass nucleus 2.4.0 版更新版本。

2.0.1

針對 Greengrass nucleus 2.3.0 版更新版本。

2.0.0

初始版本。