Amazon IoT SiteWise 如何与 IAM 协同工作 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon IoT SiteWise 如何与 IAM 协同工作

在使用 Amazon Identity and Access Management (IAM) 管理对 Amazon IoT SiteWise 的访问权限之前,您应该了解哪些 IAM 功能可用于 Amazon IoT SiteWise。

要大致了解 Amazon IoT SiteWise 和其他 Amazon 服务如何与 IAM 一起使用,请参阅 IAM 用户指南中的与 IAM 一起使用的 Amazon 服务

Amazon IoT SiteWise 基于身份的策略

使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作和资源,以及指定在什么条件下允许或拒绝操作。Amazon IoT SiteWise 支持特定操作、资源和条件键。要了解您在 JSON 策略中使用的所有元素,请参阅 IAM 用户指南中的 IAM JSON 策略元素参考

操作

管理员可以使用 Amazon JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体 可以对什么资源 执行操作,以及在什么 条件 下执行。

JSON 策略的 Action 元素描述可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 Amazon API 操作同名。有一些例外情况,例如没有匹配 API 操作的仅限权限 操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为相关操作

在策略中包含操作以授予执行相关操作的权限。

Amazon IoT SiteWise 中的策略操作在操作前使用以下前缀:iotsitewise:。例如,要授予某人使用 BatchPutAssetPropertyValue API 操作将资产属性数据上传到 Amazon IoT SiteWise 的权限,您可以在其策略中包含 iotsitewise:BatchPutAssetPropertyValue 操作。策略语句必须包括 ActionNotAction 元素。Amazon IoT SiteWise 定义了自己的一组操作,这些操作描述了可使用该服务执行的任务。

要在单个语句中指定多项 操作,请使用逗号将它们隔开,如下所示。

"Action": [ "iotsitewise:action1", "iotsitewise:action2" ]

您也可以使用通配符(*)指定多个操作。例如,要指定以单词 Describe 开头的所有操作,请包括以下操作。

"Action": "iotsitewise:Describe*"

要查看 Amazon IoT SiteWise 操作列表,请参阅 IAM 用户指南中的 Amazon IoT SiteWise 定义的操作

BatchPutAssetPropertyValue 授权

Amazon IoT SiteWise 授权通过不寻常的方式访问 BatchPutAssetPropertyValue 操作。对于大多数操作而言,当您允许或拒绝对某个操作的访问时,如果未授予权限,则该操作将返回错误。在使用 BatchPutAssetPropertyValue 时,可以在单个 API 请求中将多个数据条目发送到不同的资产和资产属性,并且 Amazon IoT SiteWise 会单独向每个数据条目授权。对于无法在请求中授权的任一条目,Amazon IoT SiteWise 会在返回的错误列表中包含一个 AccessDeniedException。Amazon IoT SiteWise 接收授权且成功的任何条目的数据,即使同一请求中的其他条目失败也是如此。

重要

在将数据提取到数据流之前,请执行以下操作。

  • time-series如果您使用属性别名来标识数据流,则必须对资源进行授权。

  • asset如果您使用资产 ID 来识别包含关联资产属性的资产,则必须对资源进行授权。

资源

管理员可以使用 Amazon JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体 可以对什么资源 执行操作,以及在什么条件 下执行。

Resource JSON 策略元素指定要向其应用操作的一个或多个对象。语句必须包含 ResourceNotResource 元素。作为最佳实践,请使用其 Amazon 资源名称(ARN)指定资源。对于支持特定资源类型(称为资源级权限)的操作,您可以执行此操作。

对于不支持资源级权限的操作(如列出操作),请使用通配符(*)指示语句应用于所有资源。

"Resource": "*"

每个 IAM policy 语句适用于您使用资源的 ARN 指定的资源。ARN 具有以下一般语法。

arn:${Partition}:${Service}:${Region}:${Account}:${ResourceType}/${ResourcePath}

有关 ARN 格式的更多信息,请参阅 Amazon Resource Name (ARN) 和 Amazon 服务命名空间

例如,要在语句中指定 ID 为 a1b2c3d4-5678-90ab-cdef-22222EXAMPLE 的资产,请使用以下 ARN。

"Resource": "arn:aws:iotsitewise:region:123456789012:asset/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE"

要指定属于特定账户的所有数据流,请使用通配符 (*):

"Resource": "arn:aws:iotsitewise:region:123456789012:time-series/*"

要指定属于特定账户的所有资产,请使用通配符 (*):

"Resource": "arn:aws:iotsitewise:region:123456789012:asset/*"

某些 Amazon IoT SiteWise 操作(例如用于创建资源的那些操作)不能在特定资源上执行。在这些情况下,您必须使用通配符 (*)。

"Resource": "*"

要在单个语句中指定多个资源,请使用逗号分隔 ARN。

"Resource": [ "resource1", "resource2" ]

要查看 Amazon IoT SiteWise 资源类型及其 ARN 的列表,请参阅 IAM 用户指南中的 Amazon IoT SiteWise 定义的资源。要了解您可以在哪些操作中指定每个资源的 ARN,请参阅 Amazon IoT SiteWise 定义的操作

条件键

管理员可以使用 Amazon JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Condition 元素(或 Condition )中,可以指定语句生效的条件。Condition 元素是可选的。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。

如果您在一个语句中指定多个 Condition 元素,或在单个 Condition 元素中指定多个键,则 Amazon 使用逻辑 AND 运算评估它们。如果您为单个条件键指定多个值,则 Amazon 使用逻辑 OR 运算来评估条件。在授予语句的权限之前必须满足所有的条件。

在指定条件时,您也可以使用占位符变量。例如,只有在使用 IAM 用户名标记 IAM 用户时,您才能为其授予访问资源的权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM policy 元素:变量和标签

Amazon支持全局条件键和特定于服务的条件键。要查看所有 Amazon 全局条件键,请参阅《IAM 用户指南》中的 Amazon 全局条件上下文键

重要

许多条件键是特定于某个资源的,而某些 API 操作会使用多个资源。如果您使用条件键编写策略语句,请使用该语句的 Resource 元素指定要将该条件键应用于的资源。如果您没有这样做,该策略可能会完全阻止用户执行操作,因为针对未应用条件键的资源的条件检查失败。如果您不想指定资源,或者如果您已将策略的 Action 元素编写为包含多个 API 操作,则必须使用 ...IfExists 条件类型以确保对不使用条件键的资源忽略条件键。有关更多信息,请参阅...IfExists 条件IAM 用户指南

Amazon IoT SiteWise 定义了自己的一组条件键,还支持使用一些全局条件键。要查看所有 Amazon 全局条件键,请参阅《IAM 用户指南》中的 Amazon 全局条件上下文键

Amazon IoT SiteWise 条件键
条件键 描述 类型
iotsitewise:isAssociatedWithAssetProperty

数据流是否与资产属性相关联。使用此条件键根据数据流的关联资产属性的存在来定义权限。

示例值: true

字符串
iotsitewise:assetHierarchyPath

资产的层次结构路径,它是一个资产 ID 字符串,其中每个 ID 由一个正斜杠分隔开。使用此条件键可根据您账户中所有资产的层次结构子集来定义权限。

示例值: /a1b2c3d4-5678-90ab-cdef-22222EXAMPLE/a1b2c3d4-5678-90ab-cdef-66666EXAMPLE

字符串
iotsitewise:propertyId

资产属性的 ID。使用此条件键可根据指定的资产模型属性来定义权限。此条件键适用于该模型的所有资产。

示例值: a1b2c3d4-5678-90ab-cdef-33333EXAMPLE

字符串
iotsitewise:childAssetId

作为子级关联到其他资产的资产 ID。使用此条件键可根据子资产来定义权限。要根据父资产定义权限,请使用策略语句的资源部分。

示例值: a1b2c3d4-5678-90ab-cdef-66666EXAMPLE

字符串
iotsitewise:iam

列出访问策略时 IAM 身份的 ARN。使用此条件密钥定义 IAM 身份的访问策略权限。

示例值: arn:aws:iam::123456789012:user/JohnDoe

字符串,Null
iotsitewise:propertyAlias

标识资产属性或数据流的别名。使用此条件键根据别名定义权限。

字符串
iotsitewise:user

列出访问策略时 IAM 身份中心用户的 ID。使用此条件密钥为 IAM Identity Center 用户定义访问策略权限。

示例值: a1b2c3d4e5-a1b2c3d4-5678-90ab-cdef-aaaaaEXAMPLE

字符串,Null
iotsitewise:group

列出访问策略时 IAM 身份中心群组的 ID。使用此条件密钥定义 IAM Identity Center 群组的访问策略权限。

示例值: a1b2c3d4e5-a1b2c3d4-5678-90ab-cdef-bbbbbEXAMPLE

字符串,Null
iotsitewise:portal

访问策略中的门户 ID。使用此条件键可根据门户来定义访问策略权限。

示例值: a1b2c3d4-5678-90ab-cdef-77777EXAMPLE

字符串,Null
iotsitewise:project

访问策略中的项目 ID 或控制面板的项目 ID。使用此条件键可根据项目来定义控制面板或访问策略权限。

示例值: a1b2c3d4-5678-90ab-cdef-88888EXAMPLE

字符串,Null

要了解您可以对哪些操作和资源使用条件键,请参阅 Amazon IoT SiteWise 定义的操作

示例

要查看 Amazon IoT SiteWise 基于身份的策略的示例,请参阅 Amazon IoT SiteWise 基于身份的策略示例

Amazon IoT SiteWise 基于资源的策略

Amazon IoT SiteWise 不支持基于资源的策略

访问控制列表 (ACL)

Amazon IoT SiteWise 不支持 ACL

基于 Amazon IoT SiteWise 标签的授权

您可以将标签附加到 Amazon IoT SiteWise 资源或将请求中的标签传递到 Amazon IoT SiteWise。要基于标签控制访问,您需要使用 aws:ResourceTag/key-nameaws:RequestTag/key-nameaws:TagKeys 条件键在策略的条件元素中提供标签信息。有关标记 Amazon IoT SiteWise 资源的更多信息,请参阅给您的 Amazon IoT SiteWise 资源加标签

要查看基于身份的策略(用于根据资源上的标签来限制对该资源的访问)的示例,请参阅根据标签查看 Amazon IoT SiteWise 资产

Amazon IoT SiteWise IAM 角色

IAM 角色是 Amazon Web Services 账户中具有特定权限的实体。

将临时凭证用于 Amazon IoT SiteWise

您可以使用临时凭证进行联合身份登录,担任 IAM 角色或担任跨账户角色。您可以通过调用来获取临时安全证书Amazon STSAPI 操作,例如AssumeRole要么GetFederationToken

Amazon IoT SiteWise 支持使用临时凭证。

SiteWise Monitor 支持联合用户访问门户。门户用户使用他们的IAM 证书。

重要

用户或角色必须具有iotsitewise:DescribePortal登录门户的权限。

当用户登录门户时, SiteWise Monitor 会生成一个提供以下权限的会话策略:

  • 对您的账户在 Amazon IoT SiteWise 中拥有的资产和资产数据(该门户的角色提供了对这些资产和资产数据的访问权限)的只读访问权限。

  • 对该门户中的项目(用户对这些项目具有管理员(项目拥有者)或只读(项目查看者)访问权限)的访问权限。

有关联合身份门户用户权限的更多信息,请参阅为 Amazon IoT SiteWise Monitor 使用服务角色

服务相关角色

服务相关角色允许 Amazon 服务访问其它服务中的资源以代表您完成操作。服务相关角色显示在您的 Amazon Web Services 账户 中,并由该服务拥有。IAM 管理员可以查看但不能编辑服务相关角色的权限。

Amazon IoT SiteWise 支持服务相关角色。有关创建或管理 Amazon IoT SiteWise 服务相关角色的详细信息,请参阅 将服务相关角色用于 Amazon IoT SiteWise

服务角色

此功能允许服务代表您担任服务角色。此角色允许服务访问其它服务中的资源以代表您完成操作。服务角色显示在您的Amazon Web Services 账户并归该账户所有。这意味着,IAM 管理员可以更改该角色的权限。但是,这样做可能会中断服务的功能。

Amazon IoT SiteWise使用服务角色允许 SiteWise 监控门户用户以访问您的部分内容Amazon IoT SiteWise代表您提供的资源。有关更多信息,请参阅为 Amazon IoT SiteWise Monitor 使用服务角色

您必须拥有所需的权限才能创建Amazon IoT Events中的警报型号Amazon IoT SiteWise。有关更多信息,请参阅为设置权限Amazon IoT Events警报

在 Amazon IoT SiteWise 中选择 IAM 角色

当你创建一个portal资源在Amazon IoT SiteWise,您必须选择一个角色才能允许您的联合用户 SiteWise 监控要访问的门户Amazon IoT SiteWise代表你。如果您之前创建了一个服务角色,Amazon IoT SiteWise 会为您提供一个角色列表供您选择。否则,可以在创建门户时创建具有所需权限的角色。选择一个允许访问资产和资产数据的角色非常重要。有关更多信息,请参阅为 Amazon IoT SiteWise Monitor 使用服务角色