Cómo usar dynamodb: LeadingKeys cuando la clave de partición tiene más de un tipo de valores

Dec 25 2020

Mis tablas de Dynamo tienen tenant_id como clave de partición en mi aplicación multiinquilino, pero mi clave de partición también tiene otros tipos de entidades además de tenant_id.

Por ejemplo: (Este es un pequeño ejemplo, estamos usando este patrón en todas partes)

PK                                        SK                               Att
Customer-4312a674-54a                  user-abc                            672453782
user-abc                                   user-abc                            672453782

Me gustaría usar dynamodb:LeadingKeyspara garantizar que otro inquilino nunca pueda acceder a los datos de un inquilino. ¿Cómo puedo hacer eso en este caso cuando PKestá sobrecargado y también tiene otras entidades?

Respuestas

1 Maurice Dec 28 2020 at 17:41

En un sistema de múltiples inquilinos, mi recomendación sería agregar el tenant-id como un prefijo a la clave de partición de todos los elementos que pertenecen al inquilino. De esa forma, puede utilizar la dynamodb:LeadingKeyscondición para el control de acceso.

La identificación del inquilino debe conocerse en el momento de la consulta para cada consulta de todos modos, supongo que probablemente esté almacenada en la información de la sesión. Esto significa que puede agregar el tenant-id a cada clave y aún así realizar la sobrecarga de la clave de partición.