本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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) 连接使用带有公钥和私钥的证书:
-
Greengrass 核心设备上用于连接Amazon IoT Core和Amazon IoT Greengrass通过互联网连接的Amazon IoT客户端组件。
-
通过互联网连接以Amazon IoT Greengrass发现核心设备的客户端设备。
-
Greengrass 核心上的 MQTT 代理组件通过本地网络连接到组中的 Greengrass 设备。
Amazon IoT Greengrass核心设备将证书存储在 Greengrass 根文件夹中。
证书颁发机构 (CA) 证书
Greengrass 核心设备和客户端设备下载用于对Amazon IoT Core和Amazon IoT Greengrass服务进行身份验证的根 CA 证书。我们建议您使用 Amazon Trust Services (ATS) 根 CA 证书,如 Amazon Root CA 1
客户端设备还会下载 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 设备提供操作。有关更多信息,请参阅Amazon IoT Greengrass V2 策略操作:这些操作包括解析组件依赖关系和下载公共组件构件的功能。
Amazon IoT策略是类似于 IAM 策略的 JSON 文档。它包含一个或多个策略语句,用于指定以下属性:
-
Effect
。 访问模式,可以是Allow
或Deny
。 -
Action
。 策略允许或拒绝的操作的列表。 -
Resource
。 允许或拒绝操作目标的资源列表。
Amazon IoT策略支持*
作为通配符,并将 MQTT 通配符(+
和#
)视为文字字符串。有关*
通配符的更多信息,请参阅《用户指南》中的在资源 ARN 中使用通配符。Amazon Identity and Access Management
有关更多信息,请参阅《Amazon IoT Core开发者指南》中的Amazon IoT政策和Amazon IoT政策操作。
重要
核心设备或 Greengrass 数据平面操作的Amazon IoT策略不支持@@ 事物策略变量 (iot:Connection.Thing.
)。相反,您可以使用通配符来匹配多个名称相似的设备。例如,您可以指定*
MyGreengrassDevice*
匹配MyGreengrassDevice1
MyGreengrassDevice2
、等等。
注意
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
-
授予权限以获取公有Lambda 件。
当核心设备收到指定公共组件的部署或包含构件的 Lambda 时,将评估此权限。如果核心设备已经有该构件,则不会再次下载该构件。
资源类型:
componentVersion
资源 ARN 格式:
arn:aws:greengrass:
region
:account-id
:components:component-name
:versions:component-version
greengrass:ResolveComponentCandidates
-
授予权限以确定符合部署组件、版本和平台要求的组件。如果需求冲突或不存在符合要求的组件,则此操作会返回错误,并且在设备上部署会失败。
当核心设备收到指定组件的部署时,将评估此权限。
资源类型:无
资源 ARN 格式:
*
greengrass:GetDeploymentConfiguration
-
授予权限以获取大型部署文档。
当核心设备收到的部署指定的部署文档大于 7 KB(如果部署以事物为目标)或 31 KB(如果部署以事物组为目标)时,将评估此权限。部署文档包括组件配置、部署策略和部署元数据。有关更多信息,请参阅将Amazon IoT Greengrass组件部署到设备:
此功能适用于 v2.3.0 及更高版本的 Greengras s nucleus 组件。
资源类型:无
资源 ARN 格式:
*
greengrass:ListThingGroupsForCoreDevice
-
授予权限以获取核心设备的事物组层次结构。
当核心设备收到来自的部署时,将检查此权限Amazon IoT Greengrass。核心设备使用此操作来确定自上次部署以来是否已将其从事物组中删除。如果核心设备已从事物组中删除,并且该事物组是核心设备部署的目标,则核心设备将删除该部署所安装的组件。
v2.5.0 及更高版本的 Greengras s 核组件使用此功能。
资源类型:
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证书关联。
当核心设备运行客户端设备身份验证组件并授权客户端设备通过 MQT T 进行连接时,将评估此权限。有关更多信息,请参阅与本地 IoT 设备互动:
注意
要使核心设备使用此操作,Greengrass 服务角色必须与您关联Amazon Web Services 账户并允许该
iot:DescribeCertificate
权限。资源类型:
thing
(客户端设备)资源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/client-device-thing-name
-
授予上传证书颁发机构 (CA) 证书的权限,客户端设备可以下载这些证书来验证核心设备。
当核心设备安装和运行客户端设备身份验证组件时,会评估此权限。此组件创建本地证书颁发机构并使用此操作上传其 CA 证书。客户端设备在使用 Discover 操作查找可以连接的核心设备时会下载这些 CA 证书。当客户端设备连接到核心设备上的 MQTT 代理时,它们使用这些 CA 证书来验证核心设备的身份。有关更多信息,请参阅与本地 IoT 设备互动:
资源类型:无
ARN 格式:
*
greengrass:GetConnectivityInfo
-
授予权限以获取核心设备的连接信息。此信息描述了客户端设备如何连接到核心设备。
当核心设备安装和运行客户端设备身份验证组件时,会评估此权限。此组件使用连接信息生成有效的 CA 证书,通过PutCertificateAuthories操作将其上传到Amazon IoT Greengrass云服务。客户端设备使用这些 CA 证书来验证核心设备的身份。有关更多信息,请参阅与本地 IoT 设备互动:
您还可以在Amazon IoT Greengrass控制平面上使用此操作来查看核心设备的连接信息。有关更多信息,请参阅《Amazon IoT Greengrass V1 API 参考》中的 GetConnectivityInfo。
资源类型:
thing
(核心设备)资源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/core-device-thing-name
greengrass:UpdateConnectivityInfo
-
授予权限以更新核心设备的连接信息。此信息描述了客户端设备如何连接到核心设备。
当核心设备运行 IP 检测器组件时,将评估此权限。此组件识别客户端设备连接到本地网络上的核心设备所需的信息。然后,此组件使用此操作将连接信息上传到Amazon IoT Greengrass云服务,这样客户端设备就可以通过 Discover 操作检索这些信息。有关更多信息,请参阅与本地 IoT 设备互动:
您还可以在Amazon IoT Greengrass控制平面上使用此操作来手动更新核心设备的连接信息。有关更多信息,请参阅《Amazon IoT Greengrass V1 API 参考》中的 UpdateConnectivityInfo。
资源类型:
thing
(核心设备)资源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/core-device-thing-name
客户端设备操作
greengrass:Discover
-
授予发现客户端设备可以连接的核心设备的连接信息的权限。此信息描述了客户端设备如何连接到核心设备。客户端设备只能通过BatchAssociateClientDeviceWithCoreDevice操作发现您与之关联的核心设备。有关更多信息,请参阅与本地 IoT 设备互动:
资源类型:
thing
(客户端设备)资源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/client-device-thing-name
更新核心设备的Amazon IoT政策
您可以使用Amazon IoT Greengrass和Amazon IoT控制台或 Amazon IoT API 来查看和更新核心设备的Amazon IoT策略。
注意
如果您使用 Amazon IoT GreengrassCore 软件安装程序配置资源,则您的核心设备具有允许访问所有Amazon IoT Greengrass操作的Amazon IoT策略(greengrass:*
)。您可以按照以下步骤将访问权限限制为仅限核心设备使用的操作。
-
在Amazon IoT Greengrass控制台
导航菜单中,选择核心设备。 -
在核心设备页面上,选择要更新的核心设备。
-
在核心设备详细信息页面上,选择指向核心设备事物的链接。此链接在Amazon IoT控制台中打开事物详细信息页面。
-
在事物详细信息页面上,选择证书。
-
在 “证书” 选项卡中,选择事物的活动证书。
-
在证书详细信息页面上,选择策略。
-
在政策选项卡中,选择要查看和更新的Amazon IoT政策。您可以向附加到核心设备活动证书的任何策略添加所需的权限。
注意
如果您使用 Amazon IoT GreengrassCore 软件安装程序来预置资源,则有两个Amazon IoT策略。建议您选择名为GreengrassV2IoTThingPolicy的策略(如果存在)。默认情况下,使用快速安装程序创建的核心设备使用此策略名称。如果您向此策略添加权限,则也将这些权限授予使用此策略的其他核心设备。
-
在策略概述中,选择编辑活动版本。
-
查看政策并根据需要添加、删除或编辑权限。
-
要将新的策略版本设置为活动版本,请在 “策略版本状态” 下选择 “将编辑后的版本设置为此策略的活动版本”。
-
选择 “另存为新版本”。
-
列出核心设备的主体Amazon IoT。事物主体可以是 X.509 设备证书或其他标识。运行以下命令,并
MyGreengrassCore
替换为核心设备的名称。aws iot list-thing-principals --thing-name
MyGreengrassCore
该操作返回的响应列出了核心设备的事物主体。
{ "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/
certificateId
" ] } -
识别核心设备的活动证书。运行以下命令,将 certificcertific
ate
Id 替换为上一步中每个证书的 ID,直到找到活动证书。证书 ID 是证书 ARN 末尾的十六进制字符串。该--query
参数指定仅输出证书的状态。aws iot describe-certificate --certificate-id
certificateId
--query 'certificateDescription.status'该操作以字符串形式返回证书状态。例如,如果证书处于活动状态,则此操作会输出
"ACTIVE"
。 -
列出附加到证书的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" } ] }
-
选择要查看和更新的政策。
注意
如果您使用 Amazon IoT GreengrassCore 软件安装程序来预置资源,则有两个Amazon IoT策略。建议您选择名为GreengrassV2IoTThingPolicy的策略(如果存在)。默认情况下,使用快速安装程序创建的核心设备使用此策略名称。如果您向此策略添加权限,则也将这些权限授予使用此策略的其他核心设备。
-
获取策略文件。运行以下命令,将
Greengrassv2IoT ThingPolicy
替换为策略名称。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" }
-
使用在线转换器或其他工具将策略文档字符串转换为 JSON 对象,然后将其保存到名为的文件中
iot-policy.json
。例如,如果您安装了 jq
工具,则可以运行以下命令来获取策略文档,将其转换为 JSON 对象,然后将策略文档另存为 JSON 对象。 aws iot get-policy --policy-name
GreengrassV2IoTThingPolicy
--query 'policyDocument' | jq fromjson >> iot-policy.json -
查看策略文档,并根据需要添加、删除或编辑权限。
例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 打开文件。
nano iot-policy.json
完成后,策略文档可能与核心设备的最低Amazon IoT政策相似。
-
将更改另存为策略版本。运行以下命令,将
Greengrassv2IoT ThingPolicy
替换为策略名称。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 Greengrass V2核心设备的最低Amazon IoT政策
重要
更高版本的 Greengrass nucleus 组件需要对最低Amazon IoT策略的额外权限。您可能需要更新核心设备的Amazon IoT策略以授予额外权限。
-
当你从事物组中删除核心设备时,运行 Greengrass nucleus v2.5.0 及更高版本的核心设备使用
greengrass:ListThingGroupsForCoreDevice
权限卸载组件。 -
运行 Greengrass nucleus v2.3.0 及更高版本的核心设备使用该
greengrass:GetDeploymentConfiguration
权限来支持大型部署配置文档。
以下示例策略包含为支持核心设备的基本 Greengrass 功能所需的一组最少操作。
-
该
Connect
策略在核心设备事物名称后面包含*
通配符(例如,
)。核心设备使用相同的设备证书进行多个并发订阅Amazon IoT Core,但连接中的客户端 ID 可能与核心设备事物名称不完全匹配。在前 50 个订阅后,核心设备将用core-device-thing-name
*
作客户端 ID,每core-device-thing-name
#number
增加 50 个订阅,就会递增。例如,当名为 150 的核心设备number
MyCoreDevice
创建 150 个并发订阅时,它使用以下客户端 ID:-
订阅 1 到 50:
MyCoreDevice
-
订阅 51 到 100:
MyCoreDevice#2
-
订阅 101 到 150:
MyCoreDevice#3
通配符允许核心设备在使用这些带有后缀的客户端 ID 时进行连接。
-
-
该策略列出了核心设备可将消息发布到、订阅和从中接收消息的 MQTT 主题和主题筛选条件(包括用于影子状态的主题)。要支持 Greengrass 组件和客户端设备之间的Amazon IoT Core消息交换,请指定要允许的主题和主题过滤器。有关更多信息,请参阅《开发者指南》中的发布/订阅政策示例。Amazon IoT Core
-
该政策授予发布遥测数据的以下主题的权限。
$aws/things/
core-device-thing-name
/greengrass/health/json您可以删除禁用遥测的核心设备的此权限。有关更多信息,请参阅从Amazon IoT Greengrass核心设备收集系统运行状况遥测数据:
-
该策略授予通过角色别名担任 IAM Amazon IoT 角色的权限。核心设备使用此角色(称为令牌交换角色)来获取Amazon可用于对Amazon请求进行身份验证的证书。有关更多信息,请参阅授权核心设备与Amazon服务:
安装 Amazon IoT Greengrass Core 软件时,您将创建并附加第二个仅包含此权限的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策略中的权限。
-
该策略允许核心设备更新自己的连接信息。只有将 IP 检测器组件部署到核心设备时,才需要此权限 (
greengrass:UpdateConnectivityInfo
)。
{ "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 核心设备的连接信息的greengrass:Discover
操作。Resource
在本节中,指定客户端设备的亚马逊资源名称 (ARN),而不是Greengrass核心设备的 ARN。
-
该策略允许就所有 MQTT 主题进行通信。要遵循最佳安全实践,请将
iot:Publish
iot:Subscribe
、和iot:Receive
权限限制为客户端设备为您的用例所需的最少主题集。 -
该政策允许事物发现所有Amazon IoT事物的核心设备。要遵循最佳安全实践,请将
greengrass:Discover
权限限制为客户端设备Amazon IoT的事Amazon IoT物或与一组事物匹配的通配符。重要
核心设备或 Greengrass 数据平面操作的Amazon IoT策略不支持@@ 事物策略变量 (
iot:Connection.Thing.
)。相反,您可以使用通配符来匹配多个名称相似的设备。例如,您可以指定*
MyGreengrassDevice*
匹配MyGreengrassDevice1
MyGreengrassDevice2
、等等。 -
客户端设备的Amazon IoT策略通常不要求、或
iot:DeleteThingShadow
操作权限iot:GetThingShadow
iot:UpdateThingShadow
,因为 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/*" ] } ] }