控制对隧道的访问 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

控制对隧道的访问

安全隧道服务提供可在 IAM 权限策略中使用的以下服务特定的操作、资源和条件上下文键。

隧道访问先决条件

iot:OpenTunnel

iot:OpenTunnel 策略操作授予调用 OpenTunnel 的委托人权限。您必须在 IAM 策略语句的 Resource 元素中指定通配符隧道 ARN arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*。您可以在 IAM 策略语句的 Resource 元素中指定事物 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:thing/ <thing-name>),以管理特定 IoT 事物的 OpenTunnel 权限。

例如,以下策略语句允许您打开到名为 TestDevice 的 IoT 事物的隧道。

{ "Effect": "Allow", "Action": "iot:OpenTunnel", "Resource": [ "arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*", "arn:aws:iot:<aws-region>:<aws-account-id>:thing/TestDevice" ] }

iot:OpenTunnel 策略操作支持以下条件键:

  • iot:ThingGroupArn

  • iot:TunnelDestinationService

  • aws:RequestTag/<tag-key>

  • aws:TagKeys

如果事物属于名称以 TestGroup 开头的事物组,并且隧道上配置的目标服务是 SSH,则以下策略语句允许您打开到该事物的隧道。

{ "Effect": "Allow", "Action": "iot:OpenTunnel", "Resource": [ "arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*" ], "Condition": { "ForAnyValue:StringLike": { "iot:ThingGroupArn": [ "arn:aws:iot:<aws-region>:<aws-account-id>:thinggroup/TestGroup*" ] }, "ForAllValues:StringEquals": { "iot:TunnelDestinationService": [ "SSH" ] } } }

您还可以使用资源标签来控制打开隧道的权限。例如,如果存在值为 Admin 的标签键 Owner 并且未指定其他标签,则以下策略语句允许打开隧道。

{ "Effect": "Allow", "Action": "iot:OpenTunnel", "Resource": [ "arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*" ], "Condition": { "StringEquals": { "aws:RequestTag/Owner": "Admin" }, "ForAllValues:StringEquals": { "aws:TagKeys": "Owner" } } }

iot:DescribeTunnel

iot:DescribeTunnel 策略操作授予调用 DescribeTunnel 的委托人权限。您可以指定完全限定的隧道 ARN(例如 arn:aws:iot:<aws-region>: <aws-account-id>:tunnel/<tunnel-id>),也可以在 IAM 策略语句的 Resource 元素中使用通配符隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*)。

iot:DescribeTunnel 策略操作支持以下条件键:

  • aws:ResourceTag/<tag-key>

以下策略语句允许您在请求的隧道使用值为 Admin 的键 Owner 进行标记时调用 DescribeTunnel

{ "Effect": "Allow", "Action": "iot:DescribeTunnel", "Resource": [ "arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "Admin" } } }

iot:ListTunnels

iot:ListTunnels 策略操作授予调用 ListTunnels 的委托人权限。您必须在 IAM 策略语句的 Resource 元素中指定通配符隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*)。要管理所选 IoT 事物的 ListTunnels 权限,您还可以在 IAM 策略语句的 Resource 元素中指定事物 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:thing/<thing-name>)。

以下策略语句允许您列出名为 TestDevice 的事物的隧道。

{ "Effect": "Allow", "Action": "iot:ListTunnels", "Resource": [ "arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*", "arn:aws:iot:<aws-region>:<aws-account-id>:thing/TestDevice" ] }

iot:ListTagsForResource

iot:ListTagsForResource 策略操作授予调用 ListTagsForResource 的委托人权限。您可以指定完全限定的隧道 ARN (arn:aws:iot:<aws-region>: <aws-account-id>:tunnel/<tunnel-id>),也可以在 IAM 策略语句的 Resource 元素中使用通配符隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*)。

iot:CloseTunnel

iot:CloseTunnel 策略操作授予调用 CloseTunnel 的委托人权限。您可以指定完全限定的隧道 ARN (arn:aws:iot:<aws-region>: <aws-account-id>:tunnel/<tunnel-id>),也可以在 IAM 策略语句的 Resource 元素中使用通配符隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*)。

iot:CloseTunnel 策略操作支持以下条件键:

  • iot:Delete

  • aws:ResourceTag/<tag-key>

以下策略语句允许您在请求的 Delete 参数是 false 并且请求的隧道使用值为 QATeam 的键 Owner 进行标记时调用 CloseTunnel

{ "Effect": "Allow", "Action": "iot:CloseTunnel", "Resource": [ "arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*" ], "Condition": { "Bool": { "iot:Delete": "false" }, "StringEquals": { "aws:ResourceTag/Owner": "QATeam" } } }

iot:TagResource

iot:TagResource 策略操作授予调用 TagResource 的委托人权限。您可以指定完全限定的隧道 ARN (arn:aws:iot:<aws-region>: <aws-account-id>:tunnel/<tunnel-id>),也可以在 IAM 策略语句的 Resource 元素中使用通配符隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*)。

iot:UntagResource

iot:UntagResource 策略操作授予调用 UntagResource 的委托人权限。您可以指定完全限定的隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/<tunnel-id>),也可以在 IAM 策略语句的 Resource 元素中使用通配符隧道 ARN (arn:aws:iot:<aws-region>:<aws-account-id>:tunnel/*)。

有关 AWS IoT 安全的更多信息,请参阅适用于 AWS IoT 的 Identity and Access Management