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

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

基本 Amazon IoT Core 策略变量

Amazon IoT Core 定义了以下基本策略变量:

  • iot:ClientId:用于连接到 Amazon IoT Core 消息代理的客户端 ID。

  • aws:SourceIp:连接到 Amazon IoT Core 消息代理的客户端的 IP 地址。

以下 Amazon IoT Core 策略显示了使用策略变量的策略。 aws:SourceIp可以在策略的条件元素中使用,以允许委托人仅在特定地址范围内发出 API 请求。有关示例,请参阅向用户和云服务授权以使用 Amazon IoT Jobs

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}" ], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } } } ] }

在这些示例中${iot:ClientId},将替换为评估策略时连接到 Amazon IoT Core 消息代理的客户端 ID。使用 ${iot:ClientId} 等策略变量时,您可能会无意中开放对意外主题的访问权限。例如,如果您使用借助 ${iot:ClientId} 来指定主题筛选条件的策略:

{ "Effect": "Allow", "Action": ["iot:Subscribe"], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic" ] }

客户端可使用 + 作为客户端 ID 来进行连接。这样,用户便可以订阅与主题筛选条件 my/+/topic 匹配的任何主题。要防范此类安全漏洞,请使用 iot:Connect 策略操作来控制哪些客户端 ID 可以连接。例如,此策略仅允许那些客户端 ID 为 clientid1 的客户端建立连接:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] } ] }
注意

不建议将策略变量 ${iot:ClientId}Connect 一起使用。不检查 ClientId 的值,因此,具有不同客户端 ID 的附加程序可以通过验证,但会导致连接断开。由于允许任何 ClientId,因此设置随机客户端 ID 可以绕过事物组策略。