Verwendung von dynamodb: LeadingKeys, wenn der Partitionsschlüssel mehr als eine Art von Werten hat
Meine Dynamo-Tabellen haben tenant_id als Partitionsschlüssel in meiner mandantenfähigen Anwendung, aber mein Partitionsschlüssel enthält neben tenant_id auch andere Arten von Entitäten.
Zum Beispiel: (Dies ist ein kleines Beispiel, wir verwenden dieses Muster durchgehend)
PK SK Att
Customer-4312a674-54a user-abc 672453782
user-abc user-abc 672453782
Ich möchte dynamodb:LeadingKeys
damit sicherstellen, dass die Daten eines Mieters niemals von einem anderen Mieter abgerufen werden können. Wie kann ich in diesem Fall PK
vorgehen, wenn es überlastet ist und auch andere Entitäten enthält?
Antworten
In einem System mit mehreren Mandanten würde ich empfehlen, die Mandanten-ID als Präfix zum Partitionsschlüssel aller zum Mandanten gehörenden Elemente hinzuzufügen . Auf diese Weise können Sie die dynamodb:LeadingKeys
Bedingung für die Zugriffskontrolle verwenden.
Die Mandanten-ID sollte ohnehin zur Abfragezeit für jede Abfrage bekannt sein. Ich vermute, dass sie wahrscheinlich in den Sitzungsinformationen gespeichert ist. Dies bedeutet, dass Sie jedem Schlüssel die Mandanten-ID hinzufügen und trotzdem den Partitionsschlüssel überladen können.