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

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

Greengrass 服务角色

Greengrass 服务角色是一种 Amazon Identity and Access Management (IAM) 服务角色,用于向 Amazon IoT Greengrass 授权代表您访问 Amazon 服务中的资源。此角色Amazon IoT Greengrass使验证客户端设备的身份和管理核心设备的连接信息成为可能。

注意

Amazon IoT Greengrass V1还使用此角色来执行基本任务。有关更多信息,请参阅《开发者指南》中的 Greengrass 服务角色。Amazon IoT Greengrass V1

要允许 Amazon IoT Greengrass 访问您的资源,Greengrass 服务角色必须与您的 Amazon Web Services 账户关联并指定 Amazon IoT Greengrass 作为可信实体。该角色必须包含AWSGreengrassResourceAccessRolePolicy托管策略或自定义策略,该策略定义了您所使用的Amazon IoT Greengrass功能的等效权限。 Amazon维护此策略,该策略定义了Amazon IoT Greengrass用于访问您的Amazon资源的权限集。有关更多信息,请参阅 Amazon托管策略:AWSGreengrassResourceAccessRolePolicy

你可以重复使用相同的 Greengrass 服务角色Amazon Web Services 区域,但你必须在每个使用的地方将其与你的账户关联。Amazon Web Services 区域 Amazon IoT Greengrass如果当前未配置服务角色Amazon Web Services 区域,则核心设备将无法验证客户端设备,也无法更新连接信息。

以下各节介绍如何使用或创建和管理 Greengrass 服务角色。Amazon Web Services Management Console Amazon CLI

注意

除了授权服务级别访问的服务角色外,您还可以向 Greengrass 核心设备分配令牌交换角色。令牌交换角色是一个单独的 IAM 角色,用于控制核心设备上的 Greengrass 组件和 Lambda 函数如何访问服务。Amazon有关更多信息,请参阅 授权核心设备与Amazon服务

管理 Greengrass 服务角色(控制台)

Amazon IoT 控制台可让您轻松管理 Greengrass 服务角色。例如,当您为核心设备配置客户端设备发现时,控制台会检查您Amazon Web Services 账户是否已连接到当前的 Greengrass 服务角色。Amazon Web Services 区域如果没有,则控制台可以为您创建和配置服务角色。有关更多信息,请参阅 创建 Greengrass 服务角色(控制台)

您可以使用 控制台执行以下角色管理任务:

注意

登录到控制台的用户必须有权查看、创建或更改服务角色。

查找您的 Greengrass 服务角色(控制台)

使用以下步骤查找当前中Amazon IoT Greengrass使用的服务角色Amazon Web Services 区域。

  1. 导航到 Amazon IoT 控制台

  2. 在导航窗格中,选择设置

  3. 滚动到 Greengrass 服务角色部分以查看您的服务角色及其策略。

    如果您没有看到服务角色,则控制台可以为您创建或配置一个服务角色。有关更多信息,请参阅 创建 Greengrass 服务角色

创建 Greengrass 服务角色(控制台)

控制台可以为您创建和配置默认 Greengrass 服务角色。此角色具有以下属性:

属性
名称 Greengrass_ServiceRole
可信任的实体 Amazon service: greengrass
Policy AWSGreengrassResourceAccessRolePolicy
注意

如果您使用Amazon IoT Greengrass V1设备设置脚本创建此角色,则角色名称为GreengrassServiceRole_random-string

当你为核心设备配置客户端设备发现时,控制台会检查当前的 Greengrass 服务角色是否与你的关联。Amazon Web Services 账户 Amazon Web Services 区域如果未关联,控制台会提示您允许 Amazon IoT Greengrass 代表您对 Amazon 服务进行读写操作。

如果您授予权限,控制台会检查您的 Amazon Web Services 账户 中是否存在名为 Greengrass_ServiceRole 的角色。

  • 如果该角色存在,则控制台会将该服务角色附加到当前 Amazon Web Services 区域 中的 Amazon Web Services 账户。

  • 如果该角色不存在,则控制台会创建默认 Greengrass 服务角色并将其附加到当前 Amazon Web Services 区域 中的 Amazon Web Services 账户。

注意

如果要使用自定义角色策略创建服务角色,请使用 IAM 控制台创建或修改角色。有关更多信息,请参阅 IAM 用户指南中的创建向 Amazon 服务委派权限的角色修改角色。确保该角色针对您使用的功能和资源授予和 AWSGreengrassResourceAccessRolePolicy 托管策略同等的权限。我们建议您在信任策略中加入 aws:SourceArnaws:SourceAccount 全局条件上下文键,以帮助防止出现混淆代理人安全问题。条件上下文键可限制访问权限,仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息,请参阅 防止跨服务混淆代理

如果您创建了服务角色,请返回Amazon IoT控制台并将该角色附加到您的Amazon Web Services 账户。你可以在 “设置” 页面上的 Greengrass 服务角色下执行此操作。

更改 Greengrass 服务角色(控制台)

使用以下过程选择其他 Greengrass 服务角色以附加到控制台中当前所选 Amazon Web Services 区域 中您的 Amazon Web Services 账户。

  1. 导航到 Amazon IoT 控制台

  2. 在导航窗格中,选择设置

  3. Greengrass 服务角色下,选择 更改角色

    更新 Greengrass 服务角色对话框打开,其中显示了您的 Amazon Web Services 账户 中的哪些 IAM 角色将 Amazon IoT Greengrass 定义为可信实体。

  4. 选择要附加的 Greengrass 服务角色。

  5. 选择附加角色

移除 Greengrass 服务角色(控制台)

使用以下步骤将当前的 Greengrass 服务角色与您的账户分离。Amazon Amazon Web Services 区域这将撤销 Amazon IoT Greengrass 访问当前 Amazon Web Services 区域 中 Amazon 服务的权限。

重要

移除服务角色可能会中断有效操作。

  1. 导航到 Amazon IoT 控制台

  2. 在导航窗格中,选择设置

  3. Greengrass 服务角色 下,选择 移除角色

  4. 在确认对话框中,选择 Detach (分离)

注意

如果您不再需要该角色,则可在 IAM 控制台中将其删除。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件

其他角色可能允许 Amazon IoT Greengrass 访问您的资源。要查找允许 Amazon IoT Greengrass 代表您使用权限的所有角色,请在 IAM 控制台的角色页面上的可信实体列中查找包含 Amazon 服务: greengrass 的角色。

管理 Greengrass 服务角色 (CLI)

在以下步骤中,我们假设Amazon Command Line Interface已安装并配置为使用您的Amazon Web Services 账户。有关更多信息,请参阅《Amazon Command Line Interface用户指南》Amazon CLI中的 “安装、更新Amazon CLI和卸” 和 “配置”。

您可以使用 Amazon CLI 执行以下角色管理任务:

获取 Greengrass 服务角色 (CLI)

使用以下过程了解 Greengrass 服务角色是否已与您在 Amazon Web Services 区域 中的 Amazon Web Services 账户 关联。

  • 获取服务角色。将 区域 替换为您的 Amazon Web Services 区域(例如,us-west-2)。

    aws greengrassv2 get-service-role-for-account --region region

    如果 Greengrass 服务角色已与您的账户关联,则请求将返回以下角色元数据。

    { "associatedAt": "timestamp", "roleArn": "arn:aws:iam::account-id:role/path/role-name" }

    如果请求未返回角色元数据,则您必须在中创建服务角色(如果不存在)并将其与您的账户关联Amazon Web Services 区域。

创建 Greengrass 服务角色 (CLI)

使用以下步骤创建角色,并将其与您的 Amazon Web Services 账户 关联。

使用 IAM 创建服务角色
  1. 使用允许 Amazon IoT Greengrass 代入该角色的信任策略创建角色。此示例将创建一个名为 Greengrass_ServiceRole 的角色,但您也可以使用其他名称。我们建议您在信任策略中加入 aws:SourceArnaws:SourceAccount 全局条件上下文键,以帮助防止出现混淆代理人安全问题。条件上下文键可限制访问权限,仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息,请参阅 防止跨服务混淆代理

    Linux or Unix
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }'
    Windows Command Prompt (CMD)
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"greengrass.amazonaws.com\"},\"Action\":\"sts:AssumeRole\",\"Condition\":{\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:greengrass:region:account-id:*\"},\"StringEquals\":{\"aws:SourceAccount\":\"account-id\"}}}]}"
    PowerShell
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }'
  2. 从输出中的角色元数据复制角色 ARN。使用该 ARN 将角色与您的账户关联。

  3. AWSGreengrassResourceAccessRolePolicy 策略附加到该角色。

    aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
将服务角色与您的 Amazon Web Services 账户 关联
  • 将角色与您的账户关联。将 role-arn 替换为服务角色 ARN,并将区域替换为您的 Amazon Web Services 区域(例如,us-west-2)。

    aws greengrassv2 associate-service-role-to-account --role-arn role-arn --region region

    如果成功,请求将返回以下响应。

    { "associatedAt": "timestamp" }

删除 Greengrass 服务角色 (CLI)

使用以下步骤解除 Greengrass 服务角色与您的 Amazon Web Services 账户 的关联。

  • 取消服务角色与您的账户的关联。将 区域 替换为您的 Amazon Web Services 区域(例如,us-west-2)。

    aws greengrassv2 disassociate-service-role-from-account --region region

    如果成功,将返回以下响应。

    { "disassociatedAt": "timestamp" }
    注意

    如果您未在任何 Amazon Web Services 区域 中使用该服务角色,则应将其删除。先使用 delete-role-policy 从角色中移除 AWSGreengrassResourceAccessRolePolicy 托管策略,然后使用 delete-role 删除角色。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件

另请参阅