用戶端裝置驗證 - 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

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 資源名稱 (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,以讓核心裝置列出用戶端以進行離線驗證。

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

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

端點和連接埠

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

端點 連線埠 必要 描述

iot.region.amazonaws.com

443

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

相依性

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

2.4.4

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

相依性 兼容版本 相依性類型
Greengrass 核 >=2.6.0 軟式
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 軟式

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

組態

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

注意

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

對於 MQTT 5 代理程式 (EMQX) 元件,請更新restartIdentifier組態以重新啟動 MQTT 5 代理程式。如需詳細資訊,請參閱 MQTT 5 代理程式元件組態。

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

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 主題限制存取。將 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

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

支援下列資源變數:

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

    這會解析為正在評估原則之 AWS IoT Core 登錄中物件的名稱。 AWS IoT Core 使用裝置驗證時所顯示的憑證,以判斷要使用哪個物件來驗證連線。只有當裝置透過通訊協定透過 MQTT 或 MQTT 連線時,才能使用此原則變數。 WebSocket

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

(選擇性) 憑證授權單位組態選項,以您自己的中繼憑證授權單位取代核心裝置中繼授權單位。

注意

如果您使用自訂憑證授權單位 (CA) 設定 Greengrass 核心裝置,並使用相同的 CA 發行用戶端裝置憑證,則 Greengrass 會略過用戶端裝置 MQTT 作業的授權原則檢查。用戶端裝置驗證元件完全信任使用其設定為使用之 CA 簽署的憑證的用戶端。

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

此物件包含下列資訊。

证书

憑證的位置。它可以是文件系統 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 主題限制存取。將 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

(選擇性) 憑證授權單位組態選項,以您自己的中繼憑證授權單位取代核心裝置中繼授權單位。

注意

如果您使用自訂憑證授權單位 (CA) 設定 Greengrass 核心裝置,並使用相同的 CA 發行用戶端裝置憑證,則 Greengrass 會略過用戶端裝置 MQTT 作業的授權原則檢查。用戶端裝置驗證元件完全信任使用其設定為使用之 CA 簽署的憑證的用戶端。

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

此物件包含下列資訊。

证书

憑證的位置。它可以是文件系統 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 主題限制存取。將 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

(選擇性) 憑證授權單位組態選項,以您自己的中繼憑證授權單位取代核心裝置中繼授權單位。

注意

如果您使用自訂憑證授權單位 (CA) 設定 Greengrass 核心裝置,並使用相同的 CA 發行用戶端裝置憑證,則 Greengrass 會略過用戶端裝置 MQTT 作業的授權原則檢查。用戶端裝置驗證元件完全信任使用其設定為使用之 CA 簽署的憑證的用戶端。

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

此物件包含下列資訊。

证书

憑證的位置。它可以是文件系統 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
若要檢視此元件的記錄
  • 在核心裝置上執行下列命令,即時檢視此元件的記錄檔。以 AWS IoT Greengrass 根資料夾的路徑取代/greengrass/v2C:\greengrass\v2

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

變更記錄

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

版本

變更

2.5.0

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

  • 允許使用萬用字元 (例如mqtt:topic:my*.

2.4.5

新功能

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

錯誤修復和改進

修正在某些情況下,憑證不會以新連線資訊更新的問題。

2.4.4

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

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

初始版本。