Azure AI Search supporta il controllo degli accessi basato su role tramite Microsoft Entra ID. L'accesso in base al ruolo è facoltativo, ma consigliato. L'alternativa è l'autenticazione basata su chiave, ovvero l'impostazione predefinita.
Se si assegnano più ruoli a un principale di sicurezza, le autorizzazioni vengono combinate. Le assegnazioni di ruolo si applicano a tutti gli strumenti e alle librerie client.
Questo articolo illustra come assegnare ruoli integrati per l'amministrazione dei servizi, lo sviluppo e l'accesso di sola lettura alle query e al recupero. Vengono inoltre illustrati i passaggi per la creazione di ruoli personalizzati e il test delle assegnazioni di ruolo.
Prerequisiti
Un servizio Azure AI Search (qualsiasi area e livello) con accesso in base ai ruoli abilitato.
Autorizzazione ad assegnare ruoli di Azure. Uno dei ruoli seguenti funziona:
Esaminare le istruzioni per l'assegnazione di ruolo per il client preferito:
Identificare il valore assegnato richiesto dal client preferito. A seconda del client e del tipo di assegnatario, questo valore potrebbe essere un nome dell'entità utente, un ID oggetto del gruppo, un nome dell'entità servizio, un ID applicazione dell'entità servizio o un ID oggetto di Microsoft Entra.
Ruoli predefiniti
I ruoli sono una raccolta di autorizzazioni che influiscono sul piano di controllo o sul piano dati:
Piano di controllo: Operazioni per il provisioning, la configurazione e l'amministrazione del servizio. Le operazioni del piano di controllo includono la creazione o l'eliminazione di servizi di ricerca, l'elenco delle chiavi API e la gestione delle impostazioni di rete e autenticazione. Disponibile tramite le API REST Azure Resource Manager, Search Management REST API e librerie client Azure SDK equivalenti.
Piano dati: Operazioni sull'endpoint del servizio di ricerca. Le operazioni del piano dati rientrano in due categorie: gestione degli oggetti e accesso al contenuto. Disponibile tramite le API REST del servizio Search e le librerie client Azure SDK equivalenti.
Descrizioni dei ruoli
I ruoli predefiniti seguenti concedono le autorizzazioni per Azure AI Search. I ruoli del piano di controllo sono sempre disponibili, mentre i ruoli del piano dati richiedono l'abilitazione dell'accesso in base al ruolo nel servizio di ricerca. È possibile combinare ruoli predefiniti per un accesso più ampio o creare un ruolo personalizzato con le autorizzazioni specifiche necessarie.
| Ruolo |
Aereo |
Descrizione |
|
Proprietario |
Controllo |
- Accesso completo al piano di controllo, inclusa la possibilità di assegnare ruoli e modificare le impostazioni di autenticazione.
- Per impostazione predefinita, gli amministratori delle sottoscrizioni hanno questo ruolo.
- Può gestire le chiavi API.
- Non è possibile creare oggetti di ricerca, caricare documenti, indici di query o recuperare da knowledge base.
|
|
Collaboratore |
Controllo |
- Stesso livello di accesso al piano di controllo concesso al Proprietario, tranne per la possibilità di assegnare ruoli.
|
|
Lettore |
Controllo |
- Accesso al piano di controllo di sola lettura.
- Può visualizzare le metriche del servizio e le definizioni degli oggetti.
- Non è possibile visualizzare o gestire chiavi API, caricare documenti, indici di query o recuperare dalle knowledge base.
|
|
Collaboratore servizi di ricerca |
Controllo e dati |
- Accesso completo al piano di controllo. L'accesso al piano dati è limitato alla gestione degli oggetti.
- Può creare indici, indicizzatori, set di competenze, knowledge base e altri oggetti di ricerca.
- Non è possibile caricare documenti, eseguire query sugli indici o recuperarli dalle knowledge base.
- Per l'elenco completo delle autorizzazioni, vedere
Microsoft.Search/searchServices/*.
|
|
Collaboratore ai dati dell'indice di ricerca |
Data |
- Accesso al contenuto in lettura/scrittura.
- Può caricare documenti, eseguire query sugli indici e recuperarli dalle knowledge base.
- Non è possibile modificare le definizioni degli oggetti o recuperare le chiavi di amministrazione.
|
|
Lettore di dati dell'indice di ricerca |
Data |
- Accesso al contenuto in modalità sola lettura.
- Può eseguire query sugli indici e recuperare dalle knowledge base.
- Non è possibile caricare documenti, modificare le definizioni degli oggetti o recuperare le chiavi di amministrazione.
|
Importante
- Proprietario, Collaboratore e Collaboratore del Servizio di Ricerca possono recuperare le chiavi di amministratore, che forniscono l'accesso completo in lettura/scrittura al piano dati. Concedere questi ruoli solo agli utenti attendibili.
- Per impostazione predefinita, i ruoli del piano dati si applicano a tutti gli indici nel servizio di ricerca. Per limitare l'ambito del Contributore di dati dell'indice di ricerca o del Lettore di dati dell'indice di ricerca a un singolo indice, consultare Concedere l'accesso a un singolo indice.
Riepilogo delle autorizzazioni
Usare la tabella seguente per trovare rapidamente il ruolo che fornisce le autorizzazioni necessarie.
| Autorizzazioni |
Proprietario/Collaboratore |
Reader |
Collaboratore servizi di ricerca |
Collaboratore ai dati dell'indice di ricerca |
Lettore di dati dell'indice di ricerca |
| Creare e configurare servizi Azure AI Search |
✅ |
❌ |
✅ |
❌ |
❌ |
| Accedere al servizio nel portale di Azure |
✅ |
✅ |
✅ |
❌ |
❌ |
| Visualizzare le proprietà, le metriche e l'endpoint del servizio |
✅ |
✅ |
✅ |
❌ |
❌ |
| Elencare tutti gli oggetti nel servizio |
✅ |
✅ |
✅ |
❌ |
❌ |
| Quote di accesso e statistiche del servizio |
✅ |
❌ |
✅ |
❌ |
❌ |
| Visualizzare, copiare e rigenerare le chiavi |
✅ |
❌ |
✅ |
❌ |
❌ |
| Impostare le opzioni di autenticazione |
✅ |
❌ |
✅ |
❌ |
❌ |
| Visualizzare ruoli, criteri e definizioni |
✅ |
✅ |
✅ |
❌ |
❌ |
| Configurare la sicurezza di rete e le connessioni private |
✅ |
❌ |
✅ |
❌ |
❌ |
| Creare, eseguire e gestire gli oggetti di ricerca 1 |
❌ |
❌ |
✅ |
❌ |
❌ |
| Caricare i dati per l'indicizzazione 2 |
❌ |
❌ |
❌ |
✅ |
❌ |
| Eseguire una query su un indice |
❌ |
❌ |
❌ |
✅ |
✅ |
| Estrarre da una base di conoscenza |
❌ |
❌ |
❌ |
✅ |
✅ |
| Ignorare i filtri di autorizzazione con lettura con privilegi elevati |
❌ |
❌ |
❌ |
✅ |
❌ |
1 Include indici, indicizzatori, origini dati, insiemi di competenze, alias, mappe sinonimiche, sessioni di debug, knowledge base e fonti di conoscenza. Gli indicizzatori supportano anche operazioni di esecuzione e reimpostazione.
2 Un proprietario o un collaboratore può eseguire la procedura guidata Importa dati per creare e caricare indici, anche se non possono caricare documenti in altri client. Analogamente, gli indicizzatori possono scrivere in qualsiasi indice nel servizio di ricerca, indipendentemente dalle assegnazioni di ruolo per indice. In entrambi i casi, il servizio di ricerca (non l'utente) esegue le azioni del piano dati usando le autorizzazioni Microsoft.Search/searchServices/indexes/documents/*.
Assegnare ruoli predefiniti
In questa sezione si assegnano ruoli per:
Assegnare ruoli per l'amministrazione del servizio
I ruoli seguenti consentono di creare, configurare e gestire un servizio di ricerca. Questi ruoli sono gerarchici, quindi selezionare uno in base al livello di accesso necessario.
| Ruolo |
Documento d'identità |
|
Proprietario |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
|
Collaboratore |
b24988ac-6180-42a0-ab88-20f7382dd24c |
|
Lettore |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Passare al servizio di ricerca nel portale Azure.
Nel riquadro sinistro selezionare Controllo di accesso (IAM).
Selezionare + Aggiungi>Aggiungi assegnazione di ruolo.
Selezionare un ruolo: Proprietario, Collaboratore o Lettore.
Nella scheda Members selezionare l'identità dell'utente o del gruppo Microsoft Entra. Se si configurano le autorizzazioni per un altro servizio Azure, selezionare un'identità gestita assegnata dal sistema o assegnata dall'utente.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Accedere alla sottoscrizione di Azure.
az login
Creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. Specificare l'assegnatario e l'ambito.
az role assignment create \
--assignee <assignee> \
--role "Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Riferimento:az role assignment create
Importare il modulo richiesto e connettersi all'account Azure.
Import-Module Az.Resources
Connect-AzAccount
Creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. In questo esempio viene usato un nome di accesso utente.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Riferimento:New-AzRoleAssignment
Apri una shell di comando e accedi alla tua sottoscrizione di Azure.
az login
Ottenere un token di accesso per Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Inviare una richiesta PUT per creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. Impostare principalType su User, Groupo ServicePrincipal in modo che corrisponda all'assegnatario.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Riferimento:Assegnazioni di ruolo - Crea
Assegnare ruoli per lo sviluppo
I ruoli seguenti consentono di creare oggetti di ricerca, caricare documenti, indici di query e recuperare dalle knowledge base. Assegnare tutti e tre i ruoli per coprire l'intera gamma di attività di sviluppo.
Passare al servizio di ricerca nel portale Azure.
Nel riquadro sinistro selezionare Controllo di accesso (IAM).
Selezionare + Aggiungi>Aggiungi assegnazione di ruolo.
Selezionare Collaboratore servizio di ricerca.
Nella scheda Members selezionare l'identità dell'utente o del gruppo Microsoft Entra. Se si configurano le autorizzazioni per un altro servizio Azure, selezionare un'identità gestita assegnata dal sistema o assegnata dall'utente.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Ripeti questi passaggi per assegnare Search Index Data Contributor e Search Index Data Reader.
Accedere alla sottoscrizione di Azure.
az login
Creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. Specificare l'assegnatario e l'ambito.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Riferimento:az role assignment create
(Facoltativo) Creare un'assegnazione di ruolo nell'ambito di un indice. Specificare l'assegnatario e l'ambito.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Riferimento:az role assignment create
Importare il modulo richiesto e connettersi all'account Azure.
Import-Module Az.Resources
Connect-AzAccount
Creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. In questo esempio viene usato un nome di accesso utente.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Riferimento:New-AzRoleAssignment
(Facoltativo) Creare un'assegnazione di ruolo nell'ambito di un indice. In questo esempio viene usato un nome di accesso utente.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Riferimento:New-AzRoleAssignment
Apri una shell di comando e accedi alla tua sottoscrizione di Azure.
az login
Ottenere un token di accesso per Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Inviare una richiesta PUT per creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. Impostare principalType su User, Groupo ServicePrincipal in modo che corrisponda all'assegnatario.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Riferimento:Assegnazioni di ruolo - Crea
(Facoltativo) Invia una richiesta PUT per creare un'assegnazione di un ruolo con ambito limitato a un indice.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Riferimento:Assegnazioni di ruolo - Crea
Assegnare ruoli per l'accesso in sola lettura
Usare il ruolo seguente per le app e i processi che richiedono solo l'accesso in lettura agli indici e alle knowledge base. Le operazioni supportate includono la ricerca, la ricerca, il completamento automatico e i suggerimenti per gli indici e il recupero per le knowledge base.
Passare al servizio di ricerca nel portale Azure.
Nel riquadro sinistro selezionare Controllo di accesso (IAM).
Selezionare + Aggiungi>Aggiungi assegnazione di ruolo.
Selezionare il ruolo Lettore dati indice di ricerca .
Nella scheda Members selezionare l'identità dell'utente o del gruppo Microsoft Entra. Se si configurano le autorizzazioni per un altro servizio Azure, selezionare un'identità gestita assegnata dal sistema o assegnata dall'utente.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Accedere alla sottoscrizione di Azure.
az login
Creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. Specificare l'assegnatario e l'ambito.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Riferimento:az role assignment create
(Facoltativo) Creare un'assegnazione di ruolo nell'ambito di un indice. Specificare l'assegnatario e l'ambito.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Riferimento:az role assignment create
Importare il modulo richiesto e connettersi all'account Azure.
Import-Module Az.Resources
Connect-AzAccount
Creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. In questo esempio viene usato un nome di accesso utente.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Riferimento:New-AzRoleAssignment
(Facoltativo) Creare un'assegnazione di ruolo nell'ambito di un indice. In questo esempio viene usato un nome di accesso utente.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Riferimento:New-AzRoleAssignment
Apri una shell di comando e accedi alla tua sottoscrizione di Azure.
az login
Ottenere un token di accesso per Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Inviare una richiesta PUT per creare un'assegnazione di ruolo nell'ambito del servizio di ricerca. Impostare principalType su User, Groupo ServicePrincipal in modo che corrisponda all'assegnatario.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Riferimento:Assegnazioni di ruolo - Crea
(Facoltativo) Invia una richiesta PUT per creare un'assegnazione di un ruolo con ambito limitato a un indice.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Riferimento:Assegnazioni di ruolo - Crea
Testare le assegnazioni di ruolo
Usare un client per testare le assegnazioni di ruolo. Tenere presente che i ruoli sono cumulativi. Non è possibile eliminare o negare ruoli ereditati con ambito a livello di sottoscrizione o di gruppo di risorse a livello di risorsa (servizio di ricerca).
Prima di procedere, configurare l'applicazione per le connessioni senza chiave e disporre di assegnazioni di ruolo.
Passare al servizio di ricerca nel portale Azure.
Nel riquadro sinistro selezionareIndici> per testare le autorizzazioni correlate all'indice:
I collaboratori del servizio di ricerca possono creare, modificare ed eliminare oggetti di ricerca, ma non possono caricare documenti o eseguire query. Per verificare le autorizzazioni, creare un indice di ricerca.
I collaboratori ai dati dell'indice di ricerca possono caricare documenti. Nel portale di Azure non esiste un'opzione per caricare i documenti tranne la procedura guidata Importa dati, ma è possibile reimpostare ed eseguire un indicizzatore per confermare le autorizzazioni al caricamento dei documenti.
I lettori di dati dell'indice di ricerca possono eseguire query sugli indici. Per verificare le autorizzazioni, usare Esplora ricerche. Dovrebbe essere possibile inviare query e visualizzare i risultati, ma non è consigliabile visualizzare le definizioni di indice o creare indici.
Questo approccio presuppone Visual Studio Code con l'estensione client REST.
Aprire una shell dei comandi per interfaccia della riga di comando di Azure e accedere alla sottoscrizione di Azure.
az login
Ottenere un token di accesso per il piano dati Azure AI Search.
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
Incollare queste variabili in un nuovo file di testo in Visual Studio Code.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
@index-name = PASTE-YOUR-INDEX-NAME-HERE
@token = PASTE-YOUR-TOKEN-HERE
Inviare una richiesta che usi le variabili specificate. Per il ruolo Lettore dati dell'indice di ricerca, è possibile inviare una query usando qualsiasi versione dell'API supportata.
POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2026-04-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"queryType": "simple",
"search": "motel",
"filter": "",
"select": "HotelName,Description,Category,Tags",
"count": true
}
Informazioni di riferimento:Cerca documenti
Una query con esito positivo restituisce i risultati della ricerca con documenti corrispondenti. Se l'indice è vuoto o non ha corrispondenze, value contiene una matrice vuota.
Installare i pacchetti necessari.
dotnet add package Azure.Search.Documents
dotnet add package Azure.Identity
Usare Azure. Identità per .NET per l'autenticazione del token. Microsoft consiglia DefaultAzureCredential() per la maggior parte degli scenari.
Di seguito è riportato un esempio di connessione client tramite DefaultAzureCredential().
// Create a SearchIndexClient to send create/delete index commands
// Requires Search Service Contributor role
SearchIndexClient adminClient = new SearchIndexClient(serviceEndpoint, new DefaultAzureCredential());
// Create a SearchClient to load and query documents
// Requires Search Index Data Contributor (load) or Search Index Data Reader (query)
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, new DefaultAzureCredential());
Reference:SearchClient, SearchIndexClient, DefaultAzureCredential
Ecco un altro esempio di uso delle credenziali dei segreti client.
var tokenCredential = new ClientSecretCredential(aadTenantId, aadClientId, aadSecret);
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, tokenCredential);
Ecco un esempio di esecuzione di una query.
SearchResults<SearchDocument> response = srchclient.Search<SearchDocument>("motel");
foreach (SearchResult<SearchDocument> result in response.GetResults())
{
Console.WriteLine(result.Document["HotelName"]);
}
Una query con esito positivo restituisce i risultati della ricerca. Se nessun documento corrisponde, la raccolta dei risultati è vuota.
Installare i pacchetti necessari.
pip install azure-search-documents azure-identity
Usare Azure. Identità per Python per l'autenticazione del token.
Usare DefaultAzureCredential se il client Python è un'applicazione che esegue il lato server. Abilitare l’autenticazione interattiva se l'app viene eseguita in un browser.
Ecco un esempio.
from azure.search.documents import SearchClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
endpoint = "https://<mysearch>.search.windows.net"
index_name = "myindex"
client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential)
Reference:SearchClient, DefaultAzureCredential
Aggiungere le dipendenze necessarie all'oggetto pom.xml.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-search-documents</artifactId>
<version>11.7.4</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.0</version>
</dependency>
Usare Azure. Identità per Java per l'autenticazione del token.
Usare DefaultAzureCredential per le app eseguite in Azure.
Concedere l'accesso a un singolo indice
In alcuni scenari, è possibile limitare l'accesso di un'applicazione a una singola risorsa, ad esempio un indice.
Attualmente, il portale di Azure non supporta le assegnazioni di ruolo a livello di indice. Usare il interfaccia della riga di comando di Azure, PowerShell o l'API REST per assegnare ruoli con ambito a un singolo indice.
Accedere alla sottoscrizione di Azure.
az login
Creare un'assegnazione di ruolo limitata a un singolo indice. Specificare l'assegnatario e l'ambito a livello dell'indice.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Riferimento:az role assignment create
Importare il modulo richiesto e connettersi all'account Azure.
Import-Module Az.Resources
Connect-AzAccount
Creare un'assegnazione di ruolo limitata a un singolo indice. In questo esempio viene usato un nome di accesso utente.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Riferimento:New-AzRoleAssignment
Apri una shell di comando e accedi alla tua sottoscrizione di Azure.
az login
Ottenere un token di accesso per Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Inviare una richiesta PUT per creare un'assegnazione di ruolo con ambito a un singolo indice. Impostare principalType su User, Groupo ServicePrincipal in modo che corrisponda all'assegnatario.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Riferimento:Assegnazioni di ruolo - Crea
Ambito per indice e operazioni dell'indicizzatore
Le assegnazioni di ruolo per indice si applicano solo alle operazioni API dirette, ad esempio query o caricamenti di documenti da utenti o applicazioni. Gli indicizzatori non sono limitati dalle autorizzazioni per indice perché operano con credenziali a livello di servizio.
Un utente con il ruolo Collaboratore servizio di ricerca può creare indicizzatori che scrivono in qualsiasi indice nel servizio di ricerca, anche indici in cui tale utente non ha alcuna assegnazione di ruolo per indice.
Per un isolamento rigoroso dei dati tra gli indici, considerare questi approcci:
- Usare servizi di ricerca separati per team o utenti che richiedono l'isolamento a livello di indice.
- Assegnare collaboratore al servizio di ricerca solo agli amministratori che gestiscono gli indicizzatori.
- Usare il controllo di accesso a livello di documento con filtri di sicurezza per limitare i risultati delle query all'interno di un indice condiviso.
Creare un ruolo personalizzato
Se i ruoli predefiniti non forniscono la combinazione corretta di autorizzazioni, è possibile creare un ruolo personalizzato per supportare le operazioni necessarie.
Gli esempi seguenti clonano il lettore dati dell'indice di ricerca e quindi aggiungono la possibilità di elencare gli indici in base al nome. In genere, elencare gli indici in un servizio di ricerca è considerato un diritto amministrativo.
Accedere al portale di Azure e passare al servizio di ricerca.
Nel riquadro sinistro selezionare Controllo di accesso (IAM).
Nella scheda Ruoli, trova Lettore dati indice di ricerca o un altro ruolo, seleziona i tre puntini (...), quindi seleziona Clona.
Nella scheda Basics immettere un nome per il ruolo personalizzato, ad esempio "Cerca indice Esplora dati", quindi selezionare Next.
Nella scheda Autorizzazioni selezionare Aggiungi autorizzazioni.
Nel riquadro Aggiungi autorizzazioni selezionare il riquadro Microsoft Search.
Con Actions selezionata nella parte superiore, impostare le autorizzazioni seguenti:
- In
Microsoft.Search/operations selezionare Read : Elenca tutte le operazioni disponibili.
- In
Microsoft.Search/searchServices/indexes selezionare Read : Read Index.
Passare a Data Actions nella parte superiore e in Microsoft.Search/searchServices/indexes/documents selezionare Read : Read Documents.
La definizione JSON è simile all'esempio seguente:
{
"properties": {
"roleName": "Search Index Data Explorer",
"description": "List all indexes on the service and query them.",
"assignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
],
"permissions": [
{
"actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"notActions": [],
"dataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"notDataActions": []
}
]
}
}
Selezionare Aggiungi per chiudere il riquadro.
Selezionare Rivedi e crea per creare il ruolo.
È ora possibile assegnare utenti e gruppi al ruolo. Per altre informazioni su questi passaggi, vedere Creare o aggiornare Azure ruoli personalizzati usando il portale di Azure.
L'esempio interfaccia della riga di comando di Azure mostra la sintassi JSON per la creazione di un ruolo personalizzato che è un clone del lettore di dati dell'indice di ricerca, ma con la possibilità di elencare tutti gli indici in base al nome. Per istruzioni dettagliate sulla creazione di ruoli personalizzati, vedere Creare o aggiornare Azure ruoli personalizzati usando interfaccia della riga di comando di Azure.
Esaminare l'elenco delle autorizzazioni atomiche per determinare quelle necessarie. Per questo esempio sono necessarie le autorizzazioni seguenti:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Salvare la definizione di ruolo seguente in un file JSON denominato search-index-data-explorer.json. Per Id, specificare un nuovo GUID generato.
{
"Name": "Search Index Data Explorer",
"Id": "<role-definition-guid>",
"IsCustom": true,
"Description": "List all indexes on the service and query them.",
"Actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"NotActions": [],
"DataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
Creare il ruolo personalizzato passando il file JSON a az role definition create.
az role definition create --role-definition @search-index-data-explorer.json
Riferimento:az role definition create
L'esempio di PowerShell mostra la sintassi JSON per la creazione di un ruolo personalizzato che è un clone del lettore di dati dell'indice di ricerca, ma con la possibilità di elencare tutti gli indici in base al nome. Per istruzioni dettagliate sulla creazione di ruoli personalizzati, vedere Creare o aggiornare Azure ruoli personalizzati usando Azure PowerShell.
Esaminare l'elenco delle autorizzazioni atomiche per determinare quelle necessarie. Per questo esempio sono necessarie le autorizzazioni seguenti:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Salvare la definizione di ruolo seguente in un file JSON denominato search-index-data-explorer.json. Per Id, specificare un nuovo GUID generato.
{
"Name": "Search Index Data Explorer",
"Id": "<role-definition-guid>",
"IsCustom": true,
"Description": "List all indexes on the service and query them.",
"Actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"NotActions": [],
"DataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
Creare il ruolo personalizzato passando il file JSON a New-AzRoleDefinition.
New-AzRoleDefinition -InputFile "search-index-data-explorer.json"
Reference:New-AzRoleDefinition
L'esempio di API REST mostra la sintassi JSON per la creazione di un ruolo personalizzato che è un clone del lettore di dati dell'indice di ricerca, ma con la possibilità di elencare tutti gli indici in base al nome. Per istruzioni dettagliate sulla creazione di ruoli personalizzati, vedere Creare o aggiornare Azure ruoli personalizzati usando l'API REST.
Esaminare l'elenco delle autorizzazioni atomiche per determinare quelle necessarie. Per questo esempio sono necessarie le autorizzazioni seguenti:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Creare il ruolo personalizzato inviando la richiesta seguente all'endpoint di definizione del ruolo.
PUT https://management.azure.com/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/<role-definition-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleName": "Search Index Data Explorer",
"description": "List all indexes on the service and query them.",
"type": "CustomRole",
"permissions": [
{
"actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"notActions": [],
"dataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"notDataActions": []
}
],
"assignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
}
Riferimento:Definizioni di ruolo - Creare o aggiornare
Creare criteri di accesso condizionale
Se è necessario applicare criteri dell'organizzazione, ad esempio l'autenticazione a più fattori, usare Accesso condizionale di Microsoft Entra.
Per creare criteri di accesso condizionale per Azure AI Search:
Accedere al portale Azure.
Cerca Accesso condizionale di Microsoft Entra.
Nella pagina Panoramica selezionare Crea nuovo criterio.
In App o azioni cloud aggiungere Azure AI Search come app cloud, a seconda della modalità di configurazione dei criteri.
Aggiorna i parametri rimanenti della tua politica. Ad esempio, specificare a quali utenti e gruppi si applicano i criteri.
Salvare il criterio.
Importante
Se al servizio di ricerca è assegnata un'identità gestita, il servizio di ricerca specifico viene visualizzato come app cloud. Tuttavia, la selezione di tale servizio di ricerca specifico non applica la politica. Selezionare invece l'app cloud Azure AI Search generale per applicare i criteri di accesso condizionale al servizio di ricerca.
Risoluzione dei problemi
Quando si sviluppano applicazioni che usano il controllo degli accessi in base al ruolo per l'autenticazione, potrebbero verificarsi alcuni problemi comuni:
La configurazione predefinita per un servizio di ricerca è l’autenticazione basata su chiave. Se non si modifica questa impostazione su Entrambi o Sul controllo degli accessi in base al ruolo, tutte le richieste che usano l'autenticazione basata su ruoli vengono negate automaticamente, indipendentemente dalle autorizzazioni sottostanti.
Se la richiesta include una chiave API insieme alle credenziali basate sui ruoli, il servizio esegue l'autenticazione usando la chiave. Rimuovere la chiave API dalle intestazioni della richiesta per usare l'autenticazione basata su ruoli.
Se il token di autorizzazione proviene da un'identità gestita e di recente sono state assegnate le autorizzazioni appropriate, l'applicazione delle assegnazioni delle autorizzazioni potrebbe richiedere diverse ore .
Se le query con autorizzazioni a livello di documento non restituiscono i risultati previsti, utilizzare il ruolo di Collaboratore dei dati dell'indice di ricerca o creare un ruolo personalizzato con autorizzazioni elevate per analizzare.
Passo successivo
Questo articolo illustra come assegnare ruoli per le operazioni del piano dati e di controllo su Azure AI Search. Per istruzioni complete sull'aggiunta dell'accesso basato sui ruoli al codice dell'applicazione: