新闻中心

  • 首页 i(name 使用 Amazon 验证权限管理 AWS IoT 智能家居应用的授权 安全博客

使用 Amazon 验证权限管理 AWS IoT 智能家居应用的授权 安全博客

2026-01-27 12:48:57

如何使用 Amazon Verified Permissions 来管理 AWS IoT 智能家居应用的授权

by Rajat Mathur Pronoy Chopra 和 Syed Sanoor 于 2024 年 4 月 23 日发表于 高级 (300)、AWS IoT Core、AWS Lambda、物联网、SaaS、安全、身份与合规、无伺服器、技术如何做永久链接 意见反馈 分享

主要观点

在这篇文章中,我们将介绍如何使用 Amazon Verified Permissions 来集中管理权限及细粒度的授权。这对于制造商和智能家电消费者来说非常重要,开发者可以设计符合用户需求和多租户授权策略的界面以提升用户体验,从而促进用户满意度和采用率。此外,我们还提供了一个参考架构,详细说明了如何使用 AWS IoT Core、Verified Permissions 以及其他 AWS 服务来构建一个完整的智能恒温器应用解决方案。

使用 Amazon 验证权限管理 AWS IoT 智能家居应用的授权 安全博客

重要信息

传统上,在 IoT 应用中实施基于角色的存取控制 (RBAC) 或基于属性的存取控制 (ABAC) 的授权逻辑可能会变得复杂,特别是在连接设备和用户角色数量增多的情况下。这可能会导致需要硬编码到每个应用中的访问规则不断增加,进而需求过多的计算资源来评估这些规则。使用 Verified Permissions 可以使授权逻辑外部化,使用 Cedar 政策语言 定义细粒度的权限,这样能够更灵活地管理应用中的授权。

解决方案概述

我们的解决方案由一个智能恒温器 IoT 设备和一个托管于 AWS 的网页应用组成,利用 Verified Permissions 实现对各种应用 API 的细粒度访问控制。在本案例中,AWS IoT Core 设备由 AWS Cloud9 环境模拟,并透过 AWS IoT Device SDK适用于 Python与 IoT 服务进行通信。

用户管理流程

当用户购买设备主设备拥有者时,完成以下任务:

在制造商的网页或移动应用上注册并输入唯一的序列号来注册 IoT 设备。用户详细信息与设备序列号的映射会通过注册和设备认领的自动化过程储存到数据库中。将新设备连接到现有无线网络以安全地连接到 AWS IoT Core 服务。通过邀请链接或指定的 OAuth 流程邀请其他用户如宾客、家庭成员或电力公司加入。分配角色及相关权限给其他用户。

此架构由三个逻辑组件组成:

设备操作:智能恒温器在现场与 AWS IoT Core 进行通信,控制其状态由 AWS IoT 设备影子服务 管理。网页应用:客户使用的应用接口,基于 ReactJS 的单页应用托管在 AWS Amplify 上。后端应用:使用 Amazon API Gateway、AWS Lambda 和 DynamoDB 构建。使用 Cognito 用户池来管理应用用户和身份验证,授权则由 Verified Permissions 处理,并根据不同的授权政策来决定是否允许或拒绝行为。

实现授权控制的步骤

设备连接:智能恒温器设备使用 MQTT 协定 连接到 AWS IoT Core。首次调用更新设备影子的 API 时,为 AWS IoT 的设备创建一个经典的设备影子。用户注册:用户在 Amplify 托管的智能家居应用中注册或登录,并通过 Cognito 用户池进行身份验证,与设备映射储存在 DynamoDB 表中。执行预定操作:用户登录后,根据 Verified Permissions 管理的不同角色和策略,可以执行某些操作并查看仪表板的特定部分。处理 API 请求的 Lambda 函数会查询 DynamoDB 表以提供用户上下文。

前提条件

部署此解决方案需要访问 AWS 管理控制台 及本地机器上的 AWS 命令行界面 (AWS CLI),并拥有足够的 权限 访问所需服务,包括 Amplify、Verified Permissions 和 AWS IoT Core。在此解决方案中,您将授予这些服务与不同基础服务互动的完全访问权限,但在生产环境中,我们建议遵循 AWS 身份和访问管理 (IAM) 的安全最佳实践,即限制策略范围。按照 这些指南 设置 Amplify CLI。我们建议使用最新的 NodeJS 稳定长期支持 (LTS) 版本。在发布本文时,LTS 版本为 v20111。用户可透过 Node 版本管理器 (nvm) 管理其机器上的多个 NodeJS 版本。

验证权限的基本行为表

名称主体行动资源授权决策任何人默认默认默认拒绝Johnjohndoe任何Thermostat1允许JanejanedoeGetTemperatureThermostat1允许JanejanedoeSetTemperatureThermostat1只允许当期望温度在72F到78F之间。电力公司powercompanyGetTemperatureThermostat1只允许在午后 200 至 500 之间访问电力公司powercompanySetTemperatureThermostat1只允许在下午 200 至 500 之间设定温度

建立 Verified Permissions 策略库

Verified Permissions 是一个可扩展的权限管理和细粒度授权服务,用于构建的应用程序。策略使用 Cedar 这个专门的语言来定义应用中的访问权限,并与主流的授权模型如 RBAC 和 ABAC 无缝集成。

一个策略是允许或禁止主体对某资源采取一个或多个行动的声明。策略库 是一个逻辑容器,用来储存您的 Cedar 策略、架构和主体来源。架构帮助您验证策略并根据您指定的定义来识别错误。

要创建策略库

登入 Amazon Verified Permissions 控制台,选择 创建策略库。在 配置方法 部分,选择 空政策库,然后选择 创建策略库。

注意:请记下策略库 ID,以便在部署解决方案时使用。

飞机加速安卓下载

创建应用架构

在 Verified Permissions 页上,选择 架构。

在 架构 部分,选择 创建架构。

在 编辑架构 部分,选择 JSON 模式,将以下示例架构粘贴到您的应用中,然后选择 保存更改。

json{ AwsIotAvpWebApp { entityTypes { Device { shape { attributes { primaryOwner { name User required true type Entity } } type Record } memberOfTypes [] } User {} } actions { GetTemperature { appliesTo { context { attributes { desiredTemperature { type Long } time { type Long } } type Record } resourceTypes [ Device ] principalTypes [ User ] } } SetTemperature { appliesTo { resourceTypes [ Device ] principalTypes [ User ] context { attributes { desiredTemperature { type Long } time { type Long } } type Record } } } } }}在创建 Cedar 策略时,可使用静态策略或模板链接策略来定义授权规则。

静态策略

在策略明确定义主体和资源的情况下,该策略称为 静态策略。这些策略立即适用于授权决策,因为它们已完全定义并可直接实施。

模板链接策略

不过,在某些情况下,需要对多种主体和资源应用一组授权规则。当执行的动作如 SetTemperature 和 GetTemperature 需要为特定设备授权时,使用静态策略应对每个主体和资源的唯一组合,可能会导致大量几乎相同的策略,只有主体和资源的组件不同。可以通过政策模板高效解决此冗长问题。

结论

在这篇文章中,我们学习了如何使用 Verified Permissions 为不同用户角色创建和管理细粒度的权限。透过 Verified Permissions,您可以加强您的安全体系结构,并构建符合零信任原则的智能应用,以进行实时授权决策。如需了解更多信息,我们建议查看以下资源:

开始使用 Amazon Verified Permissions使用 Amazon Verified Permissions 定义授权模型的最佳实践在 AWS Cloud9 IDE 中使用 AWS IoT

如对本文有任意反馈,请在下方的意见反馈中提交。如果对本文有任何问题,请 联络 AWS 支持。