Я пытаюсь разработать архитектуру приложения почти исключительно поверх служб AWS.Могу ли я иметь динамические пользовательские разрешения с использованием AWS IAM/Cognito?
Это приложение имеет как User
, так и Organization
«объекты». Как можно было бы исключить, User
может быть admin
, role-x
или role-y
одной или нескольких организаций. (role-x
и role-y
просто заполнители для некоторой роли с некоторым набором конкретных разрешений. User
также может быть автономным (то есть, не имеют роль в любом Organization
).
Наше современное мышление заключается в использовании DynamoDB для хранения организации и пользовательские данные. Для пользователей это может включать в себя некоторую базовую информацию (адрес, номер телефона и т. д.), а для организаций она может включать такие поля, как «миссия», «деловой адрес» и т. д.
admin
организация сможет редактировать все поля организации, тогда как role-x
может обновить «инструкцию миссии» только при чтении всех других полей.
Поскольку я упомянул, что один пользователь может иметь роль на многих различных организаций, которые могли бы выглядеть примерно так:
user1:
organizations:
123: 'admin'
456: 'role-x'
789: 'admin'
Стоит также отметить, что эти назначения ролей являются модифицируемые. Новые или существующие пользователи могут быть приглашены принять определенную роль для организации, и организация может удалить пользователя из роли.
Это довольно простой тип макета, но я хотел бы четко рассказать о характере пользователя, организации и ролей «многие ко многим».
Я читал документацию IAM и Cognito, а также то, как она относится к мелкозернистному управлению элементами DynamoDB или S3-ведрами, но многие из примеров сосредоточены на том, что один пользователь обращается к своим собственным данным, а не к множеству -to-many.
Как можно реализовать внедрение этого типа системы разрешений на AWS?
(Если необходимо обновить с конкретными Identities
(скажем, для Organization
), это может быть надежно сделано в programatic способом определения политики - или это опрометчивый изменить политику на лету, как это)
Я думаю Cognito тождества могут быть назначены или связаны с IAM ролей, хотя, не так ли? Если это так, то можно создать роли для разных уровней доступа к каждой организации, а затем связать эти роли с личностью Cognito. Я полагаю, что это зависит от того, что личность может иметь много ролей, но я не уверен, разрешено ли это/возможно. – csjohn
Вы в конечном итоге решили это? Поскольку Cognito не разрешает множественные аутентифицированные роли, я думал о наличии 1 пула идентификаторов для каждой роли. Этот подход не кажется очень масштабируемым, но если у вас есть только две роли (например, Пользователь и Администратор), это может быть хорошо. – Brett