#aws-iot
#aws-iot
Вопрос:
Требуется ограничить устройство только его ресурсами (теневыми) внутри AWS IOT на основе сертификата, который оно использует для аутентификации.
Device1 подключено к Cert1 — я хочу иметь общую политику, которая позволяла бы Device1 обновлять тень устройства 1, а не Device2
но все это запускается с помощью сертификата, используемого устройствами для аутентификации.
Похоже, что приведенная ниже политика не работает — какая-нибудь помощь?
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "*",
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": [
"true"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:xxxxxx:topic/${iot:Connection.Thing.ThingTypeName}/${iot:Connection.Thing.ThingName}",
"arn:aws:iot:us-east-1:xxxxxx:topic/${iot:Connection.Thing.ThingTypeName}/${iot:Connection.Thing.ThingName}/*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:xxxxxx:topicfilter/${iot:Connection.Thing.ThingTypeName}/${iot:Connection.Thing.ThingName}",
"arn:aws:iot:us-east-1:xxxxxx:topicfilter/${iot:Connection.Thing.ThingTypeName}/${iot:Connection.Thing.ThingName}/*"
]
}
]
}
Комментарии:
1. Вряд ли есть какая-либо информация о том, как это не работает, кроме названия вопроса. Можете ли вы подробнее рассказать о проблеме?
2. Требуется ограничить устройство только его ресурсами (теневыми) внутри AWS IOT на основе сертификата, который оно использует для аутентификации. Device1 подключено к Cert1 — хотите иметь общую политику, которая позволяла бы Device1 обновлять тень устройства 1, а не Device2, но все они запускаются с помощью сертификата!
Ответ №1:
Это то, что я в конечном итоге использовал, чтобы ограничить устройство его собственными ресурсами, а также использовать ClientID в качестве имени устройства AWS
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "*",
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": [
"true"
]
},
"ForAnyValue:StringEquals": {
"iot:ClientId": [
"${iot:Connection.Thing.ThingName}"
]
}
}
},
{
"Effect": "Allow",
"Action": "iot:Publish",
"Resource": "arn:aws:iot:us-east-1:xxx:topic/$aws/things/${iot:Connection.Thing.ThingName}/*"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:xxx:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "arn:aws:iot:us-east-1:xxx:topic/$aws/things/${iot:Connection.Thing.ThingName}/*"
}
]
}
Комментарии:
1. Привет, предположим, у меня есть 5 устройств, зарегистрированных в aws iot, и я хочу, чтобы использовались только эти 5. Могу ли я поставить это условие «Bool»: { «iot: Подключение. Вещь. IsAttached»: [ «true»] и использовать название темы с подстановочным знаком? Будет ли это гарантировать, что будут разрешены только эти 5 устройств?