Como usar o dynamodb: LeadingKeys quando a chave de partição tem mais de um tipo de valor

Dec 25 2020

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:LeadingKeyspara garantir que os dados de um inquilino nunca possam ser acessados ​​por outro inquilino. Como posso fazer isso neste caso, quando PKestá sobrecarregado e tem outras entidades nele também.

Respostas

1 Maurice Dec 28 2020 at 17:41

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:LeadingKeyscondiçã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.