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

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

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

Amazon IoT Greengrass 环境中的设备使用 X.509 证书进行身份验证,使用 Amazon IoT 策略进行授权。证书和策略可让设备在彼此之间以及与 Amazon IoT Core 和 Amazon IoT Greengrass 之间安全地相互连接。

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

Amazon IoT 策略定义允许 Amazon IoT 设备执行的操作集。具体而言,它们允许和拒绝访问 Amazon IoT Core 和 Amazon IoT Greengrass 数据层面操作,如发布 MQTT 消息和检索设备阴影。

所有设备都需要在 Amazon IoT Core 注册表中有条目,并且需要带附加 Amazon IoT 策略的已激活的 X.509 证书。设备分为两类:

  • Greengrass 核心设备

    Greengrass 核心设备使用证书和Amazon IoT要连接到的策略Amazon IoT Core和Amazon IoT Greengrass. 证书和策略还允许Amazon IoT Greengrass将组件和配置部署到核心设备。

  • 客户端设备

    MQTT 客户端设备使用证书和策略连接到Amazon IoT Core和Amazon IoT Greengrass服务。这使客户端设备能够使用Amazon IoT Greengrass云发现以查找并连接到 Greengrass 核心设备。客户端设备使用相同的证书连接到Amazon IoT Core云服务和核心设备。客户端设备还使用发现信息与核心设备进行双向身份验证。有关更多信息,请参阅 与本地 IoT 设备互动

X.509 证书

核心设备与客户端设备之间以及设备之间的通信和Amazon IoT Core要么Amazon IoT Greengrass必须进行身份验证。此双向身份验证基于注册的 X.509 设备证书和加密密钥。

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

  • 这些区域有:Amazon IoTGreengrass 核心设备上连接到的客户端组件Amazon IoT Core和Amazon IoT Greengrass在互联网上。

  • 连接到的客户端设备Amazon IoT Greengrass通过互联网发现核心设备。

  • 通过本地网络连接到组中的 Greengrass 设备的 Greengrass 核心上的 MQTT 经纪商组件。

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

证书颁发机构 (CA) 证书

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

客户端设备还下载 Greengrass 核心设备 CA 证书。在双向身份验证期间,他们使用此证书验证核心设备上的 MQTT 服务器证书。

当地 MQTT 经纪商上的证书轮换

当您 时启用客户端设备支持,Greengrass 核心设备会生成本地 MQTT 服务器证书,客户端设备用于相互身份验证。此证书由核心设备 CA 证书签署,核心设备将存储在Amazon IoT Greengrass云。客户端设备在发现核心设备时检索核心设备 CA 证书。连接到核心设备时,他们使用核心设备 CA 证书验证核心设备的 MQTT 服务器证书。核心设备 CA 证书将在 5 年后过期。

默认情况下,MQTT 服务器证书每 7 天过期一次,您可以将此持续时间配置为 2 到 10 天。此时间期限基于安全最佳实践。这种轮换有助于减轻攻击者窃取 MQTT 服务器证书和私钥以模拟 Greengrass 核心设备的威胁。

Greengrass 核心设备在 MQTT 服务器证书到期前 24 小时轮换。Greengrass 核心设备会生成新证书并重新启动本地 MQTT 经纪商。发生这种情况时,连接到 Greengrass 核心设备的所有客户端设备将断开连接。在很短的一段时间后,客户端设备可以重新连接到 Greengrass 核心设备。

数据层面操作的 Amazon IoT 策略

使用Amazon IoT授予访问权限的策略Amazon IoT Core和Amazon IoT Greengrass数据层面。这些区域有:Amazon IoT Core数据层面为设备、用户和应用程序提供操作。这些操作包括能够连接到Amazon IoT Core并订阅主题。这些区域有:Amazon IoT Greengrass数据平面为 Greengrass 设备提供操作。这些操作包括解决组件依赖关系和下载公共组件对象的能力。

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon IoT策略是一个类似于 JSON 文档IAM 策略. 它包含一个或多个策略语句,用于指定以下属性:

  • Effect. 访问模式,可以是Allow要么Deny.

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

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

Amazon IoT支持策略*作为通配符,并将 MQTT 通配符处理(+#) 作为字面字符串。有关的更多信息*通配符,请参阅在资源 ARN 中使用通配符中的Amazon Identity and Access Management用户指南.

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

重要

事物策略变量(iot:Connection.Thing.*在中不支持)Amazon IoT针对核心设备或 Greengrass 数据平面操作的策略。相反,您可以使用匹配具有相似名称的多个设备的通配符。例如,您可以指定MyGreengrassDevice*匹配MyGreengrassDevice1MyGreengrassDevice2等。

注意

Amazon IoT Core使你能够附加Amazon IoT策略对事物组定义设备组的权限。事物组策略不允许访问Amazon IoT Greengrass数据层面操作。允许事物访问Amazon IoT Greengrass数据平面操作,将权限添加到Amazon IoT附加到事物证书的策略。

Amazon IoT Greengrass V2 策略操作

Amazon IoT Greengrass V2定义 Greengrass 核心设备和客户端设备可以在中使用的以下策略操作:Amazon IoT政策。要为策略操作指定资源,请使用资源的 Amazon 资源名称 (ARN)。

核心设备操作

greengrass:GetComponentVersionArtifact

授予权限以获取预签名 URL 以下载公有组件或 Lambda 组件。

当核心设备收到指定公共组件或具有对象的 Lambda 的部署时,将评估此权限。如果核心设备已经有该工件,则不会再次下载工件。

资源类型:componentVersion

资源 ARN 格式:arn:aws:greengrass:region:account-id:components:component-name:versions:component-version

greengrass:ResolveComponentCandidates

授予权限以识别符合部署组件、版本和平台要求的组件列表。如果要求冲突,或者没有符合要求的组件,则此操作将返回错误,并且设备上的部署将失败。

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

资源类型:无

资源 ARN 格式:*

greengrass:GetDeploymentConfiguration

授予权限以获取预签名 URL 以下载大型部署文档。

当核心设备收到的部署指定的部署文档大于 7 KB(如果部署针对某个事物)或 31 KB(如果部署针对事物组)的部署文档时,将评估此权限。部署文档包含组件配置、部署策略和部署元数据。有关更多信息,请参阅 部署Amazon IoT Greengrass组件到设备

此功能适用于 v2.3.0 及更高版本Greengrass 核心组件.

资源类型:无

资源 ARN 格式:*

greengrass:ListThingGroupsForCoreDevice

授予权限以获取核心设备的事物组层次结构。

当核心设备接收部署时,将检查此权限。Amazon IoT Greengrass. 核心设备使用此操作来确定自上次部署以来是否已从事物组中删除。如果核心设备已从事物组中移除,并且该事物组是部署到核心设备的目标,则核心设备将删除该部署安装的组件。

v2.5.0 及更高版本使用此功能Greengrass 核心组件.

资源类型:thing(核心设备)

资源 ARN 格式:arn:aws:iot:region:account-id:thing/core-device-thing-name*

greengrass:VerifyClientDeviceIdentity

授予验证连接到核心设备的客户端设备身份的权限。

当核心设备运行客户端设备身份验证组件并从客户端设备接收 MQTT 连接。客户端设备显示了它Amazon IoT设备证书。然后,核心设备将设备证书发送到Amazon IoT Greengrass云服务来验证客户端设备的身份。有关更多信息,请参阅 与本地 IoT 设备互动

资源类型:无

资源 ARN 格式:*

greengrass:VerifyClientDeviceIoTCertificateAssociation

授予验证客户端设备是否与Amazon IoT证书。

当核心设备运行客户端设备身份验证组件并授权客户端设备通过 MQTT 进行连接。有关更多信息,请参阅 与本地 IoT 设备互动

注意

要使用此操作的核心设备,Greengrass 服务角色必须与您的Amazon Web Services 账户并允许iot:DescribeCertificate权限。

资源类型:thing(客户端设备)

资源 ARN 格式:arn:aws:iot:region:account-id:thing/client-device-thing-name

greengrass:PutCertificateAuthorities

授予上传证书颁发机构 (CA) 证书的权限,客户端设备可以下载这些证书以验证核心设备。

当核心设备安装并运行客户端设备身份验证组件. 此组件创建本地证书颁发机构并使用此操作上传其 CA 证书。客户端设备在使用时下载这些 CA 证书发现操作以找到可以连接的核心设备。当客户端设备连接到核心设备上的 MQTT 代理时,他们会使用这些 CA 证书来验证核心设备的身份。有关更多信息,请参阅 与本地 IoT 设备互动

资源类型:无

ARN 格式:*

greengrass:GetConnectivityInfo

授予权限以获取核心设备的连接信息。此信息介绍客户端设备如何连接到核心设备。

当核心设备安装并运行客户端设备身份验证组件. 此组件使用连接信息生成有效的 CA 证书以上传到Amazon IoT Greengrass使用云服务PUT 证书颁发机构operation. 客户端设备使用这些 CA 证书验证核心设备的身份。有关更多信息,请参阅 与本地 IoT 设备互动

您还可以在Amazon IoT Greengrass控制层面以查看核心设备的连接信息。有关更多信息,请参阅 。获取连接信息中的Amazon IoT Greengrass V1API 参考.

资源类型:thing(核心设备)

资源 ARN 格式:arn:aws:iot:region:account-id:thing/core-device-thing-name*

greengrass:UpdateConnectivityInfo

授予权限以更新核心设备的连接信息。此信息介绍客户端设备如何连接到核心设备。

当核心设备运行IP 探测器组件. 此组件标识客户端设备连接到本地网络上的核心设备所需的信息。然后,此组件使用此操作将连接信息上传到Amazon IoT Greengrass云服务,因此客户端设备可以使用发现operation. 有关更多信息,请参阅 与本地 IoT 设备互动

您还可以在Amazon IoT Greengrass控制层面以手动更新核心设备的连接信息。有关更多信息,请参阅 。UpdateConnectivityInfo中的Amazon IoT Greengrass V1API 参考.

资源类型:thing(核心设备)

资源 ARN 格式:arn:aws:iot:region:account-id:thing/core-device-thing-name*

客户端设备操作

greengrass:Discover

授予发现客户端设备可以连接的核心设备的连接信息的权限。此信息描述了客户端设备如何连接到核心设备。客户端设备只能通过使用批量将客户端设备与核心设备关联operation. 有关更多信息,请参阅 与本地 IoT 设备互动

资源类型:thing(客户端设备)

资源 ARN 格式:arn:aws:iot:region:account-id:thing/client-device-thing-name

更新核心设备的Amazon IoT政策

您可以使用Amazon IoT Greengrass和Amazon IoT控制台或Amazon IoT查看和更新核心设备的 APIAmazon IoT政策。

注意

如果您将Amazon IoT Greengrass核心软件安装程序来调配资源,您的核心设备具有Amazon IoT允许访问所有内容的策略Amazon IoT Greengrass操作 (greengrass:*)。您可以按照以下步骤将访问限制为仅核心设备使用的操作。

  1. Amazon IoT Greengrass控制台导航菜单,选择核心设备.

  2. 在存储库的核心设备页面中,选择要更新的核心设备。

  3. 在核心设备详细信息页面上,选择指向核心设备的链接Thing. 此链接将在Amazon IoT控制台。

  4. 在事物详细信息页中,选择证书.

  5. 证书选项卡中,选择事物的活动证书。

  6. 在证书详细信息页中,选择策略.

  7. 策略选项卡上,选择Amazon IoT要审查和更新的策略。您可以向附加到核心设备的活动证书的任何策略添加所需的权限。

    注意

    如果您将Amazon IoT Greengrass核心软件安装程序来调配资源,你有两个Amazon IoT政策。建议您选择名为的策略GreengrassV2IoTThingPolicy,如果存在的话。默认情况下,使用快速安装程序创建的核心设备使用此策略名称。如果向此策略添加权限,则还将这些权限授予使用此策略的其他核心设备。

  8. 在策略概述中,选择编辑活动版本.

  9. 查看策略并根据需要添加、删除或编辑权限。

  10. 要将新策略版本设置为活动版本,请在策略版本状态,选择将编辑后的版本设置为此策略的活动版本.

  11. 选择另存为新版本.

  1. 列出核心设备的主体Amazon IoT事物。事物主体可以是 X.509 设备证书或其他标识。运行以下命令,然后替换我的 GreenGrasscore具有核心设备的名称。

    aws iot list-thing-principals --thing-name MyGreengrassCore

    此操作将返回列出核心设备的事物主体的响应。

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. 识别核心设备的活动证书。运行以下命令,然后替换certificateId使用从上一步开始的每个证书的 ID,直到找到活动证书为止。证书 ID 是证书 ARN 末尾的十六进制字符串。这些区域有:--query参数指定仅输出证书的状态。

    aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'

    该操作将证书状态作为字符串返回。例如,如果证书处于活动状态,此操作将输出"ACTIVE".

  3. 列出Amazon IoT附加到该证书的策略。运行以下命令,然后将证书 ARN 替换为证书的 ARN。

    aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId

    此操作将返回一个列出Amazon IoT附加到该证书的策略。

    { "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
  4. 选择要查看和更新的策略。

    注意

    如果您将Amazon IoT Greengrass核心软件安装程序来调配资源,你有两个Amazon IoT政策。建议您选择名为的策略GreengrassV2IoTThingPolicy,如果存在的话。默认情况下,使用快速安装程序创建的核心设备使用此策略名称。如果向此策略添加权限,则还将这些权限授予使用此策略的其他核心设备。

  5. 获取策略的文档。运行以下命令,然后替换GreenGrassv2IOT 政策使用策略的名称。

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    此操作将返回包含策略文档以及策略的其他信息的响应。策略文档是序列化为字符串的 JSON 对象。

    { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Connect\",\n \"iot:Publish\",\n \"iot:Subscribe\",\n \"iot:Receive\",\n \"greengrass:*\"\n],\n \"Resource\": \"*\"\n }\n ]\n}", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
  6. 使用在线转换器或其他工具将策略文档字符串转换为 JSON 对象,然后将其保存到名为的文件中iot-policy.json.

    例如,如果您拥有jq安装了工具,您可以运行以下命令来获取策略文档,将其转换为 JSON 对象,然后将策略文档另存为 JSON 对象。

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. 查看策略文档,然后根据需要添加、删除或编辑权限。

    例如,在基于 Linux 的系统上,您可以运行以下命令以使用 GNU nano 打开文件。

    nano iot-policy.json

    完成后,策略文档可能如下所示最小Amazon IoT核心设备策略.

  8. 将更改另存为策略的新版本。运行以下命令,然后替换GreenGrassv2IOT 政策使用策略的名称。

    aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default

    如果成功,此操作将返回类似于以下示例的响应。

    { "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n\t\t\"iot:Connect\",\n\t\t\"iot:Publish\",\n\t\t\"iot:Subscribe\",\n\t\t\"iot:Receive\",\n\t\t\"greengrass:*\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}", "policyVersionId": "2", "isDefaultVersion": true }

最低Amazon IoT用于 的 策略Amazon IoT Greengrass V2核心设备

重要

的更新版本Greengrass 核心组件需要对最低限度的额外权限Amazon IoT政策。您可能需要更新你的核心设备 'Amazon IoT策略以授予其他权限。

  • 运行 Greengrass Nucleus v2.5.0 及更高版本的核心设备使用greengrass:ListThingGroupsForCoreDevice从事物组中删除核心设备时卸载组件的权限。

  • 运行 Greengrass 核心 v2.3.0 及更高版本的核心设备使用greengrass:GetDeploymentConfiguration支持大型部署配置文档的权限。

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

  • 此策略包括*核心设备事物名称后面的通配符(例如,core-device-thing-name*)。核心设备使用同一设备证书进行多个并发订阅Amazon IoT Core,但是连接中的客户端 ID 可能与核心设备事物名称不完全匹配。在前 50 个订阅之后,核心设备使用core-device-thing-name#number作为客户端 ID,其中number每增加 50 个订阅的增量。例如,当名为MyCoreDevice创建 150 个并发订阅,它使用以下客户端 ID:

    • 订阅 1 到 50:MyCoreDevice

    • 订阅 51 到 100:MyCoreDevice#2

    • 订阅 101 到 150:MyCoreDevice#3

    通配符允许核心设备在使用这些带有后缀的客户端 ID 时进行连接。

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

  • 该策略授予向以下主题发布遥测数据的权限。

    $aws/things/core-device-thing-name*/greengrass/health/json

    您可以删除禁用遥测的核心设备的此权限。有关更多信息,请参阅 从以下位置收集系统运行状况遥测数据Amazon IoT Greengrass核心设备

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

    当你安装Amazon IoT Greengrass核心软件,您可以创建并附加第二个Amazon IoT仅包含此权限的策略。如果您在核心设备的主设备中包含此权限Amazon IoT策略,你可以分离并删除另一个Amazon IoT政策。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "arn:aws:iot:region:account-id:client/core-device-thing-name*" }, { "Effect": "Allow", "Action": [ "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*/greengrass/health/json", "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", "greengrass:GetDeploymentConfiguration", "greengrass:ListThingGroupsForCoreDevice" ], "Resource": "*" } ] }

最低Amazon IoT支持客户端设备的策略

以下示例策略包含为支持与核心设备上的客户端设备进行交互所需的一组最少操作。要支持客户端设备,核心设备必须具有此中的权限Amazon IoT除了策略最低Amazon IoT基本操作策略.

  • 此策略允许核心设备更新自己的连接信息。此权限 (greengrass:UpdateConnectivityInfo仅当您部署时,才需要IP 探测器组件到核心设备。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*-gci/shadow/get" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name*-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name*-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name*-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "greengrass:PutCertificateAuthorities", "greengrass:VerifyClientDeviceIdentity" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "greengrass:VerifyClientDeviceIoTCertificateAssociation" ], "Resource": "arn:aws:iot:region:account-id:thing/*" }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-device-thing-name*" ] } ] }

最低Amazon IoT客户端设备的策略

以下示例策略包含为发现核心设备通过 MQTT 连接和通信的核心设备所需的一组最少操作。客户端设备的Amazon IoT策略必须包含greengrass:Discover允许设备发现其关联 Greengrass 核心设备的连接信息的操作。在Resource部分中,请指定客户端设备的 Amazon 资源名称 (ARN),而不是 Greengrass 核心设备的 ARN。

  • 该政策允许就所有 MQTT 主题进行沟通。要遵循最佳安全实践,请限制iot:Publishiot:Subscribe, 和iot:Receive访问客户端设备为您的使用案例所需的最少主题集的权限。

  • 该策略允许事物发现适用于所有人的核心设备Amazon IoT事物。要遵循最佳安全实践,请限制greengrass:Discover对客户端设备的权限Amazon IoT与一组匹配的东西或通配符Amazon IoT事物。

    重要

    事物策略变量(iot:Connection.Thing.*在中不支持)Amazon IoT针对核心设备或 Greengrass 数据平面操作的策略。相反,您可以使用匹配具有相似名称的多个设备的通配符。例如,您可以指定MyGreengrassDevice*匹配MyGreengrassDevice1MyGreengrassDevice2等。

  • 客户端设备的Amazon IoT策略通常不需要权限iot:GetThingShadowiot:UpdateThingShadow,或者iot:DeleteThingShadow操作,因为 Greengrass 核心设备处理客户端设备的影子同步操作。要使核心设备能够处理客户端设备阴影,请检查核心设备的Amazon IoT策略允许这些操作,并且Resource部分包括客户端设备的 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] } ] }