客户端设备身份验证 - AWS IoT Greengrass

客户端设备身份验证

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

注意

客户端设备是本地 IoT 设备,连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息,请参阅 与本地 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 Nucleus 在与该 Nucleus 相同的 Java 虚拟机(JVM)中运行该组件。当您在核心设备上更改此组件的版本时,Nucleus 会重新启动。

此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息,请参阅 监控 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。

端点和端口

除基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙

Endpoint 端口 必需 描述

iot.region.amazonaws.com

443

用于获取有关 AWS IoT 事物证书的信息。

依赖项

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

2.5.1

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.14.0 软性
2.4.4 - 2.5.0

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.13.0 软性
2.4.3

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.12.0 软性
2.4.1 and 2.4.2

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.11.0 软性
2.3.0 – 2.4.0

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.10.0 软性
2.3.0

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.10.0 软性
2.2.3

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <=2.9.0 软性
2.2.2

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <=2.8.0 软性
2.2.1

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.8.0 软性
2.2.0

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.6.0 <2.7.0 软性
2.1.0

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.2.0 <2.7.0 软性
2.0.4

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.2.0 <2.6.0 软性
2.0.2 and 2.0.3

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.2.0 <2.5.0 软性
2.0.1

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

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

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 或通过 WebSocket 的 MQTT 协议进行连接时,才能使用该策略变量。

statementDescription

(可选)此政策语句的描述。

certificates

(可选)此核心设备的证书配置选项。该对象包含以下信息:

serverCertificateValiditySeconds

(可选)本地 MQTT 服务器证书到期后的时间长度(以秒为单位)。您可以配置此选项,以自定义客户端设备断开连接并重新连接到核心设备的频率。

此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理(例如 Moquette MQTT 代理组件)生成新证书并重新启动。发生这种情况时,连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。

默认值:604800(7 天)

最小值:172800(2 天)

最大值:864000(10 天)

performance

(可选)此核心设备的性能配置选项。该对象包含以下信息:

maxActiveAuthTokens

(可选)活动客户端设备授权令牌的最大数量。您可以增加此数字,以支持更多的客户端设备能够连接到单个核心设备,而无需重新对其进行身份验证。

默认:2500

cloudRequestQueueSize

(可选)在此组件拒绝请求之前要排队的 AWS Cloud 请求的最大数量。

默认:100

maxConcurrentCloudRequests

(可选)要向 AWS Cloud 发送的并发请求的最大数量。您可以增加此数字,以提高您用于连接大量客户端设备的核心设备的身份验证性能。

默认:1

certificateAuthority

(可选)证书颁发机构配置选项,使用您自己的中间证书颁发机构替换核心设备中间颁发机构。

注意

如果您将 Greengrass 核心设备配置为自定义证书颁发机构(CA),并使用相同的 CA 颁发客户端设备证书,则 Greengrass 会绕过对客户端设备 MQTT 操作的授权策略检查。客户端设备身份验证组件完全信任使用由配置 CA 签署的证书的客户端。

要在使用自定义 CA 时限制此行为,请使用其他 CA 或中间 CA 创建和签署客户端设备,然后调整 certificateUricertificateChainUri 字段以指向正确的中间 CA。

该对象包含以下信息。

certificateUri

证书的位置。它可以是文件系统 URI,也可以是指向硬件安全模块中存储的证书的 URI。

certificateChainUri

核心设备 CA 的设备链的 ARN。这应该是返回到您的根 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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 Cloud 请求的最大数量。

默认:100

maxConcurrentCloudRequests

(可选)要向 AWS Cloud 发送的并发请求的最大数量。您可以增加此数字,以提高您用于连接大量客户端设备的核心设备的身份验证性能。

默认:1

certificateAuthority

(可选)证书颁发机构配置选项,使用您自己的中间证书颁发机构替换核心设备中间颁发机构。

注意

如果您将 Greengrass 核心设备配置为自定义证书颁发机构(CA),并使用相同的 CA 颁发客户端设备证书,则 Greengrass 会绕过对客户端设备 MQTT 操作的授权策略检查。客户端设备身份验证组件完全信任使用由配置 CA 签署的证书的客户端。

要在使用自定义 CA 时限制此行为,请使用其他 CA 或中间 CA 创建和签署客户端设备,然后调整 certificateUricertificateChainUri 字段以指向正确的中间 CA。

该对象包含以下信息。

certificateUri

证书的位置。它可以是文件系统 URI,也可以是指向硬件安全模块中存储的证书的 URI。

certificateChainUri

核心设备 CA 的设备链的 ARN。这应该是返回到您的根 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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 Cloud 请求的最大数量。

默认:100

maxConcurrentCloudRequests

(可选)要向 AWS Cloud 发送的并发请求的最大数量。您可以增加此数字,以提高您用于连接大量客户端设备的核心设备的身份验证性能。

默认:1

certificateAuthority

(可选)证书颁发机构配置选项,使用您自己的中间证书颁发机构替换核心设备中间颁发机构。

注意

如果您将 Greengrass 核心设备配置为自定义证书颁发机构(CA),并使用相同的 CA 颁发客户端设备证书,则 Greengrass 会绕过对客户端设备 MQTT 操作的授权策略检查。客户端设备身份验证组件完全信任使用由配置 CA 签署的证书的客户端。

要在使用自定义 CA 时限制此行为,请使用其他 CA 或中间 CA 创建和签署客户端设备,然后调整 certificateUricertificateChainUri 字段以指向正确的中间 CA。

该对象包含以下信息。

certificateUri

证书的位置。它可以是文件系统 URI,也可以是指向硬件安全模块中存储的证书的 URI。

certificateChainUri

核心设备 CA 的设备链的 ARN。这应该是返回到您的根 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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 Cloud 请求的最大数量。

默认:100

maxConcurrentCloudRequests

(可选)要向 AWS Cloud 发送的并发请求的最大数量。您可以增加此数字,以提高您用于连接大量客户端设备的核心设备的身份验证性能。

默认:1

certificateAuthority

(可选)证书颁发机构配置选项,使用您自己的中间证书颁发机构替换核心设备中间颁发机构。该对象包含以下信息。

该对象包含以下信息:

certificateUri

证书的位置。它可以是文件系统 URI,也可以是指向硬件安全模块中存储的证书的 URI。

certificateChainUri

核心设备 CA 的设备链的 ARN。这应该是返回到您的根 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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 Cloud 请求的最大数量。

默认:100

maxConcurrentCloudRequests

(可选)要向 AWS Cloud 发送的并发请求的最大数量。您可以增加此数字,以提高您用于连接大量客户端设备的核心设备的身份验证性能。

默认:1

certificateAuthority

(可选)证书颁发机构配置选项,使用您自己的中间证书颁发机构替换核心设备中间颁发机构。该对象包含以下信息。

certificateUri

证书的位置。它可以是文件系统 URI,也可以是指向硬件安全模块中存储的证书的 URI。

certificateChainUri

核心设备 CA 的设备链的 ARN。这应该是返回到您的根 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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 Cloud 请求的最大数量。

默认:100

maxConcurrentCloudRequests

(可选)要向 AWS Cloud 发送的并发请求的最大数量。您可以增加此数字,以提高您用于连接大量客户端设备的核心设备的身份验证性能。

默认: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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 事物的名称。

例 选择规则示例

以下选择规则匹配名称为 MyClientDevice1MyClientDevice2 的客户端设备。

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 开发人员指南》中的 MMQTT 主题

      客户端设备可以订阅您允许的确切主题筛选条件。例如,如果您允许客户端设备订阅 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 Nucleus 组件相同的日志文件。

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。将 /greengrass/v2C:\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.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:对客户端设备进行身份验证和授权

  • 添加了 maxActiveAuthTokenscloudQueueSizethreadPoolSize 选项,您可以配置这些选项以调整此组件的性能。

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

初始版本。