Skip to content

Commit 6eed653

Browse files
committed
Reviewed query article
1 parent 7da015f commit 6eed653

5 files changed

+21
-19
lines changed

articles/search/search-blob-indexer-role-based-access.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ The indexer approach is built on this foundation:
3535

3636
+ Permission inheritance isn't available if the blob indexer is using a [one-to-many parsing mode](/rest/api/searchservice/indexers/create?view=rest-searchservice-2025-05-01-preview&preserve-view=true#blobindexerparsingmode), such as: `delimitedText`, `jsonArray`, `jsonLines`, and `markdown` with sub-mode `oneToMany`. You must use the default parsing mode that creates one search document for each blob in the container.
3737

38-
## Configure Blob storage for indexing permission metadata
38+
## Configure Blob storage
3939

4040
Verify your blob container uses role-based access.
4141

@@ -49,7 +49,7 @@ Verify your blob container uses role-based access.
4949

5050
For indexer execution, your search service identity must have **Storage Blob Data Reader** permission. For more information, see [Connect to Azure Storage using a managed identity](search-howto-managed-identities-storage.md).
5151

52-
## Configure Azure AI Search for indexing permission metadata
52+
## Configure Azure AI Search
5353

5454
Recall that the search service must have:
5555

@@ -60,11 +60,11 @@ Recall that the search service must have:
6060

6161
For indexer execution, the client issuing the API call must have **Search Service Contributor** permission to create objects, **Search Index Data Contributor** permission to perform data import, and **Search Index Data Reader** to query an index see [Connect to Azure AI Search using roles](search-security-rbac.md).
6262

63-
## Index permission metadata
63+
## Configure indexing
6464

6565
In Azure AI Search, configure an indexer, data source, and index to pull permission metadata from blobs.
6666

67-
### Configure the data source
67+
### Create the data source
6868

6969
+ Data Source type must be `azureblob`.
7070

articles/search/search-howto-run-reset-indexers.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ The [Indexers - Reset Docs](/rest/api/searchservice/indexers/reset-docs?view=res
211211

212212
On a per-document basis, all fields in the search document are refreshed with values and metadata from the data source. You can't pick and choose which fields to refresh.
213213

214-
If the data source is Azure Data Lake Storage (ADLS) Gen2, and the blobs are associated with permission metadata, those permissions are also re-ingested in the search index if permissions change in the underlying data. For more information, see [Re-indexing ACL and RBAC scope with ADLS Gen2 indexers](search-indexer-access-control-lists-and-role-based-access.md#keep-aclrbac-metadata-in-sync-with-the-data-source).
214+
If the data source is Azure Data Lake Storage (ADLS) Gen2, and the blobs are associated with permission metadata, those permissions are also re-ingested in the search index if permissions change in the underlying data. For more information, see [Re-indexing ACL and RBAC scope with ADLS Gen2 indexers](search-indexer-access-control-lists-and-role-based-access.md#synchronize-permissions-between-indexed-and-source-content).
215215

216216
If the document is enriched through a skillset and has cached data, the skillset is invoked for just the specified documents, and the cache is updated for the reprocessed documents.
217217

articles/search/search-indexer-access-control-lists-and-role-based-access.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ This article supplements [**Index data from ADLS Gen2**](search-howto-index-azu
5454
+ [Debug sessions](cognitive-search-debug-session.md)
5555
+ One-to-many [parsing modes](/rest/api/searchservice/indexers/create?view=rest-searchservice-2025-05-01-preview&preserve-view=true#blobindexerparsingmode), such as: `delimitedText`, `jsonArray`, `jaonLines`, and `markdown` with sub-mode `oneToMany`
5656

57-
## Supported ADLS Gen2 permission features
57+
## Support for the permission model
5858

5959
This section compares document-level access control features between ADLS Gen2 and Azure AI Search. It highlights which ADLS Gen2 access control mechanisms are supported or mapped when integrating with AI Search, helping you understand how permissions are enforced at the document level.
6060

@@ -84,7 +84,7 @@ The indexer fetches ACLs from each container and directory, resolves them into t
8484
=> Data.txt effective access
8585
```
8686

87-
## Configure ADLS Gen2 for indexing permission metadata
87+
## Configure ADLS Gen2
8888

8989
An indexer can retrieve ACLs on a storage account if the following criteria are met. For more information about ACL assignments, see [ADLS Gen2 ACL assignments](/azure/storage/blobs/data-lake-storage-access-control#how-to-set-acls).
9090

@@ -122,7 +122,7 @@ Here's a diagram of the ACL assignment structure for the [fictitious directory h
122122

123123
Over time, as any new ACL assignments are added or modified, repeat the above steps to ensure proper propagation and permissions alignment. Updated permissions in ADLS Gen2 are updated in the search index when you re-ingest the content using the indexer.
124124

125-
## Configure Azure AI Search for indexing permission metadata
125+
## Configure Azure AI Search
126126

127127
Recall that the search service must have:
128128

@@ -135,11 +135,11 @@ For indexer execution, the client issuing the API call must have **Search Servic
135135

136136
If you're testing locally, you should have the same role assignments. For more information, see [Connect to Azure AI Search using roles](search-security-rbac.md).
137137

138-
## Index permission metadata
138+
## Configure indexing
139139

140140
In Azure AI Search, configure an indexer, data source, and index to pull permission metadata from ADLS Gen2 blobs.
141141

142-
### Configure the data source
142+
### Create the data source
143143

144144
This section supplements [**Index data from ADLS Gen2**](search-howto-index-azure-data-lake-storage.md) with information that's specific to ingesting permissions alongside document content into an Azure AI Search index.
145145

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ titleSuffix: Azure AI Search
44
description: Learn how query-time ACL and RBAC enforcement ensures secure document retrieval in Azure AI Search for indexes containing permission filters from Azure Data Lake Storage (ADLS) Gen2 data sources.
55
ms.service: azure-ai-search
66
ms.topic: conceptual
7-
ms.date: 05/15/2025
7+
ms.date: 07/16/2025
88
author: mattgotteiner
99
ms.author: magottei
1010
---
@@ -13,25 +13,27 @@ ms.author: magottei
1313

1414
Query-time access control ensures that users only retrieve search results they're authorized to access, based on their identity, group memberships, roles, or attributes. This functionality is essential for secure enterprise search and compliance-driven workflows.
1515

16-
Azure Data Lake Storage (ADLS) Gen2 provides an access model that makes fine-grained access control easier to implement, but you can use other data sources, providing you use the push APIs and you send documents that include permission metadata alongside other indexable fields.
16+
Azure Data Lake Storage (ADLS) Gen2 provides an access model that makes fine-grained access control easier to implement, but you can use other data sources, providing you [use the push APIs](search-index-access-control-lists-and-rbac-push-api.md) and you send documents that include permission metadata alongside other indexable fields.
17+
18+
This article explains how to set up queries that use permission metadata to filter results.
1719

1820
## Requirements
1921

2022
- Permission metadata must be in `filterable` string fields. You won't use the filter in your queries, but the search engine builds a filter internally to exclude unauthorized content.
2123

2224
- Permission metadata must consist of either POSIX-style permissions that identify the level of access and the group or user ID, or the resource ID of the container in ADLS Gen2 if you're using RBAC scope.
2325

24-
- For ADLS Gen2 data sources, you must have configured Access Control Lists (ACLs) and/or Azure role-based access control (RBAC) roles at the container level. You can use a [built-in indexer](search-indexer-access-control-lists-and-role-based-access.md) or [Push APIs](search-index-access-control-lists-and-rbac-push-api.md) to index permission metadata in your index.
26+
- For ADLS Gen2 data sources, you must have configured Access Control Lists (ACLs) and/or Azure role-based access control (RBAC) roles at the container level. For blob data sources, your have role assignments on the container. You can use a [built-in indexer](search-indexer-access-control-lists-and-role-based-access.md) or [Push APIs](search-index-access-control-lists-and-rbac-push-api.md) to index permission metadata in your index.
2527

26-
- Use the 2025-05-01-preview REST API or a prerelease package of an Azure SDK to query the index. This API version supports internal queries that filter out unauthorized results.
28+
- Use the 2025-05-01-preview REST API or a preview package of an Azure SDK to query the index. This API version supports internal queries that filter out unauthorized results.
2729

2830
## How query-time enforcement works
2931

3032
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.
3133

3234
### 1. User permissions input
3335

34-
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:
36+
The end-user application includes a query access token as part of the search query request, and that access token is typically the identity of the user. The following table lists the source of the user permissions supported by Azure AI Search for ACL enforcement:
3537

3638
| Permission type | Source |
3739
| - | - |
@@ -41,13 +43,13 @@ The end-user application sends user permission as part of the search query reque
4143

4244
### 2. Security filter construction
4345

44-
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.
46+
Internally, 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.
4547

46-
For Azure RBAC, permissions are lists of resource ID strings. 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.
48+
For Azure RBAC, permissions are lists of resource ID strings. There must be an Azure role assignment (Storage Blob Data Reader) on the data 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.
4749

4850
### 3. Results filtering
4951

50-
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.
52+
The security filter efficiently matches the userIds, groupIds, and rbacScope from the request 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.
5153

5254
## Limitations
5355

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ In this tutorial, use a system-assigned managed identity for the authenticated c
154154

155155
## Create and run the indexer
156156

157-
Indexer configuration for permission ingestion is primarily about defining `fieldMappings` from [permission metadata](search-indexer-access-control-lists-and-role-based-access.md#indexing-permission-metadata).
157+
Indexer configuration for permission ingestion is primarily about defining `fieldMappings` from [permission metadata](search-indexer-access-control-lists-and-role-based-access.md#).
158158

159159
```json
160160
{

0 commit comments

Comments
 (0)