本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建和管理 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