背景介绍
随着亚马逊物联网设备的普及,如何安全灵活地管理设备的控制权变得更加复杂。在过去简单的应用场景下,控制终端APP只需要使用亚马逊物联网平台就可以控制一台设备。然而,随着家庭拥有的物联网设备越来越多,控制终端APP需要同时控制多台设备。另外,有些终端设备需要多人控制。比如家具风格的智能插件,所有家庭成员都可以开启或关闭,就存在一个控制终端APP可以控制多台设备,或者多个用户可以互相控制多台设备的问题。
对这两种场景,本文分别介绍如何结合 Amazon STS 服务,以临时安全凭证的方式在多设备和多用户的场景下精细化地向控制端 APP 分发和管理控制权限。
方案使用场景
场景一:单个控制端 APP 管理多个设备
当用户需要用单个控制终端管理多个设备时,用户可以通过控制终端APP实时查看所有设备的状态信息。而且当用户通过控制端APP添加/删除设备时,控制端APP可以及时获得最新的控制权。
在 Amazon IoT 场景下,考虑到设备与服务端的交互的高可用性,以及对时间和资源调度的不可预知性,利用 Amazon API Gateway 和 Amazon Lambda 组合的无服务器架构方式可以更好的满足实际使用需求。这是因为 Amazon API Gateway 和 Amazon Lambda 按照请求数量和持续时间进行计费,无需管理服务器,并获得持续扩展的能力。
另外,Amazon IoT 场景下大部分的管理关系属于键值存储,因此推荐使用 Amazon Dynamodb(一个托管的分布式 NoSQL 数据库)作为保存管理关系的数据库。
因此,我们可以利用下图的架构来实现这一需求:
控制端 APP 通过调用部署在 Amazon API Gateway 的更新管理权限 API 接口,修改保存在数据库中的管理关系。
当控制端 APP 需要控制 Amazon IoT 设备时,控制端 APP 调用部署在 Amazon API Gateway 的获取临时凭证的API接口。
在 Amazon Dynamodb 数据库中查询当前控制端 APP 所拥有或能够控制的设备集。
获取设备集后,通过调用 Amazon STS 服务的 AssumeRole API 申请临时凭证。在调用 AssumeRole API 时,根据设备集构造 AssumeRole API 的 Policy 参数,从而进一步收紧临时凭证的权限,使控制端 APP 只能控制有限的设备集。
当控制端 APP 获取临时凭证后,就能够用 MQTT over Websocket,通过对 Amazon IoT Core 发布和订阅的方式对 Amazon IoT 设备进行控制。
由于 Amazon STS 签发的临时凭证具有有效期,为了防止临时凭证过期影响控制端 APP 对 Amazon IoT API 的调用,在控制端 APP 开发时需要维护临时凭证的刷新机制。另外,由于临时凭证的权限是在其签发时决定的,因此对设备进行新增、修改、删除等变更操作后,应主动刷新临时凭证,以获取最新的权限。
场景二:多个控制端 APP 交互管理多个设备
现有的 Amazon IoT 设备包含更多交互特性。设备的购买者/拥有者始终保持对设备的完全控制,但可以把设备的全部/部分控制权限分享给其他人,或对权限进行撤回。
多控制终端交互管理多台设备的架构原理与单控制终端类似。不同的是,在一个控制终端的场景下,控制终端可以通过自己定义的逻辑主动刷新临时凭证,而在多个控制终端的场景下,需要在控制终端之间构建消息通信机制,通知另一个控制终端进行刷新。我们可以使用以下架构来实现这一要求:
当控制终端APP获取临时凭证时,通过MQTT over Websocket订阅自己的消息通知主题,例如控制终端1订阅主题/phone/111,控制终端2订阅主题/phone/222。当控制终端1通过用于访问更新的管理权限的API接口将设备的控制权限共享给控制终端2时,在数据库更新之后,它主动向受影响的控制终端2订阅的主题/电话/222发送消息。这样,受影响的控制终端可以得到许可改变的通知,并主动刷新其临时凭证。
需要注意的是,为了达到实时通知的效果,控制终端APP需要与亚马逊物联网平台建立长连接。连接时间是亚马逊物联网的收费维度之一,因此该方案可能会增加额外费用,具体如下:
如果控制端APP也需要实时获取设备的状态信息,消息通知机制不会增加控制端APP的连接成本,只是通过共享长连接来增加对某个话题的订阅。
如果控制端为了实现实时消息通知机制,不需要获取设备的实时状态,只建立长连接,可能需要考虑在控制端APP建立长连接带来的额外成本增加。根据亚马逊云技术官网的定价,以美国东部地区(北弗吉尼亚)为例,一个控制终端一年内全天候(365*24*60分钟)建立长连接的成本约为0.042美元。
摘要
在物联网多人权限管理的场景下,我们使用亚马逊STS服务分发临时凭证,满足权限的细粒度控制。保存与Amazon DynamoDB的管理关系,满足权限修改的灵活性。而且Amazon DynamoDB和Amazon STS都是可扩展的托管服务,可以满足IOT设备的高并发需求。可以看出,亚马逊云技术服务是模块化的,客户可以根据自己的需求,量身定制合适的架构作为积木,满足创新的业务场景和想象力。
本文章来源于互联网,如有侵权,请联系删除!
1.物联网设备如何接入网络? 只有当设备连接到网络时,它才能被视为物联网设备。这里涉及到两个关键点:接入方式和网络通信方式。 * *设备访问模式:* *目前有两种访问模式。 1.直接接入:物联网终端设备具备直接接入网络的组网能力,如在设备端增加NB-IOT通信…