Как ограничить пользователей, прошедших проверку подлинности cognito, присоединением политики iot к идентификатору cognito? - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу подписаться на Iot shadow, используя учетные данные Cognito. Для этого я должен прикрепить политику к идентифицированному идентификатору Cognito. Значит, после входа пользователя в систему пользователь получит идентификационный номер. Затем я присоединяю ранее созданную политику iot к этой идентичности. Политика, которую я подключаю, имеет доступ для подключения и подписки теневого устройства. Метод, который я использую для этого 'AttachPrinciplePolicy' / 'AttachPolicy'. Оба эти метода принимают два параметра: 1. имя политики, 2. идентификатор, к которому я хочу присоединиться. Здесь проблема касается безопасности. Поскольку после аутентификации пользователь может присоединить любую политику, просто указав имя политики. Хакер может использовать некоторые методы для изменения имени политики в коде, тогда это может вызвать серьезную уязвимость.

Я хочу ограничить пользователя таким образом, чтобы пользователь, прошедший проверку подлинности cognito, мог присоединить только определенную политику, которая имеет доступ для подключения и подписки тени.

Может ли это быть сделано с использованием некоторых ролей / политики IAM? Чтобы пользователь мог прикрепить только конкретную политику?

Пожалуйста, предложите.

Я пытался использовать политику IAM, но когда я указываю определенную политику arn для ресурса действия AttachPrinciplePolicy, она не работает. Политика IAM, которую я использовал, ниже

{
  "Action": [
     "iot:AttachPolicy",
     "iot:AttachPrincipalPolicy"
   ],
   "Resource": [
       "arn:aws:iot:us-east-2:XXXXXXXXXX:policy/AccessByCognito_Policy"
    ],
    "Effect": "Allow"
}

Можно ли это сделать с помощью некоторых ролей / политики IAM? Так что пользователь может прикрепить только конкретную политику? Или каким-либо другим способом добиться этого?

1 Ответ

0 голосов
/ 03 апреля 2019

Попробуйте AWS IoT Custom Authorizer . Вы можете прикреплять политики на ходу с помощью лямбда-функции.

При подключении к aws iot вы можете отправить токен идентификатора идентификатора aws.

В лямбда-функции вы можете проверить токен идентификатора JWT и вернуть политику IAM как json. Вы также можете определить, как долго эта политика будет прикреплена к сеансу.

{
 "isAuthenticated":true,
 "principalId": "xxxxxxxx",
 "disconnectAfterInSeconds": 86400,
 "refreshAfterInSeconds", 300,
 "policyDocuments": [
  "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Action\": \"...\", \"Effect\": \"Allow|Deny\", \"Resource\": \"...\" } ] }"
 ]
} 
...