Skip to content

Commit d853af3

Browse files
authored
Merge pull request #5071 from HeidiSteen/heidist-work
ACL query updates
2 parents 793306d + dd04386 commit d853af3

5 files changed

+58
-11
lines changed

articles/search/search-how-to-index-logic-apps-indexers.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ After the wizard completes, you have the following components:
4141
| Component | Location | Description |
4242
|-----------|----------|------------|
4343
| Search index | Azure AI Search | Contains indexed content from a supported Logic Apps connector. The index schema is a default index created by the wizard. You can add extra elements, such as scoring profile or semantic configuration, but you can't change existing fields. You view, manage, and access the search index on Azure AI Search. |
44-
| Logic app resource and workflow | Azure Logic Apps | You can view the running workflow, or you can open the designer in Azure Logic Apps to edit the workflow, as you regularly do if you'd started from Azure Logic Apps instead. You can edit and extend the workflow, but exercise caution so as to not break the indexing pipeline. |
44+
| Logic app resource and workflow | Azure Logic Apps | You can view the running workflow, or you can open the designer in Azure Logic Apps to edit the workflow, as you regularly do if you'd started from Azure Logic Apps instead. You can edit and extend the workflow, but exercise caution so as to not break the indexing pipeline. The workflow created by the wizard uses the **Consumption** hosting option. |
4545
| Logic app templates | Azure Logic Apps | Up to two templates created per workflow: one for on-demand indexing, and a second template for scheduled indexing. You can modify the indexing schedule in the **Index multiple documents** step of the workflow. |
4646

4747
## Prerequisites
@@ -101,6 +101,7 @@ Currently, the public preview has these limitations:
101101
+ Vectorization supports text embedding only.
102102
+ Deletion detection isn't supported. You must manually [delete orphaned documents](search-howto-reindex.md#delete-orphan-documents) from the index.
103103
+ Duplicate documents in the search index are a known issue in this preview. Consider deleting objects and starting over if this becomes an issue.
104+
+ No support for private endpoints in the logic app workflow created by the portal wizard. The workflow is hosted using the [**Consumption** hosting option](/azure/logic-apps/single-tenant-overview-compare) and is subject to its constraints. To use the **Standard** hosting option, use a programmatic approach to creating the workflow. Use the [2025-05-01-preview REST API](/rest/api/searchservice/operation-groups?view=rest-searchservice-2025-05-01-preview&preserve-view=true) or a prerelease Azure SDK package that provides the feature.
104105

105106
## Create a logic app workflow
106107

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: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ Azure Data Lake Storage (ADLS) Gen2 provides an access model that makes fine-gra
2929

3030
This section lists the order of operations for ACL enforcement at query time. Operations vary depending on whether you use Azure RBAC scope or Microsoft Entra ID group or user IDs.
3131

32-
### 1. User permissions input
32+
### 1. User permissions input
33+
3334
The end-user application sends user permission as part of the search query request. The following table lists the source of the user permissions Azure AI Search uses for ACL enforcement:
3435

3536
| Permission type | Source |
@@ -39,19 +40,41 @@ The end-user application sends user permission as part of the search query reque
3940
| rbacScope | Permissions the user from `x-ms-query-source-authorization` has on a storage container |
4041

4142
### 2. Security filter construction
43+
4244
Azure AI Search dynamically constructs security filters based on the user permissions provided. These security filters are automatically appended to any filters that might come in with the query if the index has the permission filter option enabled.
4345

44-
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.
46+
For Azure RBAC, permissions are lists of resource ID strings, and there must be 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.
4547

46-
### 3. Results filtering
48+
### 3. Results filtering
49+
4750
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.
4851

4952
## Limitations
53+
5054
- If ACL evaluation fails (for example, Graph API is unavailable), the service returns **5xx** and does **not** return a partially filtered result set.
5155
- Document visibility requires both:
5256
- the calling application’s RBAC role (Authorization header), and
5357
- the user identity carried by **x-ms-query-source-authorization**.
5458

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.
59+
## Query example
60+
61+
Here's an example of a query request from [sample code](https://github.com/Azure-Samples/azure-search-rest-samples/tree/main/Quickstart-ACL). The query token is passed in the request header.
62+
63+
```http
64+
POST {{endpoint}}/indexes/stateparks/docs/search?api-version=2025-05-01-preview
65+
Authorization: Bearer {{search-token}}
66+
x-ms-query-source-authorization: {{search-token}}
67+
Content-Type: application/json
68+
69+
{
70+
"search": "*",
71+
"select": "name,description,location,GroupIds",
72+
"orderby": "name asc"
73+
}
74+
```
75+
76+
## Related content
77+
78+
- [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.
79+
80+
- [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)