Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.
Importante
Le funzionalità, le funzionalità o le proprietà contrassegnate (anteprima) non sono coperte da un contratto di servizio, non sono consigliate per i carichi di lavoro di produzione e potrebbero cambiare o essere vincolate prima che diventino disponibili a livello generale. Le condizioni di anteprima Azure AI Search si applicano a tutte le funzionalità di anteprima, indipendente o parte di una funzionalità disponibile a livello generale.
L'inserimento delle autorizzazioni a livello di documento tramite le API REST push (anteprima) consente di indicizzare i documenti insieme ai relativi elenchi di controllo di accesso (ACL) associati e ai ruoli controllo degli accessi in base al ruolo del contenitore. Quando si esegue il push del contenuto in un indice Azure AI Search tramite le API REST push, il servizio mantiene tali autorizzazioni per il contenuto indicizzato e le applica in fase di query.
Le funzionalità principali includono:
- Controllo flessibile sulle pipeline di inserimento.
- Schema standardizzato per i metadati delle autorizzazioni.
- Supporto per autorizzazioni gerarchica, ad esempio ACL a livello di cartella.
Questo articolo illustra come usare l'API REST push per indicizzare i metadati delle autorizzazioni a livello di documento in Azure AI Search. Questo processo prepara l'indice per eseguire query e applicare le autorizzazioni degli utenti finali ai risultati di ricerca.
Prerequisiti
Contenuto con metadati ACL da Microsoft Entra ID o da un altro sistema ACL di tipo POSIX. Per i campi ACL
userIdsegroupIds, usare gli ID oggetto di Microsoft Entra (GUID) e non gli UPN o gli indirizzi di posta elettronica. Gli ID oggetto stabile garantiscono la corrispondenza affidabile delle identità in fase di query, anche se gli attributi della directory cambiano.L'API REST latest preview o un pacchetto Azure SDK di anteprima che fornisce funzionalità equivalenti.
Schema di indice con
permissionFilterOptionabilitato, oltre apermissionFilterattributi di campo che memorizzano le autorizzazioni del documento.
Limitazioni
Un campo ACL con tipo di
userIdsfiltro di autorizzazione ogroupIdspuò contenere al massimo 1000 valori.Un indice può contenere al massimo cinque valori univoci tra i campi di tipo
rbacScopein tutti i documenti. Non esiste alcun limite al numero di documenti che condividono lo stesso valore dirbacScope.È possibile aggiornare un campo esistente per includere un'assegnazione
permissionFilterper il filtro dei metadati ACL o RBAC predefinito. Per abilitare il filtro in base a un indice esistente, aggiungere nuovi campi o aggiornare i campi esistenti per includere unpermissionFiltervalore.Un solo campo di ogni
permissionFiltertipo (uno digroupIds,userIdserbacScope) può esistere in un indice.Ogni
permissionFiltercampo deve esserefilterableimpostato sutrue.L'applicazione delle autorizzazioni al momento della query riflette i valori ACL scritti più di recente nell'indice. Se le autorizzazioni di origine cambiano, tali aggiornamenti non vengono riflessi fino a quando non si esegue il ripristino o l'aggiornamento dei documenti interessati. Pianificare la ripetizione incrementale o gli aggiornamenti parziali per mantenere aggiornati gli elenchi di controllo di accesso.
Questa funzionalità non è attualmente supportata nel portale di Azure.
Creare un indice con campi di filtro delle autorizzazioni
L'indicizzazione degli ACL del documento e dei metadati RBAC con l'API REST richiede la configurazione di uno schema di indice che abilita i filtri di autorizzazione e include campi con assegnazioni di filtro delle autorizzazioni.
Per prima cosa, aggiungere permissionFilterOption. I valori validi sono enabled o disablede è necessario impostarlo su enabled. È possibile passare a disabled se si vuole disattivare la funzionalità di filtro delle autorizzazioni a livello di indice.
In secondo luogo, creare campi stringa per i metadati delle autorizzazioni e includere permissionFilter. Tenere presente che è possibile avere uno di ogni tipo di filtro delle autorizzazioni.
Ecco uno schema di esempio di base che include tutti i permissionFilter tipi:
{
"fields": [
{ "name": "UserIds", "type": "Collection(Edm.String)", "permissionFilter": "userIds", "filterable": true },
{ "name": "GroupIds", "type": "Collection(Edm.String)", "permissionFilter": "groupIds", "filterable": true },
{ "name": "RbacScope", "type": "Edm.String", "permissionFilter": "rbacScope", "filterable": true },
{ "name": "DocumentId", "type": "Edm.String", "key": true }
],
"permissionFilterOption": "enabled"
}
Per i repository aziendali, ad esempio SharePoint Online, risolvere le autorizzazioni a livello di documento o di cartella negli ID oggetto utente e gruppo di Microsoft Entra durante l'acquisizione prima di chiamare l'API push. È quindi necessario archiviare tali ID nei campi di autorizzazione corrispondenti.
Esempio di indicizzazione dell'API REST
Dopo aver creato un indice con campi di filtro autorizzazioni, è possibile popolare tali valori usando l'API di indicizzazione push, esattamente come qualsiasi altro campo del documento. Di seguito è riportato un esempio che usa lo schema di indice specificato, in cui ogni documento specifica l'azione di indicizzazione, il campo chiave (DocumentId) e i campi di autorizzazione. I documenti devono includere anche contenuto, ma tale campo viene omesso in questo esempio per brevità.
POST https://exampleservice.search.windows.net/indexes('indexdocumentsexample')/docs/search.index?api-version=2026-08-01-preview
{
"value": [
{
"@search.action": "upload",
"DocumentId": "1",
"UserIds": ["00aa00aa-bb11-cc22-dd33-44ee44ee44ee", "11bb11bb-cc22-dd33-ee44-55ff55ff55ff", "22cc22cc-dd33-ee44-ff55-66aa66aa66aa"],
"GroupIds": ["none"],
"RbacScope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01"
},
{
"@search.action": "merge",
"DocumentId": "2",
"UserIds": ["all"],
"GroupIds": ["33dd33dd-ee44-ff55-aa66-77bb77bb77bb", "44ee44ee-ff55-aa66-bb77-88cc88cc88cc"]
},
{
"@search.action": "mergeOrUpload",
"DocumentId": "3",
"UserIds": ["1cdd8521-38cf-49ab-b483-17ddaa48f68f"],
"RbacScope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-03"
}
]
}
Regole di determinazione dell'accesso ACL
Questa sezione illustra in che modo il sistema determina l'accesso ai documenti di un utente in base ai campi di autorizzazione per ogni documento. Questi campi sono ACL (userIds e , dove groupIds includono gruppi di sicurezza e Gruppi di Microsoft 365) o un ambito RBAC (groupIdsrbacScope). Azure valuta l'ambito RBAC e gli ACL in un ordine definito, coerente con il modello di autorizzazioni ADLS Gen2.
Un utente ottiene l'accesso soddisfacendo uno dei campi seguenti: una voce corrispondente in userIds o groupIds, oppure un'assegnazione di ruolo Azure idonea per il rbacScope. Per informazioni su come viene fornita l'identità del chiamante al momento della query, vedere Applicazione di ACL e RBAC al momento della query.
Valori ACL speciali "all" e "none"
I campi ACL, ad esempio userIds e groupIds, in genere contengono elenchi di GUID (Identificatori univoci globali) che identificano utenti e gruppi con accesso al documento. Per questi tipi di campo ACL sono supportati due valori stringa speciali, "all" e "none". Questi valori fungono da filtri generali per controllare l'accesso a livello globale, come illustrato nella tabella seguente.
| userIds/groupIds value | Significato |
|---|---|
["all"] |
Qualsiasi utente può accedere al documento |
["none"] |
Nessun utente può accedere al documento associando questo tipo di ACL |
| [] (matrice vuota) | Nessun utente può accedere al documento associando questo tipo di ACL |
Poiché un utente deve corrispondere a un solo tipo di campo, il valore speciale "all" concede l'accesso pubblico indipendentemente dagli altri valori di campo ACL. Al contrario, l'impostazione userIds su "none" o una matrice vuota indica che nessun utente ha accesso al documento in base all'ID utente. Potrebbero comunque essere concessi l'accesso tramite l'ID del gruppo o i metadati RBAC corrispondenti.
Esempio di controllo di accesso
In questo esempio viene illustrato come vengono risolte le regole di accesso ai documenti in base ai valori dei campi di autorizzazione in userIds, groupIdse rbacScope. Per facilitare la lettura, in questo scenario si usano alias come "user1" e "group1" anziché GUID; nell'ambiente di produzione, usare gli ID oggetto di Microsoft Entra (GUID).
| Documento # | ID utente | ID di gruppo | Ambito RBAC | Elenco utenti consentiti | Nota |
|---|---|---|---|---|---|
| 1 | ["none"] |
[] |
Vuoto | Nessun utente ha accesso | I valori ["none"] e [] si comportano esattamente allo stesso modo |
| 2 | ["none"] |
[] |
scope/to/container1 | Utenti con autorizzazioni RBAC per container1 | Il valore "none" non blocca l'accesso quando altri campi di autorizzazione (groupIds o rbacScope) concedono l'accesso |
| 3 | ["none"] |
["group1", "group2"] |
Vuoto | Membri di gruppo1 o gruppo2 | |
| 4 | ["all"] |
["none"] |
Vuoto | Qualsiasi utente | Qualsiasi utente che fa una query corrisponde al filtro ACL "all", quindi tutti gli utenti hanno accesso. |
| 5 | ["all"] |
["group1", "group2"] |
scope/to/container1 | Qualsiasi utente | Poiché tutti gli utenti corrispondono al filtro "all" per userID, i filtri groupID e RBAC non hanno alcun impatto |
| 6 | ["user1", "user2"] |
["group1"] |
Vuoto | User1, user2 o qualsiasi membro di group1 | |
| 7 | ["user1", "user2"] |
[] |
Vuoto | User1 o user2 |