本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
授权核心设备与 Amazon 服务交互
Amazon IoT Greengrass 核心设备使用 Amazon IoT Core 凭证提供程序来授权对 Amazon 服务的调用。 Amazon IoT Core 凭据提供程序允许设备使用其 X.509 证书作为对请求进行身份验证的唯一设备身份。 Amazon 这样就无需在 Amazon IoT Greengrass 核心设备上存储 Amazon 访问密钥 ID 和私有访问密钥。有关更多信息,请参阅《Amazon IoT Core 开发人员指南》中的授权直接调用 Amazon 服务。
在运行 Amazon IoT Greengrass Core 软件时,您可以选择配置核心设备所需的 Amazon 资源。这包括您的核心设备通过 Amazon IoT Core 凭证提供程序承担的 Amazon Identity and Access Management (IAM) 角色。使用--provision true
参数配置允许核心设备获取临时 Amazon 证书的角色和策略。此参数还配置指向该 Amazon IoT 角色的IAM角色别名。您可以指定要使用的IAM角色名称和 Amazon IoT 角色别名。如果您--provision
true
不指定其他名称参数,Greengrass 核心设备将创建并使用以下默认资源:
-
IAM角色:
GreengrassV2TokenExchangeRole
此角色具有名为的策略
GreengrassV2TokenExchangeRoleAccess
和credentials.iot.amazonaws.com
允许担任该角色的信任关系。该策略包括核心设备的最低权限。重要
此策略不包括对 S3 存储桶中文件的访问权限。您必须向该角色添加权限才能允许核心设备从 S3 存储桶中检索组件工件。有关更多信息,请参阅 允许访问组件工件的 S3 存储桶。
-
Amazon IoT 角色别名:
GreengrassV2TokenExchangeRoleAlias
此角色别名指的是IAM角色。
有关更多信息,请参阅 步骤 3 安装Amazon IoT Greengrass核心软件。
您也可以为现有核心设备设置角色别名。为此,请iotRoleAlias
配置 Greengrass nucleus 组件的配置参数。
您可以获取此IAM角色的临时 Amazon 证书,以便在您的自定义组件中执行 Amazon 操作。有关更多信息,请参阅 与Amazon服务互动。
核心设备的服务角色权限
该角色允许以下服务担任该角色:
-
credentials.iot.amazonaws.com
如果您使用 Amazon IoT Greengrass 核心软件创建此角色,它将使用以下权限策略来允许核心设备连接并向其发送日志 Amazon。策略的名称默认为以结尾的IAM角色名称Access
。例如,如果您使用默认IAM角色名称,则此策略的名称为GreengrassV2TokenExchangeRoleAccess
。
允许访问组件工件的 S3 存储桶
默认核心设备角色不允许核心设备访问 S3 存储桶。要部署在 S3 存储桶中包含构件的组件,必须添加允许核心设备下载组件工件的s3:GetObject
权限。您可以向核心设备角色添加新策略以授予此权限。
添加允许访问 Amazon S3 中的组件项目的策略
-
创建一个名为的文件
component-artifact-policy.json
,JSON并将以下内容复制到该文件中。此策略允许访问 S3 存储桶中的所有文件。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称,以允许核心设备进行访问。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
-
运行以下命令从中的策略文档创建策略
component-artifact-policy.json
。从输出中的策略元数据中复制策略 Amazon 资源名称 (ARN)。在下一步中ARN,您可以使用此策略将此策略附加到核心设备角色。
-
运行以下命令将策略附加到核心设备角色。Replace(替换)
GreengrassV2TokenExchangeRole
使用您在运行 C Amazon IoT Greengrass ore 软件时指定的角色名称。然后,将该策略ARN替换为上一步ARN中的策略。如果命令没有输出,则表示命令成功,并且您的核心设备可以访问您上传到此 S3 存储桶的项目。