Skip to content

Commit b8aecb6

Browse files
committed
ACL query updates
1 parent 4cb3bc1 commit b8aecb6

4 files changed

+52
-8
lines changed

articles/search/search-index-access-control-lists-and-rbac-push-api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ author: admayber
99
ms.author: admayber
1010
---
1111

12-
# Indexing Access Control Lists (ACLs) and Role-Based Access Control (RBAC) using REST API in Azure AI Search
12+
# Indexing Access Control Lists (ACLs) and Role-Based Access Control (RBAC) using REST APIs in Azure AI Search
1313

1414
[!INCLUDE [Feature preview](./includes/previews/preview-generic.md)]
1515

articles/search/search-query-access-control-rbac-enforcement.md

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,36 @@ Azure AI Search dynamically constructs security filters based on the user permis
4343

4444
For Azure RBAC, permissions are list of resource ID strings, and there must an Azure role assignment (Storage Blob Data Reader) on the data the source that grants access to the security principal token in the authorization header. The filter excludes documents if there's no role assignment for the principal behind the access token on the request.
4545

46-
### 3. Results filtering
46+
### 3. Results filtering
47+
4748
The security filter efficiently matches the userIds, groupIds, and rbacScope from the user against each list of ACLs in every document in the search index to limit the results returned to ones the user has access to. It's important to note that each filter is applied independently and a document is considered authorized if any filter succeeds. For example, if a user has access to a document through userIds but not through groupIds, the document is still considered valid and returned to the user.
4849

4950
## Limitations
51+
5052
- If ACL evaluation fails (for example, Graph API is unavailable), the service returns **5xx** and does **not** return a partially filtered result set.
5153
- Document visibility requires both:
5254
- the calling application’s RBAC role (Authorization header), and
5355
- the user identity carried by **x-ms-query-source-authorization**.
5456

55-
## Next steps
56-
* [How to Index Permission Information](tutorial-adls-gen2-indexer-acls.md) provides a detailed walkthrough of how to set up an index with ACLs using Azure Search indexers.
57-
* [Indexing ACLs and RBAC using Push API in Azure AI Search](search-index-access-control-lists-and-rbac-push-api.md) provides a walkthrough of how to set up an index with ACLs using the push API.
57+
## Query example
58+
59+
Here's an example of a query request. The query token is passed in the request header.
60+
61+
```http
62+
POST {{endpoint}}/indexes/stateparks/docs/search?api-version=2025-05-01-preview
63+
Authorization: Bearer {{search-token}}
64+
x-ms-query-source-authorization: {{search-token}}
65+
Content-Type: application/json
66+
67+
{
68+
"search": "*",
69+
"select": "name,description,location,GroupIds",
70+
"orderby": "name asc"
71+
}
72+
```
73+
74+
## Related content
75+
76+
- [Tutorial: Index ADLS Gen2 permission metadata](tutorial-adls-gen2-indexer-acls.md) provides a detailed walkthrough of how to set up an index with ACLs using Azure Search indexers.
77+
78+
- [Indexing ACLs and RBAC using Push API in Azure AI Search](search-index-access-control-lists-and-rbac-push-api.md) provides a walkthrough of how to set up an index with ACLs using the push indexing approach with the REST APIs.

articles/search/service-configure-firewall.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ For ping, the request times out, but the IP address is visible in the response.
127127

128128
A banner informs you that IP rules affect the Azure portal experience. This banner remains visible even after you add the Azure portal's IP address. Remember to wait several minutes for network rules to take effect before testing.
129129

130-
:::image type="content" source="media/service-configure-firewall/restricted-access.png" alt-text="Screenshot showing the restricted access banner.":::
130+
:::image type="content" source="media/service-configure-firewall/restricted-access.png" alt-text="Screenshot showing the restricted access banner." lightbox="media/service-configure-firewall/restricted-access.png" :::
131131

132132
## Grant access to trusted Azure services
133133

articles/search/tutorial-adls-gen2-indexer-acls.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ titleSuffix: Azure AI Search
44
description: Learn how to index Access Control Lists (ACLs) and Azure Role-Based Access Control (RBAC) scope from ADLS Gen2 and query with permission-filtered results in Azure AI Search.
55
ms.service: azure-ai-search
66
ms.topic: tutorial
7-
ms.date: 05/08/2025
7+
ms.date: 05/20/2025
88
author: wlifuture
99
ms.author: wli
1010
---
@@ -26,7 +26,7 @@ In this tutorial, you learn how to:
2626
> + Create and run an indexer to ingest permission information into an index from a data source
2727
> + Search the index you just created
2828
29-
You need a REST client to complete this tutorial. There's no currently no support for ACL indexing in the Azure portal.
29+
Use a REST client to complete this tutorial and the [2025-05-01-preview](/rest/api/searchservice/operation-groups?view=rest-searchservice-2025-05-01-preview&preserve-view=true) REST API. There's no currently no support for ACL indexing in the Azure portal.
3030

3131
## Prerequisites
3232

@@ -181,3 +181,26 @@ Indexer configuration for permission ingestion is primarily about defining `fiel
181181
```
182182

183183
After indexer creation and immediate run, the file content along with permission metadata information are indexed into the index.
184+
185+
## Run a query to check results
186+
187+
Now that documents are loaded, you can issue queries against them by using [Documents - Search Post (REST)](/rest/api/searchservice/documents/search-post).
188+
189+
The URI is extended to include a query input, which is specified by using the `/docs/search` operator. The query token is passed in the request header. For more information, see [Query-Time ACL and RBAC enforcement](search-query-access-control-rbac-enforcement.md).
190+
191+
```http
192+
POST {{endpoint}}/indexes/stateparks/docs/search?api-version=2025-05-01-preview
193+
Authorization: Bearer {{search-token}}
194+
x-ms-query-source-authorization: {{search-token}}
195+
Content-Type: application/json
196+
197+
{
198+
"search": "*",
199+
"select": "name,description,location,GroupIds",
200+
"orderby": "name asc"
201+
}
202+
```
203+
204+
## Related content
205+
206+
+ [https://github.com/Azure-Samples/azure-search-rest-samples/tree/main/Quickstart-ACL](https://github.com/Azure-Samples/azure-search-rest-samples/tree/main/Quickstart-ACL)

0 commit comments

Comments
 (0)