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

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

授权核心设备与Amazon服务

Amazon IoT Greengrass核心设备使用Amazon IoT Core凭据提供程序授权调用Amazon服务。这些区域有:Amazon IoT Core凭据提供程序允许设备使用其 X.509 证书作为唯一设备标识来进行身份验证Amazon请求。这样,您就不必再存储Amazon访问密钥 ID 和私有访问密钥Amazon IoT Greengrass核心设备。有关更多信息,请参阅 。授权直接调用Amazon服务中的Amazon IoT Core开发人员指南.

当您运行Amazon IoT Greengrass核心软件,您可以选择预配置Amazon核心设备所需的资源。这包括Amazon Identity and Access Management(IAM) 角色,您的核心设备通过Amazon IoT Core凭证提供程序。使用--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 角色。

有关更多信息,请参阅安装 Amazon IoT Greengrass Core 软件

您还可以为现有核心设备设置角色别名。为此,请配置iotRoleAlias配置参数Greengrass 核组件.

您可以获得临时Amazon此 IAM 角色执行的凭证Amazon操作。有关更多信息,请参阅与交互Amazon服务

核心设备的服务角色权限

该角色允许以下服务代入该角色:

  • credentials.iot.amazonaws.com

如果您将Amazon IoT Greengrass核心软件创建此角色,它使用以下权限策略允许核心设备连接并将日志发送到Amazon. 策略的名称默认为 IAM 角色的名称,结尾为Access. 例如,如果您使用默认 IAM 角色名称,则此策略的名称为GreengrassV2TokenExchangeRoleAccess.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "s3:GetBucketLocation" ], "Resource": "*" } ] }

允许访问 S3 存储桶

默认核心设备角色不允许核心设备访问 S3 存储桶。要部署 S3 存储桶中包含工件的组件,您必须将s3:GetObject权限,以允许核心设备下载组件工件。您可以向核心设备角色添加新策略以授予此权限。

添加允许访问 Amazon S3 中的组件工件的策略

  1. 创建名为的文件component-artifact-policy.json并将以下 JSON 复制到该文件中。此策略允许访问 S3 存储桶中的所有文件。Replace文档示例存储桶替换为 S3 存储桶的名称以允许核心设备访问。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
  2. 运行以下命令以从中的策略文档创建策略。component-artifact-policy.json.

    aws iam create-policy \ --policy-name MyGreengrassV2ComponentArtifactPolicy \ --policy-document file://component-artifact-policy.json

    从输出中的策略元数据复制策略 Amazon 资源名称 (ARN)。您可以在下一步中使用此 ARN 将此策略附加到核心设备角色。

  3. 运行以下命令以将策略附加到核心设备角色。Replace绿草 V2 代码交换器替换为您运行时指定的角色名称Amazon IoT GreengrassCore 软件。然后,将策略 ARN 替换为上一步中的 ARN。

    aws iam attach-role-policy \ --role-name GreengrassV2TokenExchangeRole \ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

    如果命令没有输出,则成功,并且您的核心设备可以访问您上传到此 S3 存储桶的对象。