Ограничить устройство AWS IOT самим собой с помощью политики

#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 устройств?