0

在 AWS IOT 中,我没有看到任何在线解释来描述确保发布包含敏感数据的主题的设备只能由设备所有者访问的最佳方式。

例如,Bob 登录到他的智能手机应用程序并使用 Cognito 进行身份验证。已经有一个关于身份池身份验证角色的策略允许访问 AWS IOT,并且管理 lambda 在注册期间调用了 AttachPrincipalPolicy 并允许 Bob 访问 AWS IOT。

Bob 拥有一个名为“thermostat”的设备,上面安装了 x509 证书,用于向 AWS IOT 进行身份验证。它正在发布主题,例如 /thermostat/123/temperature/75(序列号:123,温度:75),而 Bob 在他的智能手机上订阅了相同的主题(/thermostat/123/temperature/*)

我们如何防止另一个用户 Jill 订阅 /thermostat/123/temperature/* 并读取 Bob 的私人数据,她的恒温器已通过相同的设置(这使她可以访问 AWS IOT)?

我猜它与序列号有关,但在这种情况下,您如何将 Bob 的身份 ID 与设备的序列号相关联?当每个用户和设备都使用完全不同的身份验证机制(Cognito 和 X509)时,关联用户和设备的最佳方式是什么?

4

1 回答 1

1

但在这种情况下,如何将 Bob 的身份 ID 与设备的序列号关联起来?

ThingAttributes可以存储简单的设备所有者关系。将ownerID属性添加到您的设备 Things。或者对更复杂的场景使用外部存储。

AWS 在其MQTT 主题设计文档中建议“在 MQTT 主题中包含任何相关的路由信息​​”。如果您有单一、稳定的所有者,诸如此类的主题模式jill/thermostat/123/temperature/*可能会很有用。IoT Core Policy中的事物策略变量 可以使这些动态化。{iot:Connection.Thing.Attributes[ownerID]}

Cognito auth:我们如何防止另一个用户 Jill ... 读取 Bob 的私人数据?

当 Jill 使用 Amazon Cognito 身份向 IoT Core 进行身份验证时,您的客户端代码或 lambda 可以生成用户特定的 IoT Core 策略,以作为身份验证流的一部分附加到 Jill 的用户身份。将编写该策略以仅允许 Jill 访问她的设备。

于 2021-12-07T10:19:33.480 回答