本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
客户端设备身份验证
客户端设备身份验证组件 (aws.greengrass.clientdevices.Auth
) 验证客户端设备并授权客户端设备操作。
客户端设备是连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理的本地 IoT 设备。有关更多信息,请参阅与本地 IoT 设备进行交互。
Versions
此组件具有以下版本:
-
2.0.x
Requirements
此组件有以下要求:
-
这些区域有:Greengrass 服务角色必须与您的Amazon Web Services 账户并允许
iot:DescribeCertificate
权限。 -
核心设备的Amazon IoT策略必须允许以下权限:
-
greengrass:PutCertificateAuthorities
-
greengrass:VerifyClientDeviceIdentity
-
greengrass:VerifyClientDeviceIoTCertificateAssociation
-
greengrass:GetConnectivityInfo
有关更多信息,请参阅 数据层面操作的 Amazon IoT 策略 和 最低Amazon IoT策略来支持客户端设备。
-
Dependencies
部署组件时,Amazon IoT Greengrass还部署其依赖关系的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求才能成功部署组件。此部分列出了发布版本以及定义每个依赖关系的组件版本的语义版本约束。您也可以在中查看每一版的组件的依赖关系。Amazon IoT Greengrass控制台
有关组件依赖项的更多信息,请参阅。组件配方参考.
Configuration
此组件提供了以下配置参数,您可以在部署组件时自定义这些参数。
deviceGroups
-
设备组是具有与核心设备连接和通信权限的客户端设备组。使用选择规则标识客户端设备组,并定义指定每个设备组权限的授权策略。
此对象包含以下信息:
formatVersion
-
此配置对象的格式版本。
从以下选项中进行选择:
-
2021-03-05
-
definitions
-
此核心设备的设备组。每个定义都指定一个选择规则,用于评估客户端设备是否是组的成员。每个定义还指定要应用于与选择规则匹配的客户端设备的权限策略。如果客户端设备是多个设备组的成员,则该设备的权限是每个组的权限策略的联合。
此对象包含以下信息:
groupNameKey
-
此设备组的名称。Replace
组名密钥
,该名称可帮助您识别此设备组。此对象包含以下信息:
selectionRule
-
指定哪些客户端设备是此设备组成员的选择规则。当客户端设备连接时,核心设备将评估选择规则,以确定客户端设备是否是此设备组的成员。如果客户端设备是成员,核心设备将使用此设备组的策略授权客户端设备的操作。
使用
*
通配符将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称末尾使用此通配符来匹配名称以指定字符串开头的客户端设备。您还可以使用此通配符匹配所有客户端设备。注意 要选择包含冒号字符 (
:
),则用反斜杠字符转义冒号(\
)。在 JSON 等格式中,必须转义反斜杠字符,因此在冒号字符之前输入两个反斜杠字符。例如,指定thingName: MyTeam\\:ClientDevice1
选择名称为MyTeam:ClientDevice1
.您可以指定以下选择器:
-
thingName
— 客户端设备的Amazon IoT事物。
例 示例选择规则
以下选择规则匹配名称为
MyClientDevice1
或者MyClientDevice2
.thingName: MyClientDevice1 OR thingName: MyClientDevice2
例 选择规则示例(使用通配符)
以下选择规则匹配名称以
MyClientDevice
.thingName: MyClientDevice*
例 选择规则示例(匹配所有设备)
以下选择规则匹配所有客户端设备。
thingName: *
-
policyName
-
应用于此设备组中的客户端设备的权限策略。指定您在
policies
对象。
policies
-
连接到核心设备的客户端设备的设备组授权策略。每个授权策略都指定一组操作以及客户端设备可以对其执行这些操作的资源。
此对象包含以下信息:
policyNameKey
-
此授权策略的名称。Replace
策略名称密钥
替换为可帮助您识别此授权策略的名称。您可以使用此策略名称定义应用于设备组的策略。此对象包含以下信息:
statementNameKey
-
此策略语句的名称。Replace
语句名称键
替换为可帮助您识别此策略声明的名称。此对象包含以下信息:
operations
-
允许此策略中资源的操作列表。
您可以包括以下任何一个操作:
-
mqtt:connect
— 授予连接到核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。此操作支持以下资源:
-
mqtt:clientId:
— 根据客户端设备用于连接到核心设备的 MQTT 代理的客户端 ID 限制访问。ReplacedeviceClientId
设备 ID
与要使用的客户端 ID。
-
-
mqtt:publish
— 授予向主题发布 MQTT 消息的权限。此操作支持以下资源:
-
mqtt:topic:
— 根据客户端设备发布消息的 MQTT 主题限制访问。ReplacemqttTopic
MqttTopic
与要使用的主题。此资源不支持 MQTT 主题通配符。
-
-
mqtt:subscribe
— 授予订阅 MQTT 主题筛选器以接收消息的权限。此操作支持以下资源:
-
mqtt:topicfilter:
— 根据客户端设备可以订阅消息的 MQTT 主题限制访问。ReplacemqttTopicFilter
MQTT 主题筛选器
与要使用的主题过滤器。此资源支持
+
和#
MQTT 主题通配符。有关更多信息,请参阅 。MQTT 主题中的Amazon IoT Core开发人员指南.客户端设备可以订阅您允许的确切主题筛选器。例如,如果您允许客户端设备订阅
mqtt:topicfilter:client/+/status
资源,客户端设备可以订阅client/+/status
但不是client/client1/status
.
-
您可以指定
*
通配符以允许访问所有操作。 -
resources
-
允许在此策略中执行操作的资源列表。指定与此策略中的操作相对应的资源。例如,您可以指定 MQTT 主题资源列表 (
mqtt:topic:
),该策略指定mqttTopic
mqtt:publish
operation.您可以指定
*
通配符以允许访问所有资源。您不能使用*
通配符以匹配部分资源标识符。例如,您可以指定"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" ] } } } } }
例如:配置合并更新(使用权限策略)
以下示例配置指定允许名称以MyClientDevice
连接和发布/订阅所有主题。
{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
Changelog
下表介绍每一版的中的更改。
Version |
更改 |
---|---|
2.0.2 |
已更新适用于 Greengrass 原核 2.4.0 版发行。 |
2.0.1 |
已更新适用于 Greengrass 原核 2.3.0 版发行。 |
2.0.0 |
初始版本。 |