AWS AWS IoT Greengrass 的设备身份验证和授权 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS AWS IoT Greengrass 的设备身份验证和授权

AWS AWS IoT Greengrass 环境中的设备使用 X.509 证书进行身份验证,并使用 AWS AWS IoT 策略进行授权。通过证书和策略,设备可以安全地相互连接 AWS IoT IoT Core 和 AWS AWS IoT Greengrass。

X.509 证书属于数字证书,它按照 X.509 公有密钥基础设施标准将公有密钥与证书所含的身份相关联。X.509 证书由一家名为证书颁发机构 (CA) 的可信实体颁发。CA 持有一个或多个名为 CA 证书的特殊证书,它使用这种证书来颁发 X.509 证书。只有证书颁发机构才有权访问 CA 证书。

AWS AWS IoT 策略定义 AWS AWS IoT 设备允许的操作集。具体来说,它们允许和拒绝对 AWS IoT IoT Core 和 AWS AWS IoT Greengrass 数据层面操作的访问,例如发布 MQTT 消息和检索设备影子。

所有设备都需要 AWS IoT IoT Core 注册表中具有一个条目,并需要附加了 AWS AWS IoT 策略的已激活 X.509 证书。

X.509 证书

设备与 AWS IoT Core 或 AWS AWS IoT Greengrass 之间的通信必须经过身份验证。此双向身份验证基于注册的 X.509 设备证书和加密密钥。

在 AWS AWS IoT Greengrass 环境中,设备将带有公有和私有密钥的证书用于以下传输层安全性 (TLS) 连接:

  • 通过 Internet 连接到 AWS AWS IoT Core 和 AWS IoT Greengrass 的 Greengrass 核心上的 AWS IoT AWS IoT 客户端组件。

AWS IoT Greengrass 核心设备将证书存储在根文件夹中。

证书颁发机构 (CA) 证书

Core 设备下载用于 AWS AWS IoT Core 和 AWS AWS IoT Greengrass 服务的身份验证的根 CA 证书。我们建议您使用 Amazon Trust Services (ATS) 根 CA 证书,如 Amazon Root CA 1。有关更多信息,请参阅AWS IoT IoT Core 开发人员指南》中的服务器身份验证CA 证书。

注意

您的根 CA 证书类型必须与您的终端节点匹配。将 ATS 根 CA 证书用于 ATS 终端节点(首选)或VeriSign 根 CA 证书用于旧终端节点。只有部分 AWS 区域支持传统终端节点。有关更多信息,请参阅使用与根 CA 证书类型匹配的服务终端节点

用于数据层面操作的 AWS IoT IoT 策略

使用 AWS IoT IoT 策略授予对 AWS IoT IoT Core 和 AWS AWS IoT Greengrass 数据层面的访问权限。AWS AWS IoT Core 数据层面为设备、用户和应用程序提供操作。这些操作包括连接到 AWS IoT IoT Core 和订阅主题的功能。AWS AWS IoT Greengrass 数据层面为 Greengrass 设备提供 操作。这些操作包括解析组件依赖项和下载公有组件构件的功能。

AWS AWS IoT 策略是类似于 IAM 策略的 JSON 文档。它包含一个或多个策略语句,用于指定以下属性:

  • Effect。访问模式,可以是 AllowDeny

  • Action。策略允许或拒绝的操作的列表。

  • Resource。允许或拒绝对其执行操作的资源的列表。

有关更多信息,请参阅AWS IoT IoT Core AWS IoT 开发人员指南》中的 AWS IoT 策略AWS IoT 策略操作

AWS AWS IoT Greengrass V2 策略操作

AWS AWS IoT Greengrass V2 定义 Greengrass 核心设备可在 AWS IoT IoT 策略中使用的以下策略操作:

greengrass:GetComponentVersionArtifact

授予权限以获取用于下载公有组件构件的预签名 URL。

当核心设备收到指定具有构件的公有组件的部署时,将检查此权限。如果核心设备已具有 构件,则不会再次下载该构件。

greengrass:ResolveComponentCandidates

授予权限以确定满足部署的组件、版本和平台要求的组件的列表。如果要求冲突或不存在满足要求的组件,则此操作将返回错误,并且设备上的部署失败。

当核心设备收到指定组件的部署时,将检查此权限。

AWS AWS IoT Greengrass V2 核心设备的最低 AWS IoT IoT 策略

以下示例策略包含为支持核心设备的基本 Greengrass 功能所需的一组最少操作。

  • 该策略列出了核心设备可将消息发布到、订阅和从中接收消息的 MQTT 主题和主题筛选条件(包括用于影子状态的主题)。要支持 AWS AWS IoT Core 和 Greengrass 组件之间的消息交换,请指定要允许的主题和主题筛选条件。有关更多信息,请参阅AWS IoT IoT Core 开发人员指南》中的“发布/订阅策略示例”。

  • 该策略授予向遥测数据的主题发布消息的权限。您可以为禁用遥测的核心设备删除此权限。有关更多信息,请参阅从 AWS IoT IoT Greengrass 核心设备中收集系统运行状况遥测数据

  • 该策略授予通过 AWS AWS IoT 角色别名代入 IAM 角色的权限。核心设备使用此角色(称为令牌交换角色)获取可用于对 AWS 请求进行身份验证的 AWS 凭证。有关更多信息,请参阅授权核心设备与 AWS 服务交互

    安装 AWS AWS IoT Greengrass 核心软件时,您创建并附加另一个仅包含此权限的 AWS IoT IoT 策略。如果您在核心设备的主要 AWS IoT IoT 策略中包含此权限,则可以分离并删除其他 AWS IoT IoT 策略。

  • 核心设备的 AWS IoT IoT 策略不支持事物策略变量iot:Connection.Thing.*)。核心设备使用相同的设备证书建立与 AWS IoT IoT Core 的多个连接,但连接中的客户端 ID 可能与核心设备事物名称不完全匹配。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*/greengrassv2/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*/jobs/*", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*/shadow/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name*/jobs/*", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name*/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:region:account-id:rolealias/token-exchange-role-alias-name" }, { "Effect": "Allow", "Action": [ "greengrass:GetComponentVersionArtifact", "greengrass:ResolveComponentCandidates" ], "Resource": "*" } ] }