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

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

客户端设备身份验证

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

注意

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

版本

注意

客户端设备身份验证版本 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当您在核心设备上更改此组件的版本时,nucleus 会重新启动。

该组件使用与 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,其中资源包括以下ARNMQTT主题:

      • $aws/things/coreDeviceThingName*-gci/shadow/get

    • iot:Subscribe,其中资源包括以下ARNsMQTT主题过滤器:

      • $aws/things/coreDeviceThingName*-gci/shadow/update/delta

      • $aws/things/coreDeviceThingName*-gci/shadow/get/accepted

    • iot:Receive,其中资源包括以下ARNsMQTT主题:

      • $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 核 >=2.6.0 <2.14.0 软性
2.4.4 - 2.5.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

配置

此组件提供以下配置参数,您可以在部署该组件时对其进行自定义。

注意

订阅权限是在客户向本地MQTT经纪人发出订阅请求期间进行评估的。如果客户现有的订阅权限被撤销,则该客户端将无法再订阅某个主题。但是,它将继续接收来自任何以前订阅的主题的消息。为防止这种行为,应在撤销订阅权限后重新启动本地MQTT代理以强制对客户端进行重新授权。

对于 MQTT 5 broker (EMQX) 组件,更新restartIdentifier配置以重启 MQTT 5 个代理。

对于 MQTT 3.1.1 代理 (Moquette) 组件,当服务器证书更改迫使客户端重新授权时,它默认每周重新启动一次。您可以通过更改核心设备的连接信息(IP 地址)来强制重启,也可以通过部署移除代理组件然后稍后重新部署来强制重启。

v2.5.0
deviceGroups

设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组,并定义为每个设备组指定权限的客户端设备授权策略

该对象包含以下信息:

formatVersion

此配置对象的格式版本。

从以下选项中进行选择:

  • 2021-03-05

definitions

此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为该组成员的选择规则。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果一台客户端设备是多个设备组的成员,则该设备的权限由每个组的权限策略组成。

该对象包含以下信息:

groupNameKey

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

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

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 的证书链的位置。这应该是返回到您的根 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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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 的证书链的位置。这应该是返回到您的根 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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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 的证书链的位置。这应该是返回到您的根 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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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 的证书链的位置。这应该是返回到您的根 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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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 的证书链的位置。这应该是返回到您的根 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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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

该设备组的名称。Replace(替换) 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

此授权策略的名称。Replace(替换) policyNameKey 其名称可以帮助您识别此授权策略。您可以使用此策略名称来定义哪个策略适用于设备组。

该对象包含以下信息:

statementNameKey

本政策声明的名称。Replace(替换) statementNameKey 其名称可帮助您识别本政策声明。

该对象包含以下信息:

operations

允许使用此策略中的资源的操作列表。

您可以包括以下任何操作:

  • mqtt:connect— 授予连接核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。

    此操作支持以下资源:

    • mqtt:clientId:deviceClientId— 根据客户端设备用于连接核心设备的MQTT代理的客户端 ID 限制访问权限。Replace(替换) deviceClientId 使用要使用的客户端 ID。

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

    此操作支持以下资源:

    • mqtt:topic:mqttTopic— 根据客户端设备发布消息的MQTT主题限制访问权限。Replace(替换) mqttTopic 并附上要使用的主题。

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

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

    此操作支持以下资源:

    • mqtt:topicfilter:mqttTopicFilter— 根据客户端设备可以订阅消息的MQTT主题限制访问权限。Replace(替换) mqttTopicFilter 使用主题筛选器。

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

      客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅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

警告

此版本不再可用。此版本的改进将在此组件的更高版本中提供。

新功能

  • 增加了对客户端设备的离线身份验证的支持,以便当核心设备未连接到 Internet 时,它们可以继续连接到核心设备。

  • 添加对客户提供的证书颁发机构的支持,核心设备将其用作生成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:对客户端设备进行身份验证和授权

  • 添加maxActiveAuthTokenscloudQueueSize、和threadPoolSize选项,您可以配置这些选项以调整此组件的性能。

2.1.0

新功能
  • 添加可配置为自定义中MQTT介服务器证书何时过期的serverCertificateValiditySeconds选项。您可以将服务器证书配置为在 2 到 10 天后过期。

错误修复和改进
  • 修复了此组件如何处理配置重置更新的问题。

  • 修复了在某些情况下本地MQTT服务器证书的轮换频率高于预期的问题。

    要应用此修复程序,您还必须使用 Moq MQTT uette 代理组件的 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

初始版本。