#aws-iot
#aws-iot
Вопрос:
Я динамически создаю AWS-IoT, который может публиковать любую тему и может прослушивать любую тему в AWS-IoT-core broker.
Политика, которую я использую, очень широкая, и эта вещь может выполнять все операции на сервере:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:*",
"Resource": "*"
}
]
}
Теперь я хочу сузить эти параметры. Я хочу разрешить этой вещи просто публиковать в темах TOPICS-TEST/#
и подписываться ТОЛЬКО на темы TOPICS-TEST/#
. Несмотря на то, что у нас много разных разделов в брокере, я хочу, чтобы у этой вещи был доступ только к темам, с которых начинается TOPICS-TEST/
.
Для этого я проверил эту документацию и создал эту политику:
{
"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/*"
]
}
]
}
Предыдущая политика не работает.
Я ничего не вижу, я ничего не могу опубликовать.
Чего мне не хватает?
Ответ №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 core, подключаться, переходить ТОЛЬКО к подтемам TOPICS-TEST/ ...
и подписываться на TOPICS-TEST/...
. Это крыло не сможет просматривать другие разделы в этом брокере.
Я использовал ...:topicfilter/...
для публикации. Должно быть ...:topic/...
.
Ответ №2:
Я согласен с решением, но что, если у вас есть миллионы вещей и разные темы для разных теней. Должны ли мы присоединять все устройства к этой политике.
На мой взгляд, я считаю, что должна быть какая-то политика IAM, которая должна быть применима в этом случае. Я нахожу этот обучающий проект очень полезным.