パーティションキーに複数の種類の値がある場合のdynamodb:LeadingKeysの使用方法

Dec 25 2020

Dynamoテーブルにはマルチテナントアプリケーションのパーティションキーとしてtenant_idがありますが、パーティションキーにはtenant_idに加えて他のタイプのエンティティも含まれています。

例:(これは小さな例です。全体でこのパターンを使用しています)

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

dynamodb:LeadingKeysあるテナントのデータに別のテナントがアクセスできないようにするために使用したいと思います。PKがオーバーロードされていて、他のエンティティも含まれている場合、どうすればそれを回避できますか。

回答

1 Maurice Dec 28 2020 at 17:41

マルチテナントシステムでは、テナントに属するすべてのアイテムのパーティションキーにプレフィックスとしてtenant-idを追加することをお勧めします。そうすればdynamodb:LeadingKeys、アクセス制御の条件を使用できます。

とにかく、テナントIDはすべてのクエリのクエリ時に認識されている必要があります。おそらく、セッション情報に格納されていると思います。これは、すべてのキーにテナントIDを追加しても、パーティションキーのオーバーロードを実行できることを意味します。