Cara menggunakan dynamodb: LeadingKeys saat kunci Partisi memiliki lebih dari satu jenis nilai
Tabel Dynamo saya memiliki tenant_id sebagai kunci partisi di aplikasi multi-tenant saya, tetapi kunci partisi saya juga memiliki jenis entitas lain di dalamnya selain tenant_id.
Misalnya: (Ini adalah contoh kecil, kami menggunakan pola ini di seluruh)
PK SK Att
Customer-4312a674-54a user-abc 672453782
user-abc user-abc 672453782
Saya ingin menggunakan dynamodb:LeadingKeys
untuk memastikan data satu penyewa tidak akan pernah bisa diakses oleh penyewa lain. Bagaimana saya bisa melakukannya dalam kasus ini ketika PK
kelebihan beban dan memiliki entitas lain di dalamnya juga.
Jawaban
Dalam sistem multi-penyewa, rekomendasi saya adalah menambahkan id penyewa sebagai awalan ke kunci partisi semua item milik penyewa. Dengan cara itu Anda dapat menggunakan dynamodb:LeadingKeys
kondisi untuk kontrol akses.
Id penyewa harus diketahui pada waktu kueri untuk setiap kueri, tebakan saya adalah bahwa itu mungkin disimpan dalam informasi sesi. Ini berarti Anda dapat menambahkan tenant-id ke setiap Key dan masih melakukan overloading kunci partisi.