Como usar o dynamodb: LeadingKeys quando a chave de partição tem mais de um tipo de valor
Minhas tabelas Dynamo têm tenant_id como a chave de partição em meu aplicativo multilocatário, mas minha chave de partição também possui outros tipos de entidades além de tenant_id.
Por exemplo: (Este é um pequeno exemplo, estamos usando esse padrão em todo)
PK SK Att
Customer-4312a674-54a user-abc 672453782
user-abc user-abc 672453782
Eu gostaria de usar dynamodb:LeadingKeys
para garantir que os dados de um inquilino nunca possam ser acessados por outro inquilino. Como posso fazer isso neste caso, quando PK
está sobrecarregado e tem outras entidades nele também.
Respostas
Em um sistema multilocatário, minha recomendação seria adicionar o tenant-id como um prefixo para a chave de partição de todos os itens pertencentes ao locatário. Dessa forma, você pode usar a dynamodb:LeadingKeys
condição para controle de acesso.
O tenant-id deve ser conhecido no momento da consulta para cada consulta de qualquer maneira, meu palpite é que ele provavelmente está armazenado nas informações da sessão. Isso significa que você pode adicionar o tenant-id a cada chave e ainda sobrecarregar a chave de partição.