AI-103 Practice Question 40: Document Level Permissions
Microsoft Azure AI Apps and Agents Developer Associate (AI-103) · Test 4 · question 10 of 10
A RAG assistant grounds on documents stored in Azure Data Lake Storage Gen2, where access is already governed by ACLs and RBAC assignments on Microsoft Entra groups. Today the application retrieves the top chunks and then filters them in its own code by resolving the caller's group membership, including nested groups, through Microsoft Graph. That code is slow at volume, is a second place permissions are modelled, and has twice leaked a snippet into a citation.
Which approach should replace it?
Show answer and explanation
Answer:
Microsoft's decision table is direct: for "content in ADLS Gen2 or Azure Blob Storage with existing ACL or RBAC assignments," use POSIX-like ACL / RBAC scopes. With permission filters enabled on the index and the token on the request, Azure AI Search extracts the caller's user, group and scope claims, compares them to the permission metadata stored alongside each document, and returns only what the caller may read. Microsoft lists the benefits this scenario names one by one: it eliminates nested group resolution and post-query trimming in your application, and it filters inside the search pipeline rather than loading larger result sets into the app. (Native document-level permission support is in preview, available through the preview REST API and prerelease SDK packages.)
- A is wrong because it keeps every defect: the parallel permission model, the Graph round trips, the cost of over-retrieving, and a hand-written filter that is one bug away from the next leak. - C is wrong because permissions in an ADLS Gen2 estate are per file and per group combination, not per group. An index per group multiplies storage and ingestion, and users belong to many groups at once. - D is the documented security filters pattern, a legitimate approach, but Microsoft recommends it for custom identity systems or non-Microsoft security frameworks. Here it still requires the application to resolve the caller's groups and compose the filter, which is the duplicated permission logic the team is trying to delete.