事物策略变量 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

事物策略变量

事物策略变量允许您根据事物名称、事物类型和事物属性值等事物属性来编写授予或拒绝权限的 Amazon IoT Core 策略。可以使用事物策略变量应用相同的策略来控制多个 Amazon IoT Core 设备。有关设备预调配的更多信息,请参阅设备预调配

如果您使用非独占事物关联,则同一证书可以附加到多个事物。为保持清晰的关联并避免潜在冲突,您必须将客户端 ID 与事物名称匹配。在这种情况下,您可以从 MQTT Connect 消息中获取事物名称,该消息在事物连接到 Amazon IoT Core 时发送。

在 Amazon IoT Core 策略中使用事物策略变量时,请记住以下事项。

  • 使用 AttachThingPrincipal API 将证书或主体(经过身份验证的 Amazon Cognito Identity)附加到事物。

  • 如果存在非独占事物关联,当您用事物策略变量替换事物名称时,MQTT 连接消息或 TLS 连接中的 clientId 值必须与事物名称完全匹配。

可用的事物策略变量如下:

  • iot:Connection.Thing.ThingName

    它解析为 Amazon IoT Core 注册表中要评估策略的事物的名称。Amazon IoT Core 使用设备在进行身份验证时提供的证书,以确定用于验证连接的事物。只有在设备通过 MQTT 或通过 WebSocket 的 MQTT 协议进行连接时,才能使用该策略变量。

  • iot:Connection.Thing.ThingTypeName

    它解析为与要评估策略的事物关联的事物类型。MQTT/WebSocket 连接的客户端 ID 必须与事物名称相同。此策略变量仅在通过 MQTT 或基于 WebSocket 协议的 MQTT 连接时可用。

  • iot:Connection.Thing.Attributes[attributeName]

    它解析为与要评估策略的事物关联的指定属性的值。事物最多可以具有 50 个属性。每个属性都作为策略变量提供:iot:Connection.Thing.Attributes[attributeName],其中 attributeName 是属性的名称。MQTT/WebSocket 连接的客户端 ID 必须与事物名称相同。此策略变量仅在通过 MQTT 或基于 WebSocket 协议的 MQTT 连接时可用。

  • iot:Connection.Thing.IsAttached

    iot:Connection.Thing.IsAttached: ["true"] 强制执行仅同时在 Amazon IoT 中注册并附加到可以访问策略内权限的主体的设备。如果设备提供的证书未附加到 Amazon IoT Core 注册表中的物联网事物,则您可以使用此变量阻止设备连接到 Amazon IoT Core。此变量具有值 true 或者 false,表示连接的事物已使用 AttachThingPrincipal API 附加到证书或 Amazon Cognito Identity。事物名称被视为客户端 ID。

如果您的客户端 ID 与事物名称匹配,或者如果您将证书独占附加到事物,则在策略定义中使用策略变量可以简化策略管理。您可以使用事物策略变量定义单个策略,而不是为每个物联网事物创建单独的策略。此策略可以动态应用于所有设备。以下是一个示例策略来说明其工作原理。有关更多信息,请参阅 将 Amazon IoT 事物关联到 MQTT 客户端连接

JSON
{ "Version":"2012-10-17", "Statement": [ { "Condition": { "StringLike": { "iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}" } }, "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:us-east-1:123456789012:client/*" } ] }

此策略示例允许事物连接到 Amazon IoT Core,前提是它们的客户端 ID 以其 envType 属性的值结尾。只有具有匹配客户端 ID 模式的事物才被允许连接。