Разрешить пользователю Cognito писать в S3

У меня есть встроенное устройство, которое требует возможности записи в S3. Я хочу не предоставлять встроенному устройству реальный AWS IAMUser. Я смотрю на использование Cognito для получения доступа на запись в S3.

У меня есть пул пользователей с группой и одним пользователем (на данный момент). Группа имеет прикрепленную политику, которая разрешает доступ для записи в определенный сегмент S3. Пул настроен так, что только администраторы могут создавать новых пользователей. Мне удалось аутентифицировать пользователя Cognito и получить доступ к токенам обновления и idTokens. Я хочу использовать эти токены для записи в мое ведро s3.

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

Есть ли простое решение, позволяющее пользователю cognito писать в S3 без федеративных идентификаторов или, если нет, мне требуется серверная часть для обслуживания токена для федеративной идентификации?

Я использовал ордер https://github.com/capless/warrant для аутентификации следующим образом:

from warrant.aws_srp import AWSSRP                                                                                                                                                                                                                                                    
import boto3                                                                                                                                                                                                                                                                          

client = boto3.client('cognito-idp')                                                                                                                                                                                                                                                  

aws = AWSSRP(username='<username>', password='<password>', pool_id='<pool>',                                                                                                                                                                                            
         client_id='<clientid>', client=client)                                                                                                                                                                                                              

tokens = aws.authenticate_user()                    

Любые советы будут с благодарностью!

1 ответ

Решение

Вам нужен федеративный пул удостоверений. В разделе поставщика удостоверений вы выбираете Cognito и введите свой идентификатор пула и идентификатор клиента пула. Затем вам нужно предоставить пул authenticated а также unauthenticated roles, Вы можете использовать эти роли для предоставления доступа к записи S3.

Это поведение по умолчанию для настройки провайдера идентификации. Если вы хотите, чтобы роль пришла из группы, в которую входит ваш пользователь, вам нужно будет установить Choose role from token опцию в разделе провайдера идентификации, где вы указали свой пул и идентификатор клиента.

Другие вопросы по тегам