【发布时间】:2021-09-29 07:46:46
【问题描述】:
已经使用 AWS IoT 工作了几个星期,感觉很糟糕!使用单个 iot:ClientId 连接和订阅 MQTT 主题非常容易。我喜欢这样一个事实,即您可以连接 iot:ClientId 并创建 IAM 策略来阻止用户订阅不包括他们用来连接的 iot:ClientId 的主题。
我对物联网的单一功能有安全顾虑……* 通配符的使用。黑客可以使用* 作为他们的iot:ClientId 轻松连接到物联网核心云。这将允许他们订阅任何主题,而不管iot:ClientId。我想知道是否可以创建 IAM 策略来阻止开发人员使用* 通配符代替他们的iot:ClientId。我正在寻找一种不包括在我的 IAM 策略中定义静态 iot:ClientId 的解决方案。我不确定为什么我找不到任何解决这个问题的实际示例,因为我确信有很多人讨厌物联网通配符系统。无论如何,希望有一个解决方案,其中包含iot:Connect 的压缩 IAM 策略 JSON 示例。这是我目前所拥有的:
...
- Effect: Allow
Action:
- "iot:Connect"
Resource:
- !Sub arn:aws:iot:${AWS::Region}:${AWS::AccountId}:client/${!iot:ClientId}
...
【问题讨论】:
-
黑客还需要一个有效的证书才能连接 - 这不是解决了您提出的大部分问题吗?
-
我担心如果有用户在使用我的应用,他们可能会尝试查看其他用户的主题。
-
您需要设计主题层次结构来防止这种情况并使用适当的 IoT 策略。例如使用
iot:Receive/iot:Subcribe策略将客户端限制为主题。请参阅docs.aws.amazon.com/iot/latest/developerguide/… 和docs.aws.amazon.com/iot/latest/developerguide/… 中的一些明确示例
标签: mqtt amazon-iam iot aws-iot