#amazon-web-services #amazon-dynamodb
#amazon-web-services #amazon-dynamodb
Вопрос:
как мне ограничить доступ пользователя dynamoddb к его собственным данным, принадлежащим им. Я получил доступ, используя условия политики IAM для детального контроля доступа
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${www.amazon.com:user_id}"
],
"dynamodb:Attributes": [
"UserId",
"GameTitle",
"Wins",
"Losses",
"TopScore",
"TopScoreDateTime"
]
}
}
проблема с вышеуказанным условием заключается в том, что мой ключ раздела не является идентификатором пользователя.
это что-то еще.
вот как выглядит моя база данных
Hash : "Sales" # its just plain text Sales
Range Date # its date
attributes : Sale : [ # array of maps
{
name : abc,
userId : idabc,
some-other : stuff
},
{
name : xyz,
userId : idxyz,
some-other : stuff
}
]
есть идеи, как ограничить доступ на основе sale [x].userId?
или какой-нибудь лучший дизайн, как справиться с таким дизайном?
Я использую диапазон дат для запроса 90% данных.
другой вариант — использовать разные таблицы для каждой логической таблицы.
например, продажи, расходы, начисление заработной платы и т. Д., Но я не хочу создавать разные таблицы
, и это противоречит цели или NoSQL, я думаю.
К вашему сведению, я использую javascript sdk для доступа к dynamodb из браузера.
приложение имеет 3 разных типа пользователей
- клиент (доступ к собственным данным)
- продавцы (собственные данные и доступ к данным своих клиентов)
- администратор (доступ ко всем данным)
Я думаю, что для этого мне нужно создать 3 разных пользовательских пула, поправьте меня, если я ошибаюсь.
но я не могу ограничить доступ к собственным данным, если я использую ключ раздела в качестве идентификатора пользователя, то запрос для продавцов становится затруднительным.
есть предложения о том, как мне справиться с этим дизайном БД?
спасибо