本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
用戶端裝置驗證
用戶端裝置 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 或防火牆。
端點 | 連線埠 | 必要 | 描述 |
---|---|---|---|
|
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:
— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId
deviceClientId
為要使用的用戶端 ID。
-
-
mqtt:publish
— 授予將 MQTT 訊息發佈至主題的權限。此作業支援下列資源:
-
mqtt:topic:
— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將mqttTopic
MQTT 主題
取代為要使用的主題。此資源不支援 MQTT 主題萬用字元。
-
-
mqtt:subscribe
— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。此作業支援下列資源:
-
mqtt:topicfilter:
— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter
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:
— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId
deviceClientId
為要使用的用戶端 ID。
-
-
mqtt:publish
— 授予將 MQTT 訊息發佈至主題的權限。此作業支援下列資源:
-
mqtt:topic:
— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將mqttTopic
MQTT 主題
取代為要使用的主題。此資源不支援 MQTT 主題萬用字元。
-
-
mqtt:subscribe
— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。此作業支援下列資源:
-
mqtt:topicfilter:
— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter
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:
— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId
deviceClientId
為要使用的用戶端 ID。
-
-
mqtt:publish
— 授予將 MQTT 訊息發佈至主題的權限。此作業支援下列資源:
-
mqtt:topic:
— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將mqttTopic
MQTT 主題
取代為要使用的主題。此資源不支援 MQTT 主題萬用字元。
-
-
mqtt:subscribe
— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。此作業支援下列資源:
-
mqtt:topicfilter:
— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter
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:
— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId
deviceClientId
為要使用的用戶端 ID。
-
-
mqtt:publish
— 授予將 MQTT 訊息發佈至主題的權限。此作業支援下列資源:
-
mqtt:topic:
— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將mqttTopic
MQTT 主題
取代為要使用的主題。此資源不支援 MQTT 主題萬用字元。
-
-
mqtt:subscribe
— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。此作業支援下列資源:
-
mqtt:topicfilter:
— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter
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:
— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId
deviceClientId
為要使用的用戶端 ID。
-
-
mqtt:publish
— 授予將 MQTT 訊息發佈至主題的權限。此作業支援下列資源:
-
mqtt:topic:
— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將mqttTopic
MQTT 主題
取代為要使用的主題。此資源不支援 MQTT 主題萬用字元。
-
-
mqtt:subscribe
— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。此作業支援下列資源:
-
mqtt:topicfilter:
— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter
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:
— 根據用戶端裝置用來連線至核心裝置的 MQTT 代理程式的用戶端 ID 來限制存取。取代deviceClientId
deviceClientId
為要使用的用戶端 ID。
-
-
mqtt:publish
— 授予將 MQTT 訊息發佈至主題的權限。此作業支援下列資源:
-
mqtt:topic:
— 根據用戶端裝置發佈訊息的 MQTT 主題限制存取。將mqttTopic
MQTT 主題
取代為要使用的主題。此資源不支援 MQTT 主題萬用字元。
-
-
mqtt:subscribe
— 授予訂閱 MQTT 主題篩選器以接收訊息的權限。此作業支援下列資源:
-
mqtt:topicfilter:
— 根據用戶端裝置可以訂閱訊息的 MQTT 主題限制存取。以要使mqttTopicFilter
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/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
Changelog
下表說明元件每個版本的變更。
版本 |
變更 |
---|---|
2.4.3 |
版本更新 Greengrass 2.11.0 版本釋放。 |
2.4.2 |
|
2.4.1 |
版本更新了 Greengrass 2.10.0 版本。 |
2.4.0 |
|
2.3.2 |
|
2.3.1 |
|
2.3.0 |
警告此版本已不再提供。此版本中的改進功能在此元件的更新版本中提供。 新的 功能
|
2.2.3 |
版本更新 Greengrass 2.8.0 版本的版本。 |
2.2.2 |
|
2.2.1 |
版本更新了 Greengrass 核 2.7.0 版本釋放。 |
2.2.0 |
|
2.1.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 |
初始版本。 |