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

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

授权核心设备与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您的核心设备通过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 角色。

有关更多信息,请参阅 步骤 3 安装Amazon IoT Greengrass核心软件

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

你可以临时购买Amazon为此 IAM 角色执行凭证Amazon自定义组件中的操作。有关更多信息,请参阅 与Amazon服务互动

核心设备的服务角色权限

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

  • credentials.iot.amazonaws.com

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

Greengrass nucleus v2.5.0 and later
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
v2.4.x
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
Earlier than v2.4.0
{ "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 存储桶中的所有文件。ReplaceDOC-例子桶以及允许核心设备访问的 S3 存储桶的名称。

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

    Linux or Unix
    aws iam create-policy \ --policy-name MyGreengrassV2ComponentArtifactPolicy \ --policy-document file://component-artifact-policy.json
    Windows Command Prompt (CMD)
    aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
    PowerShell
    aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

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

  3. 运行以下命令以将策略附加到核心设备角色。ReplaceGreenGrassv2Token交换所Role以及运行时指定的角色的名称Amazon IoT Greengrass核心软件。然后,将策略 ARN 替换为上一步中的 ARN。

    Linux or Unix
    aws iam attach-role-policy \ --role-name GreengrassV2TokenExchangeRole \ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
    Windows Command Prompt (CMD)
    aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
    PowerShell
    aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

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