Мне было интересно, знает ли кто-нибудь о лучших практиках AWS IoT в отношении обработки политик, например, у нас могут быть два разных случая:
Случай 1. Вызов лямбда-выражения (идентификатор-идентификатор в качестве параметра), который создает политику на лету, а затем присоединяет политику к идентификатору идентификатора. Политика будет содержать жестко запрограммированные имена вещей, например:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "arn:aws:iot:us-west-2:XXXX:client/hardcodedClient1"
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-west-2:XXXX:topic/$aws/things/THINGNAME1/*",
"arn:aws:iot:us-west-2:XXXX:topicfilter/$aws/things/THINGNAME1/*"
]
}
]
}
Случай 2: используя переменные политики, такие как ${iot:ClientId}
, ${iot:ThingName}
, мы можем прикрепить одну единственную политику ко всем пользователям congito-identity;
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "arn:aws:iot:us-west-2:XXXX:client/${iot:ClientId}"
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-west-2:XXXX:topic/$aws/things/${iot:Connection.Thing.ThingName}/*",
"arn:aws:iot:us-west-2:XXXX:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/*"
]
}
]
}
Итак, вопрос такой. Какой из этих методов является наилучшим, но оба они безопасны в отношении того, что пользователь Cognito может взаимодействовать только со своими собственными устройствами?