客户端设备身份验证 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

客户端设备身份验证

客户端设备身份验证组件 (aws.greengrass.clientdevices.Auth) 验证客户端设备并授权客户端设备操作。

注意

客户端设备是连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理的本地 IoT 设备。有关更多信息,请参阅 与本地 IoT 设备进行交互

Versions

此组件具有以下版本:

  • 2.0.x

Requirements

此组件具有以下要求:

Dependencies

部署组件时,Amazon IoT Greengrass还部署其依赖关系的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求才能成功部署组件。本部分列出了对应的依赖项。发布版本以及定义每个依赖关系的组件版本的语义版本约束。您也可以在中查看组件每个版本的依赖关系。Amazon IoT Greengrass控制台。在组件详细信息页面上,查找依赖项列表。

2.0.1

下表列出了此组件 2.0.1 版的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >==2.2.0 软性
2.0.0

下表列出了此组件 2.0.0 版本的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >==2.2.0 软性

有关组件依赖项的更多信息,请参阅。组件配方参考

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:deviceClientId— 根据客户端设备用于连接到核心设备的 MQTT 代理的客户端 ID 限制访问。Replace设备 ID与要使用的客户端 ID。

  • mqtt:publish— 授予向主题发布 MQTT 消息的权限。

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的 MQTT 主题限制访问。ReplaceMQttTopic与要使用的主题。

      此资源不支持 MQTT 主题通配符。

  • mqtt:subscribe— 授予订阅 MQTT 主题筛选器以接收消息的权限。

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的 MQTT 主题限制访问。ReplaceMQTT 主题筛选器与要使用的主题过滤器。

      该资源支持+#MQTT 主题通配符。有关更多信息,请参阅 。MQTT 主题中的 Amazon IoT Core 开发人员指南

      客户端设备可以订阅您允许的确切主题筛选器。例如,如果您允许客户端设备订阅mqtt:topicfilter:client/+/status资源,客户端设备可以订阅client/+/status但不是client/client1/status

您可以指定*通配符以允许访问所有操作。

resources

允许在此策略中执行操作的资源列表。指定与此策略中的操作相对应的资源。例如,您可以指定 MQTT 主题资源列表 (mqtt:topic:mqttTopic),该策略指定mqtt:publishoperation.

您可以指定*通配符,允许访问所有资源。您不能使用*通配符以匹配部分资源标识符。例如,您可以指定"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.1

版本更新为 Greengrass 核 2.3.0 版发行。

2.0.0

初始版本。