【问题标题】:How to restrict an AWS-IoT Thing to Publish/Subscribe to some topics in AWS IoT-Core?如何限制 AWS-IoT 事物发布/订阅 AWS IoT-Core 中的某些主题?
【发布时间】:2021-02-17 11:18:18
【问题描述】:

我正在动态创建一个 AWS-IoT 事物,它可以发布任何主题并可以监听 AWS-IoT-core 代理中的任何主题。

我使用的Policy非常广泛,这个东西可以执行服务器中的所有操作:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:*",
      "Resource": "*"
    }
  ]
}

现在我想缩小这些选项。我想让这个东西只发布到主题TOPICS-TEST/# 并只订阅主题TOPICS-TEST/#。尽管我们在代理中有许多不同的主题,但我希望这个东西只能访问以 TOPICS-TEST/ 开头的主题。

为了做到这一点,我检查了this documentation,并创建了这个政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:xxxx:client/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:xxxx:topicfilter/TOPICS-TEST/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:xxxx:topicfilter/TOPICS-TEST/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:xxxx:topicfilter/TOPICS-TEST/*"
            ]
    }
    ]
}

以前的策略不起作用。 我什么都看不到,我什么也不能发表。 我错过了什么?

【问题讨论】:

    标签: aws-iot


    【解决方案1】:

    我想办法做到这一点

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iot:Connect"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iot:Subscribe"
          ],
          "Resource": [
            "arn:aws:iot:us-east-1:xxxxxxxx:topicfilter/TOPICS-TEST*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iot:Receive"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iot:Publish"
          ],
          "Resource": [
            "arn:aws:iot:us-east-1:xxxxxxxx:topic/TOPICS-TEST/*"
          ]
        }
      ]
    }
    

    之前的策略将允许事物接收来自 AWS-IoT 核心的通知、连接、仅推送到子主题 TOPICS-TEST/ ... 和订阅 TOPICS-TEST/...。此翼将无法查看此代理中的其他主题。

    我使用...:topicfilter/... 发布。应该是...:topic/...

    【讨论】:

      【解决方案2】:

      我同意这个解决方案,但是如果你有数以百万计的东西并且针对不同的影子有不同的主题怎么办。 我们是否必须将所有设备都附加到此政策中。

      在我看来,我认为应该有一些适用于这种情况的 IAM 政策。我觉得这个教程项目非常有用。

      https://youtu.be/1Pk05kpBX2A

      【讨论】:

        猜你喜欢
        • 2017-11-28
        • 2019-12-26
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 2019-01-30
        • 2018-08-14
        • 2018-08-23
        • 1970-01-01
        相关资源
        最近更新 更多