创建和管理 AWS IoT TwinMaker的服务角色 - AWS IoT TwinMaker

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

创建和管理 AWS IoT TwinMaker的服务角色

AWS IoT TwinMaker 要求您使用服务角色来允许该服务代表您访问其他服务中的资源。此角色必须与建立信任关系 AWS IoT TwinMaker。创建工作区时,必须将此角色分配给该工作区。此主题包含说明如何为常见场景配置权限的策略示例。

分配信任

以下策略在您的角色和之间建立了信任关系 AWS IoT TwinMaker。将此信任关系分配给用于工作区的角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iottwinmaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Amazon S3 权限

以下策略允许角色对 Amazon S3 存储桶执行读取、删除和写入操作。工作区将资源存储在 Amazon S3 中,因此所有工作区都需要 Amazon S3 权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*" ] } ] }
注意

创建工作空间时, AWS IoT TwinMaker 会在您的 Amazon S3 存储桶中创建一个文件,表明工作空间正在使用该文件。此策略 AWS IoT TwinMaker 允许您在删除工作区时删除该文件。

AWS IoT TwinMaker 放置与您的工作区相关的其他对象。删除工作区时,您有责任删除这些对象。

为特定 Amazon S3 存储桶分配权限

在 AWS IoT TwinMaker 控制台中创建工作空间时,您可以选择为您 AWS IoT TwinMaker 创建 Amazon S3 存储桶。您可以使用以下 AWS CLI 命令查找有关此存储桶的信息。

aws iottwinmaker get-workspace --workspace-id workspace name

下面的示例显示此命令的输出格式:

{ "arn": "arn:aws:iottwinmaker:region:account Id:workspace/workspace name", "creationDateTime": "2021-11-30T11:30:00.000000-08:00", "description": "", "role": "arn:aws:iam::account Id:role/service role name", "s3Location": "arn:aws:s3:::bucket name", "updateDateTime": "2021-11-30T11:30:00.000000-08:00", "workspaceId": "workspace name" }

要更新您的策略以使其为特定 Amazon S3 存储桶分配权限,请使用值 bucket name.

以下策略允许角色对特定 Amazon S3 存储桶进行读取、删除和写入。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket name", "arn:aws:s3:::bucket name/*" ] }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::iottwinmakerbucket/DO_NOT_DELETE_WORKSPACE_*" ] } ] }

内置连接器的权限

如果您的工作空间使用内置连接器与其他 AWS 服务进行交互,则必须在此策略中包含这些服务的权限。如果使用 com.amazon.iotsitewise.connector 组件类型,则必须包括对 AWS IoT SiteWise的权限。有关组件类型的更多信息,请参阅 使用和创建组件类型

注意

如果您使用自定义组件类型与其他 AWS 服务进行交互,则必须向该角色授予运行在您的组件类型中实现该函数的 Lambda 函数的权限。有关更多信息,请参阅 对外部数据来源连接器的权限

以下示例显示了如何在您的政策 AWS IoT SiteWise 中包含内容。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket name", "arn:aws:s3:::bucket name/*" ] }, { "Effect": "Allow", "Action": [ "iotsitewise:DescribeAsset" ], "Resource": "asset ARN" }, { "Effect": "Allow", "Action": [ "iotsitewise:DescribeAssetModel" ], "Resource": "asset model ARN" }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*" ] } ] }

如果您使用 com.amazon.iotsitewise.connector 组件类型并且需要从中读取属性数据 AWS IoT SiteWise,则必须在策略中包含以下权限。

... { "Action": [ "iotsitewise:GetPropertyValueHistory", ], "Resource": [ "AWS IoT SiteWise asset resource ARN" ], "Effect": "Allow" }, ...

如果您使用 com.amazon.iotsitewise.connector 组件类型并且需要向其写入属性数据 AWS IoT SiteWise,则必须在策略中包含以下权限。

... { "Action": [ "iotsitewise:BatchPutPropertyValues", ], "Resource": [ "AWS IoT SiteWise asset resource ARN" ], "Effect": "Allow" }, ...

如果你使用 com.amazon.iotsitewise.connector.edgevideo 组件类型,则必须包括和 Kinesi s Video Streams 的权限。 AWS IoT SiteWise 以下示例策略说明如何在您的策略中包含 AWS IoT SiteWise 和 Kinesis Video Streams 权限。

... { "Action": [ "iotsitewise:DescribeAsset", "iotsitewise:GetAssetPropertyValue" ], "Resource": [ "AWS IoT SiteWise asset resource ARN for the Edge Connector for Kinesis Video Streams" ], "Effect": "Allow" }, { "Action": [ "iotsitewise:DescribeAssetModel" ], "Resource": [ "AWS IoT SiteWise model resource ARN for the Edge Connector for Kinesis Video Streams" ], "Effect": "Allow" }, { "Action": [ "kinesisvideo:DescribeStream" ], "Resource": [ "Kinesis Video Streams stream ARN" ], "Effect": "Allow" }, ...

对外部数据来源连接器的权限

如果创建的组件类型使用连接到外部数据来源的函数,则必须向服务角色授予使用实现该函数的 Lambda 函数的权限。有关创建组件类型的更多信息,请参阅 使用和创建组件类型

以下示例向服务角色授予使用 Lambda 函数的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket name", "arn:aws:s3:::bucket name/*" ] }, { "Action": [ "lambda:invokeFunction" ], "Resource": [ "Lambda function ARN" ], "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*" ] } ] }

有关使用IAM控制台、和创建角色以及为角色分配策略和信任关系的 AWS CLI更多信息 IAMAPI,请参阅创建向委派权限的角色 AWS 服务

修改您的工作空间IAM角色以使用 Athena 数据连接器

要使用 AWS IoT TwinMaker Athena 表格数据连接器,必须更新您的工作空间角色。 AWS IoT TwinMaker IAM向您的工作空间IAM角色添加以下权限:

注意

此IAM更改仅适用于存储在和 Amazon S3 中的 Athena 表格数据。 AWS Glue 要将 Athena 与其他数据源一起使用,必须为 Athena 配置IAM角色,请参阅 Athena 中的身份和访问管理。

{ "Effect": "Allow", "Action": [ "athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetTableMetadata", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "athena resouces arn" ] },// Athena permission { "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "glue resouces arn" ] },// This is an example for accessing aws glue { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "Amazon S3 data source bucket resources arn" ] }, // S3 bucket for storing the tabular data. { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject", "s3:PutBucketPublicAccessBlock" ], "Resource": [ "S3 query result bucket resources arn" ] } // Storing the query results

有关 Athen a 配置的更多信息,请阅读 Athena 中的身份和访问管理。IAM