Моя ситуация такова:
Я пытаюсь контролировать доступ к корзине S3, используя домашние каталоги, подобные unix, через AWS Cognito.Эти домашние каталоги должны быть доступны для групп пользователей, а не для каждого отдельного пользователя.Например:
s3-bucket/home/group1
s3-bucket/home/group2
s3-bucket/home/group3
При создании ролей отдельно с информацией о группе (имя группы в настоящее время используется как часть имени каталога для подстановочных знаков), аналогично этой ссылке , это работает.Однако я бы предпочел не делать отдельную роль IAM для каждой группы.
Прежде чем использовать расширенный поток, я мог ограничить роль дополнительной политикой через вызов assumeRoleWithWebIdentity
с STS.Однако при использовании только cognito он ожидает применения только роли.
Вместо непосредственного применения политики к предмету идентификатора токена (например, ${cognito-identity.amazonaws.com:sub}
), я бы предпочел использовать группу (как из ${cognito-identity.amazonaws.com:cognito:groups}
), так что мне не нужно создавать роль для каждой новой группы, а сама переменная поможет определить область действия ресурса.
Кому-нибудь повезло с этим?Или вообще использовать строковые массивы / наборы в определениях ресурсов IAM?Я пытался сделать что-то вроде
{"Fn::Select": [0, "${cognito-identity.amazonaws.com:cognito:groups}"]}
, но облачность жалуется на
Template error: Fn::Select requires a list argument with two elements: an integer index and a list
.
Спасибо!
PS Я вижу эту страницу , в которой говорится, что для cognito не существует специфичных для службы ключей для использования в политиках, но это не совсем правильно, поскольку я видел, как люди используют sub
aud
amr
и т. д. в политиках в других примерах в Интернете, хотя полное руководство кажется недостаточно документированным.