iot:Certificate.Subject.SerialNumber 用于限制影子访问

Posted

技术标签:

【中文标题】iot:Certificate.Subject.SerialNumber 用于限制影子访问【英文标题】:iot:Certificate.Subject.SerialNumber used to restrict shadow access 【发布时间】:2019-10-05 10:51:27 【问题描述】:

我在策略中使用 $iot:Certificate.Subject.SerialNumber 来限制使用指定证书的设备的影子访问时遇到困难。

我有一个由 aws-iot 颁发的证书,其序列号为十六进制:00 FC 63 F4 3D D8 8D 92 B1 19 5E 3C 6B D4 1B 99 1E 60 7C 86 34

如果我将其转换为十进制字符串,我会得到:1440894724465102159684825527826579699971598878260

我已将此证书附加到具有以下名称的事物上: Scoot-1440894724465102159684825527826579699971598878260

我的政策是: "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:eu-central-1:XXXXXXXXXX:client/*" , "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive" ], "Resource": [ "arn:aws:iot:eu-central-1:XXXXXXXXXX:topic/$aws/things/Scoot-$iot:Certificate.Subject.SerialNumber/*", "arn:aws:iot:eu-central-1:XXXXXXXXXX:topicfilter/$aws/things/Scoot-$iot:Certificate.Subject.SerialNumber/*" ] ]

设备无法向影子主题发布消息。

我做错了什么?

【问题讨论】:

【参考方案1】:

我想通了。 AWS 颁发的证书在 subject 中没有 SerialNumber 属性。

它们本身就是一个属性。

我应该使用 $iot:Certificate.SerialNumber 而不是 $iot:Certificate.Subject.SerialNumber

它现在可以工作了,我的设备不能再访问彼此的影子了。

【讨论】:

以上是关于iot:Certificate.Subject.SerialNumber 用于限制影子访问的主要内容,如果未能解决你的问题,请参考以下文章