Connessione a Ricerca di intelligenza artificiale di Azure usando il controllo degli accessi in base al ruolo di Azure

Azure offre un sistema globale di autorizzazione di controllo degli accessi in base al ruolo per tutti i servizi in esecuzione nella piattaforma. In Ricerca di intelligenza artificiale di Azure è possibile usare i ruoli di Azure per:

  • Operazioni del piano di controllo (attività di amministrazione del servizio tramite Azure Resource Manager).

  • Operazioni del piano dati, ad esempio la creazione, il caricamento e l'esecuzione di query sugli indici.

L'accesso per utente ai risultati della ricerca (talvolta definito sicurezza a livello di riga o sicurezza a livello di documento) non è supportato. Come soluzione alternativa, creare filtri di sicurezza che tagliano i risultati in base all'identità utente, rimuovendo i documenti per i quali il richiedente non deve avere accesso.

Nota

In Ricerca di intelligenza artificiale di Azure, "piano di controllo" si riferisce alle operazioni supportate nell'API REST di gestione o nelle librerie client equivalenti. Il "piano dati" si riferisce alle operazioni sull'endpoint del servizio di ricerca, ad esempio l'indicizzazione o le query, o qualsiasi altra operazione specificata nell'API REST di ricerca o nelle librerie client equivalenti.

Vengono compilati i ruoli seguenti. Se questi ruoli non sono sufficienti, creare un ruolo personalizzato.

Ruolo Plane Descrizione
Proprietario Controllo e dati Accesso completo al piano di controllo della risorsa di ricerca, inclusa la possibilità di assegnare ruoli di Azure. Solo il ruolo Proprietario può abilitare o disabilitare le opzioni di autenticazione o gestire i ruoli per altri utenti. Gli amministratori delle sottoscrizioni sono membri per impostazione predefinita.

Nel piano dati, questo ruolo ha lo stesso accesso del ruolo Collaboratore del servizio di ricerca. Include l'accesso a tutte le azioni del piano dati, ad eccezione della possibilità di eseguire query o indicizzare documenti.
Collaboratore Controllo e dati Stesso livello di accesso del piano di controllo a Proprietario, meno la possibilità di assegnare ruoli o modificare le opzioni di autenticazione.

Nel piano dati, questo ruolo ha lo stesso accesso del ruolo Collaboratore del servizio di ricerca. Include l'accesso a tutte le azioni del piano dati, ad eccezione della possibilità di eseguire query o indicizzare documenti.
Lettore Controllo e dati Accesso in lettura nell'intero servizio, incluse le metriche di ricerca, le metriche del contenuto (archiviazione utilizzata, il numero di oggetti) e le definizioni degli oggetti delle risorse del piano dati (indici, indicizzatori e così via). Tuttavia, non può leggere le chiavi API o leggere il contenuto all'interno degli indici.
Collaboratore servizi di ricerca Controllo e dati Accesso in lettura/scrittura alle definizioni di oggetti (indici, mappe sinonimiche, indicizzatori, origini dati e set di competenze). Vedere Microsoft.Search/searchServices/* per l'elenco delle autorizzazioni. Questo ruolo non può accedere al contenuto in un indice, quindi non è possibile eseguire query o indici, ma può creare, eliminare ed elencare indici, restituire definizioni di indice e statistiche e analizzatori di test. Questo ruolo è destinato agli amministratori del servizio di ricerca che devono gestire il servizio di ricerca e i relativi oggetti, ma senza accesso al contenuto.
Collaboratore ai dati dell'indice di ricerca Dati Accesso in lettura/scrittura al contenuto in tutti gli indici nel servizio di ricerca. Questo ruolo è destinato agli sviluppatori o ai proprietari di indici che devono importare, aggiornare o eseguire query sulla raccolta documenti di un indice.
Lettore di dati dell'indice di ricerca Dati Accesso di sola lettura a tutti gli indici di ricerca nel servizio di ricerca. Questo ruolo è destinato ad app e utenti che eseguono query.

Nota

Se si disabilita l'accesso in base al ruolo di Azure, i ruoli predefiniti per il piano di controllo (Proprietario, Collaboratore, Lettore) continuano a essere disponibili. La disabilitazione del controllo degli accessi in base al ruolo di Azure rimuove solo le autorizzazioni correlate ai dati associate a tali ruoli. In uno scenario con controllo degli accessi in base al ruolo disabilitato, collaboratore al servizio di ricerca equivale a Collaboratore piano di controllo.

Limiti

  • L'adozione del controllo degli accessi in base al ruolo potrebbe aumentare la latenza di alcune richieste. Ogni combinazione univoca di risorsa del servizio (indice, indicizzatore e così via) e entità servizio usata in una richiesta attiva un controllo di autorizzazione. Questi controlli di autorizzazione possono aggiungere fino a 200 millisecondi di latenza a una richiesta.

  • In rari casi in cui le richieste provengono da un numero elevato di entità servizio diverse, tutte destinate a risorse del servizio diverse (indici, indicizzatori e così via), è possibile che i controlli di autorizzazione comportino una limitazione. La limitazione si verifica solo se vengono usate centinaia di combinazioni univoche di risorse del servizio di ricerca e entità servizio entro un secondo.

Configurare l'accesso in base al ruolo per il piano dati

Si applica a: Collaboratore ai dati dell'indice di ricerca, Lettore dati indice di ricerca, Collaboratore servizio di ricerca

In questo passaggio configurare il servizio di ricerca per riconoscere un'intestazione di autorizzazione nelle richieste di dati che forniscono un token di accesso OAuth2.

  1. Accedere al portale di Azure e aprire la pagina del servizio di ricerca.

  2. Selezionare Chiavi nel riquadro di spostamento a sinistra.

    Screenshot della pagina delle chiavi con le opzioni di autenticazione.

  3. Scegliere un'opzione di controllo di accesso api. È consigliabile eseguire entrambe le operazioni se si vuole flessibilità o se è necessario eseguire la migrazione delle app.

    Opzione Descrizione
    Chiave API (impostazione predefinita). Richiede un amministratore o eseguire query sulle chiavi API nell'intestazione della richiesta per l'autorizzazione. Non vengono usati ruoli.
    Controllo degli accessi in base al ruolo Richiede l'appartenenza a un'assegnazione di ruolo per completare l'attività, descritta nel passaggio successivo. Richiede anche un'intestazione di autorizzazione.
    Entrambi Le richieste sono valide usando una chiave API o un controllo degli accessi in base al ruolo.

La modifica è effettiva immediatamente, ma attendere alcuni secondi prima del test.

Tutte le chiamate di rete per le operazioni del servizio di ricerca e il contenuto rispettano l'opzione selezionata: chiavi API, token di connessione o una se si seleziona Entrambi.

Quando si abilita il controllo degli accessi in base al ruolo nel portale, la modalità di errore è "http401WithBearerChallenge" se l'autorizzazione non riesce.

Assegnazione di ruoli

Le assegnazioni di ruolo sono cumulative e diffuse in tutti gli strumenti e le librerie client. È possibile assegnare ruoli usando uno degli approcci supportati descritti nella documentazione sul controllo degli accessi in base al ruolo di Azure.

Per gestire le assegnazioni di ruolo, è necessario essere proprietario o disporre delle autorizzazioni Microsoft.Authorization/roleAssignments/write.

Le assegnazioni di ruolo nel portale sono a livello di servizio. Se si vogliono concedere autorizzazioni a un singolo indice, usare invece PowerShell o l'interfaccia della riga di comando di Azure.

  1. Accedere al portale di Azure.

  2. Passare al servizio di ricerca.

  3. Selezionare Controllo di accesso (IAM) nel riquadro di spostamento a sinistra.

  4. Selezionare Aggiungi>Aggiungi assegnazione di ruolo.

    Pagina Controllo di accesso (IAM) con il menu Aggiungi assegnazione di ruolo aperto.

  5. Selezionare un ruolo applicabile:

    • Proprietario
    • Collaboratore
    • Lettore
    • Collaboratore servizi di ricerca
    • Collaboratore ai dati dell'indice di ricerca
    • Lettore di dati dell'indice di ricerca
  6. Nella scheda Membri selezionare l'identità dell'utente o del gruppo Microsoft Entra.

  7. Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.

Testare le assegnazioni di ruolo

Usare un client per testare le assegnazioni di ruolo. Tenere presente che i ruoli sono ruoli cumulativi e ereditati che hanno come ambito la sottoscrizione o il gruppo di risorse non possono essere eliminati o negati a livello di risorsa (servizio di ricerca).

Assicurarsi di registrare l'applicazione client con l'ID Microsoft Entra e di disporre di assegnazioni di ruolo prima di testare l'accesso.

  1. Accedere al portale di Azure.

  2. Passare al servizio di ricerca.

  3. Nella pagina Panoramica selezionare la scheda Indici :

    • I collaboratori possono visualizzare e creare qualsiasi oggetto, ma non è possibile eseguire query su un indice usando Esplora ricerche.

    • I lettori di dati dell'indice di ricerca possono usare Esplora ricerche per eseguire query sull'indice. È possibile usare qualsiasi versione dell'API per verificare l'accesso. Dovrebbe essere possibile inviare query e visualizzare i risultati, ma non dovrebbe essere possibile visualizzare la definizione dell'indice.

    • I collaboratori ai dati dell'indice di ricerca possono selezionare Nuovo indice per creare un nuovo indice. Il salvataggio di un nuovo indice verifica l'accesso in scrittura nel servizio.

Testare come utente corrente

Se si è già un collaboratore o proprietario del servizio di ricerca, è possibile presentare un token di connessione per l'identità utente per l'autenticazione in Ricerca di intelligenza artificiale di Azure.

  1. Ottenere un token di connessione per l'utente corrente usando l'interfaccia della riga di comando di Azure:

    az account get-access-token --scope https://search.azure.com/.default
    

    In alternativa, usando PowerShell:

    Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com/"
    
  2. In un nuovo file di testo in Visual Studio Code incollare queste variabili:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Incollare e quindi inviare una richiesta per confermare l'accesso. Ecco uno che esegue una query sull'indice hotels-quickstart

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

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.

Il portale attualmente non supporta le assegnazioni di ruolo a questo livello di granularità, ma può essere eseguita con PowerShell o l'interfaccia della riga di comando di Azure.

In PowerShell usare New-AzRoleAssignment, specificando il nome dell'utente o del gruppo di Azure e l'ambito dell'assegnazione.

  1. Caricare i moduli Azure e AzureAD e connettersi all'account Azure:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Aggiungere un'assegnazione di ruolo con ambito a un singolo indice:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

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

In questo esempio viene clonato il lettore dati dell'indice di ricerca e quindi viene aggiunta la possibilità di elencare gli indici in base al nome. In genere, elencare gli indici in un servizio di ricerca è considerato un diritto amministrativo.

Questi passaggi sono derivati da Creare o aggiornare i ruoli personalizzati di Azure usando il portale di Azure. La clonazione da un ruolo esistente è supportata in una pagina del servizio di ricerca.

Questi passaggi creano un ruolo personalizzato che aumenta i diritti di query di ricerca per includere l'elenco degli indici in base al nome. In genere, l'elenco degli indici è considerato una funzione di amministrazione.

  1. Nella portale di Azure passare al servizio di ricerca.

  2. Nel riquadro di spostamento a sinistra selezionare Controllo di accesso (IAM).

  3. Nella barra delle azioni selezionare Ruoli.

  4. Fare clic con il pulsante destro del mouse su Search Index Data Reader (o su un altro ruolo) e selezionare Clona per aprire la procedura guidata Crea un ruolo personalizzato.

  5. Nella scheda Informazioni di base specificare un nome per il ruolo personalizzato, ad esempio "Cerca indice Esplora dati" e quindi selezionare Avanti.

  6. Nella scheda Autorizzazioni selezionare Aggiungi autorizzazione.

  7. Nella scheda Aggiungi autorizzazioni cercare e quindi selezionare il riquadro Microsoft Search .

  8. Impostare le autorizzazioni per il ruolo personalizzato. Nella parte superiore della pagina, usando la selezione predefinita Azioni :

    • In Microsoft.Search/operations selezionare Leggi : elenca tutte le operazioni disponibili.
    • In Microsoft.Search/searchServices/indexes selezionare Lettura: Indice di lettura.
  9. Nella stessa pagina passare a Azioni dati e in Microsoft.Search/searchServices/indexes/documents selezionare Lettura : Lettura documenti.

    La definizione JSON è simile all'esempio seguente:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Selezionare Rivedi e crea per creare il ruolo. È ora possibile assegnare utenti e gruppi al ruolo.

Disabilitare l'autenticazione con chiave API

L'accesso alla chiave o l'autenticazione locale può essere disabilitato nel servizio se si usano i ruoli Collaboratore al servizio di ricerca, Collaboratore ai dati dell'indice di ricerca e Lettore dati dell'indice di ricerca e Autenticazione di Microsoft Entra. La disabilitazione delle chiavi API fa sì che il servizio di ricerca rifiuti tutte le richieste correlate ai dati che passano una chiave API nell'intestazione.

Nota

Amministrazione le chiavi API possono essere disabilitate solo, non eliminate. Le chiavi API di query possono essere eliminate.

Per disabilitare le funzionalità sono necessarie autorizzazioni proprietario o collaboratore.

Per disabilitare l'autenticazione basata su chiave, usare portale di Azure o l'API REST di gestione.

  1. Nella portale di Azure passare al servizio di ricerca.

  2. Nel riquadro di spostamento a sinistra selezionare Chiavi.

  3. Selezionare Controllo degli accessi in base al ruolo.

La modifica è effettiva immediatamente, ma attendere alcuni secondi prima del test. Supponendo di disporre dell'autorizzazione per assegnare ruoli come membro del proprietario, dell'amministratore del servizio o del coamministratore, è possibile usare le funzionalità del portale per testare l'accesso in base al ruolo.

Accesso condizionale

L'accesso condizionale è uno strumento in Microsoft Entra ID usato per applicare i criteri dell'organizzazione. Usando i criteri di accesso condizionale, è possibile applicare i controlli di accesso corretti quando necessario per proteggere l'organizzazione. Quando si accede a un servizio di ricerca di intelligenza artificiale di Azure usando il controllo degli accessi in base al ruolo, l'accesso condizionale può applicare i criteri dell'organizzazione.

Per abilitare un criterio di accesso condizionale per Ricerca di intelligenza artificiale di Azure, seguire questa procedura:

  1. Accedere al portale di Azure.

  2. Cercare l'accesso condizionale Microsoft Entra.

  3. Selezionare Criteri.

  4. Selezionare + Nuovi criteri.

  5. Nella sezione App cloud o azioni dei criteri aggiungere Ricerca di intelligenza artificiale di Azure come app cloud a seconda di come si vuole configurare i criteri.

  6. Aggiornare i parametri rimanenti dei criteri. Ad esempio, specificare a quali utenti e gruppi si applica questo criterio.

  7. Salvare il criterio.

Importante

Se al servizio di ricerca è assegnata un'identità gestita, il servizio di ricerca specifico verrà visualizzato come app cloud che può essere inclusa o esclusa come parte dei criteri di accesso condizionale. I criteri di accesso condizionale non possono essere applicati a un servizio di ricerca specifico. Assicurarsi invece di selezionare l'app cloud di Ricerca di intelligenza artificiale di Azure generale.

Risoluzione dei problemi di controllo degli accessi in base al ruolo

Quando si sviluppano applicazioni che usano il controllo degli accessi in base al ruolo per l'autenticazione, possono verificarsi alcuni problemi comuni:

  • Se il token di autorizzazione proviene da un'identità gestita e le autorizzazioni appropriate sono state assegnate di recente, potrebbero essere necessarie diverse ore per rendere effettive queste assegnazioni di autorizzazioni.
  • La configurazione predefinita per un servizio di ricerca è solo l'autenticazione basata su chiave. Se l'impostazione della chiave predefinita non è stata modificata su Entrambi o Controllo degli accessi in base al ruolo, tutte le richieste che usano l'autenticazione basata su ruoli vengono negate automaticamente indipendentemente dalle autorizzazioni sottostanti.