在此博文中,我们将模拟常见的商业场景,以向您展示如何在 AWS IoT Device Management 中使用组策略功能。具体来说,我们将描述:
如何创建分层组结构及如何将您的 IoT 设备分配到不同的组。
如何基于组策略将消息发布到不同的 IoT 设备。
场景
我们将使用西雅图一家零售店作为示例,该零售店向 IoT 设备网关发布订单请求。网关将订单消息发送给 AWS IoT Core 进行处理,而 AWS IoT Core 则将订单消息发布给旧金山的工厂。
在此情况中,我们将使用 AWS IoT Device Management 管理西雅图的 IoT 网关队列和旧金山的制造设备队列。
将给每个组分配不同的策略。
对于西雅图组,设备只能通过特定主题发布其消息。他们不能发布有关其他任何商店的信息。西雅图零售店将不会从 AWS IoT Core 接收消息。
对于旧金山组,设备只能订阅为旧金山工厂指定的消息。这表示,这些设备不能从其他工厂接收消息。
注释
开始前,请注意组是分层的。您必须仔细定义父级组和子级组。父级组创建后不能更改。您不能将某个组移动到另一个父级组中。
根据组策略继承,子级组中的设备会继承父级组的策略,因此,您必须仔细设计您的组分层结构和策略继承。通常情况下,最好的做法是父级组应具有最严格的组策略。为子级组添加更具体的权限。由于策略继承原因,如果父级组与子级组之间发生冲突(例如,如果同一个资源上同时具有 Allow 语句和 Deny 语句),则该操作将被显式拒绝。在创建组策略树时,请记住这一点。
组配置示例
登录 AWS 管理控制台并打开 AWS IoT 控制台。您将在“管理”下找到新的“组”选项。您可以使用控制台或下列 CLI 命令创建新组。在我们的场景中,我们将先创建一个父级组 – 美国,然后再创建两个子级组 – 西雅图和旧金山。您需要添加两个子级组到其父级组美国中,并验证您的组分层结构。
对于我们的场景,我们将创建两个事物:SeattleThing1 and SanFranciscoThing1.然后将每个事物添加到事物注册表中并分配到其命名组中。您需要将证书附加到新创建的事物中,以便该事物可以通过 MQTT TLS 1.2 与设备网关连接。您可以使用自己的证书或使用 AWS IoT Core CA。在此示例中,我们将使用 AWS IoT Core CA 为每个事物分配一个新证书。
在发布 AWS IoT Device Management 之前,您需要将策略附加到单个证书并单独管理策略。现在,您可以将策略附加到组中而不是各个证书中。您可以根据不同的组分配来创建策略。西雅图组只允许发布到西雅图订单状态主题,旧金山组只允许订阅到 AWS IoT Core 中的订单处理主题。您可以使用控制台或下列命令创建策略。
a. 对于美国组,我们将使用最严格的策略,该策略只允许设备连接到 AWS IoT Core,而不需要任何发布/订阅过程。
b. 对于西雅图组,我们将使用下列策略:
c. 对于旧金山组,我们将使用下列策略:
附录
当您将策略附加到某个组时,该策略将应用至该组中的所有设备。我们建议您使用 TestAuthorization API 在本地测试您的策略,这样便不会影响生产环境中的真实设备。您可以使用下列命令模拟预期结果。
下面显示命令输出。如您所见,“CONNECT”操作被允许,“PUBLISH”被拒绝。
下面显示命令输出。如您所见,“CONNECT”和“PUBLISH”都是允许的操作。
相关文章:
AWS IoT 开发人员指南中的事物组
AWS IoT 开发人员指南中的 AWS IoT 策略
AWS IoT 开发人员指南中的 AWS IoT 规则
本文转载自 AWS 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/iot-device-management-group-policy/
评论