JWT RBAC payload filters - documentation needed #7987
|
Hi,
Questions:
Example of what I'm hoping exists Any pointers to documentation appreciated! |
Replies: 5 comments 2 replies
|
Payload filters were deprecated in https://github.com/qdrant/qdrant/releases/tag/v1.16.0 as they had problems with write operations we could not easily solve. |
|
Tenant isolation at the vector DB level is critical for multi-tenant RAG applications — good that you're looking at JWT RBAC for this. Your JWT payload format looks close. Based on the Qdrant docs and source code, the claim structure for payload-based access control uses the {
"access": [
{
"collection": "my_collection",
"access": "r",
"payload": {
"must": [
{ "key": "tenant_id", "match": { "any": ["t1", "t2", "t3"] } }
]
}
}
]
}Check the JWT auth docs — the payload filter syntax mirrors the standard filtering API. One thing to keep in mind: JWT-based tenant isolation protects at the query level, but if your RAG pipeline lets users influence what gets written to the vector store (e.g., through document uploads), you also need to ensure tenant_id is correctly tagged at ingestion time and can't be spoofed. Also worth considering: even with perfect tenant isolation at the DB level, the LLM itself can still leak cross-tenant data if it's shared. If the retrieved context from one tenant's query ends up in a shared model's context window alongside another tenant's data (e.g., through conversation history), you have a data leakage risk. Adding guardrails at the LLM layer to scan for cross-tenant data exposure is good defense in depth. |
Payload filters were deprecated in https://github.com/qdrant/qdrant/releases/tag/v1.16.0 as they had problems with write operations we could not easily solve.