Предоставление разрешения AWS IAM на основе значений атрибута Dynamodb

У меня есть таблица Dynamodb со следующими значениями атрибутов | UserID | Name | paid | |--------|------|-------| | 0001 | Sam | false |

У меня есть документ IAM polivy, написанный в безсерверном файле yml следующим образом

- PolicyName: PaidPolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "s3:PutObject" Resource: - Fn::Join: - "" - - arn:aws:s3:::uploads - "/protected/*"

Можно ли изменить действие политики на Allow или Deny в зависимости от значения столбца paid

Примечание. Я обнаружил, что можно добавлять условия с помощью атрибута Condition, но не смог найти способ сослаться на значения таблицы Dynamodb.


person It worked yesterday.    schedule 28.04.2020    source источник


Ответы (1)


Быстрый поиск по этому документу не помог. ни к чему, поэтому решение, которое я имею в виду, будет таким:

  1. Создание групп пользователей для платных и бесплатных пользователей
  2. Прикрепите политики с разрешениями и запретами действий S3 к соответствующей группе
  3. Создайте лямбда-функцию, которая поместит пользователя в указанную группу на основе значения столбца в DynamoDB.
  4. Запуск лямбда-выражения при изменении таблицы DynamoDB через поток
person Oleksii Donoha    schedule 28.04.2020
comment
Я действительно ценю ответ :). Но я уже использую две группы пользователей, одну для администраторов, другую для обычных пользователей, а также разрешения и роли пользователей соответственно. Я не знаю, как управлять ролями, если я добавлю еще две группы - person It worked yesterday.; 28.04.2020
comment
Затем, возможно, используйте роли IAM и потребуйте использования этих ролей для доступа к корзине. Затем лямбда может обновить доверительные отношения роли, чтобы позволить тому или иному пользователю ее взять на себя. Есть много способов сделать это, трудно предположить, не видя настройки. - person Oleksii Donoha; 28.04.2020