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.
Importante
Queste funzionalità e funzionalità fanno parte dell'API REST 2026-05-01-preview. L'anteprima 2026-05-01-preview è concessa in licenza all'utente come parte della sottoscrizione Azure ed è soggetta ai termini applicabili alle "Anteprime" nei Microsoft Product Terms, nel Microsoft Products and Services Data Protection Addendum ("DPA") e nei Supplemental Terms of Use for Microsoft Azure Previews.
La versione 2026-05-01-preview supporta le connessioni ad altri servizi di servizi Microsoft e di terze parti. L'utilizzo di questi servizi è soggetto alle rispettive condizioni e potrebbe comportare l'elaborazione o l'archiviazione dei dati al di fuori del limite di conformità Azure, nonché il flusso dei dati nel limite di conformità Azure.
L'anteprima 2026-05-01-preview non può modificare le autorizzazioni di accesso impostate al di fuori dell'anteprima 2026-05-01-preview. Se si utilizza la versione 2026-05-01-preview con contenuti soggetti a restrizioni di accesso o autorizzazioni, si verificherà un ritardo prima che la versione 2026-05-01-preview riconosca le modifiche apportate a tali restrizioni di accesso o autorizzazioni.
È tua responsabilità gestire l'eventuale trasferimento dei tuoi dati al di fuori dei confini di conformità e geografici della tua organizzazione e le relative implicazioni, nonché garantire che siano predisposte le autorizzazioni, i limiti e le approvazioni appropriati.
L'utente è responsabile di esaminare e testare attentamente le applicazioni compilate nel contesto dei casi d'uso specifici e di prendere tutte le decisioni e le personalizzazioni appropriate. Ciò include l'implementazione di mitigazioni di intelligenza artificiale responsabili, ad esempio metaprompt, filtri di contenuto o altri sistemi di sicurezza, e garantire che le applicazioni soddisfino gli standard di qualità, affidabilità, sicurezza e attendibilità appropriati. Per altre informazioni, vedere la nota sulla trasparenza Azure AI Search.
Indicizzazione di documenti, insieme agli Elenchi di Controllo Accessi (ACL) e ai ruoli del Controllo Accessi basato sui Ruoli (RBAC) nei contenitori associati, in un indice di Azure AI Search tramite le API REST push, mantiene l'autorizzazione a livello di documento per il contenuto indicizzato al momento della 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.
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.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"
}
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-05-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 come viene determinato l'accesso ai documenti per un utente in base ai valori ACL assegnati a ogni documento. La regola chiave è che un utente deve corrispondere solo a un tipo ACL per ottenere l'accesso al documento. Ad esempio, se un documento contiene campi per userIds, groupIdse rbacScope, l'utente può accedere al documento associando uno di questi campi ACL.
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 di campo ACL del documento specifici. Per la leggibilità, questo scenario usa alias ACL, ad esempio "user1", "group1", anziché 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 confrontando con altri campi ACL |
| 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 |