Condividi tramite


Uso di Azure OpenAI per i dati in modo sicuro

Usare questo articolo per informazioni su come usare Azure OpenAI per i dati in modo sicuro proteggendo i dati e le risorse con il controllo degli accessi in base al ruolo, le reti virtuali e gli endpoint privati di Microsoft Entra ID.

Questo articolo riguarda solo l’uso di Azure OpenAI per i dati con testo. Non riguarda Azure OpenAI per i dati con immagini.

Architettura di inserimento dati

Quando si usa Azure OpenAI per i dati per inserire dati dall'archiviazione BLOB di Azure, file locali o URL in Azure AI Search, per elaborare i dati viene usato il processo seguente.

Diagramma che mostra il processo di inserimento dei dati.

  • I passaggi 1 e 2 vengono usati solo per il caricamento di file.
  • Il download degli URL nell'archiviazione BLOB non è illustrato in questo diagramma. Dopo che le pagine Web vengono scaricate da Internet e caricate nell'archiviazione BLOB, i passaggi successivi al passaggio 3 sono identici.
  • Vengono creati due indicizzatori, due indici, due origini dati e una competenza personalizzata nella risorsa Azure AI Search.
  • Il contenitore di blocchi viene creato nell'archiviazione BLOB.
  • Se l'inserimento viene attivato da un aggiornamento pianificato, il processo di inserimento inizia dal passaggio 7.
  • L'API preprocessing-jobs di Azure OpenAI implementa il protocollo API Web competenza cliente di Azure AI Searched elabora i documenti in una coda.
  • Azure OpenAI:
    1. Usa internamente il primo indicizzatore creato in precedenza per il cracking dei documenti.
    2. Usa un algoritmo euristico per eseguire la suddivisione in blocchi, rispettare i layout di tabella e altri elementi di formattazione nel limite del blocco per garantire la migliore qualità della suddivisione in blocchi.
    3. Se si sceglie di abilitare la ricerca vettoriale, Azure OpenAI usa la distribuzione di incorporamento selezionata per vettorializzare i blocchi internamente.
  • Quando vengono elaborati tutti i dati monitorati dal servizio, Azure OpenAI attiva il secondo indicizzatore.
  • L'indicizzatore memorizza i dati elaborati in un servizio Azure AI Search.

Per le identità gestite usate nelle chiamate al servizio, sono supportate solo le identità gestite assegnate dal sistema. Le identità gestite assegnate dall'utente non sono supportate.

Architettura dell'inferenza

Diagramma che mostra il processo di utilizzo dell'API di inferenza.

Quando si inviano chiamate API alla chat con un modello Azure OpenAI per i dati, il servizio deve recuperare i campi dell'indice durante l'inferenza per eseguire automaticamente il mapping dei campi se il mapping dei campi non è impostato in modo esplicito nella richiesta. Il servizio, quindi, richiede che l'identità di Azure OpenAI abbia il ruolo Search Service Contributor per il servizio di ricerca anche durante l'inferenza.

Se nella richiesta di inferenza viene fornita una distribuzione di incorporamento, la query riscritta verrà vettorializzata da Azure OpenAI e sia la query che il vettore vengono inviati ad Azure IAI Search per la ricerca vettoriale.

Controllo di accesso a livello di documento

Nota

Il controllo di accesso a livello di documento è supportato solo per Azure AI Search.

Azure OpenAI per i dati consente di limitare i documenti che possono essere usati nelle risposte per utenti diversi con filtri di sicurezza di Azure AI Search. Quando si abilita l'accesso a livello di documento, i risultati della ricerca restituiti da Azure AI Search e usati per generare una risposta verranno eliminati in base all'appartenenza al gruppo Microsoft Entra dell'utente. È possibile abilitare l'accesso a livello di documento solo su indici di Azure AI Search esistenti. Per abilitare l’accesso a livello di documento:

  1. Seguire la procedura descritta nella Documentazione di Azure AI Search per registrare l'applicazione e creare utenti e gruppi.

  2. Indicizzare i documenti con i relativi gruppi consentiti. Accertarsi che i nuovi campi di sicurezza abbiano lo schema seguente:

    {"name": "group_ids", "type": "Collection(Edm.String)", "filterable": true }
    

    group_ids è il nome campo predefinito. Se si usa un nome campo diverso, ad esempio my_group_ids, è possibile eseguire il mapping del campo in Mapping campi indice.

  3. Accertarsi che ogni documento sensibile nell'indice abbia il valore impostato correttamente in questo campo di sicurezza per indicare i gruppi consentiti del documento.

  4. In Azure OpenAI Studio, aggiungere l’origine dati. Nella sezione Mapping campi indice, è possibile eseguire il mapping del valore zero o uno al campo Gruppi consentiti, purché lo schema sia compatibile. Se il campo Gruppi consentiti non è mappato, l'accesso a livello di documento non verrà abilitato.

Azure OpenAI Studio

Dopo aver connesso l'indice di Azure AI Search, le risposte in Studio avranno accesso ai documenti in base alle autorizzazioni di Microsoft Entra dell'utente connesso.

Applicazione Web

Se si usa un’app Web pubblicata, è necessario ridistribuirla per eseguire l'aggiornamento all’ultima versione. La versione più recente dell'app Web include la possibilità di recuperare i gruppi dell'account Microsoft Entra dell'utente connesso, memorizzarlo nella cache e includere gli ID gruppo in ogni richiesta dell’API.

API

Quando si usa l'API, passare il parametro filter in ogni richiesta dell’API. Ad esempio:

{
    "messages": [
        {
            "role": "user",
            "content": "who is my manager?"
        }
    ],
    "dataSources": [
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
                "key": "'$AZURE_AI_SEARCH_API_KEY'",
                "indexName": "'$AZURE_AI_SEARCH_INDEX'",
                "filter": "my_group_ids/any(g:search.in(g, 'group_id1, group_id2'))"
            }
        }
    ]
}
  • my_group_ids è il nome campo selezionato per Gruppi consentiti durante il mapping dei campi.
  • group_id1, group_id2 sono gruppi attribuiti all'utente connesso. L'applicazione client può recuperare e memorizzare nella cache i gruppi di utenti.

Configurazione delle risorse

Usare le sezioni seguenti per configurare le risorse per un utilizzo sicuro ottimale. Anche se si prevede di proteggere solo una parte delle risorse, è necessario seguire tutti i passaggi seguenti.

Questo articolo descrive le impostazioni di rete correlate alla disabilitazione della rete pubblica per le risorse di Azure OpenAI, le risorse di Azure AI Search e gli account di archiviazione. L'uso di reti selezionate con regole IP non è supportato perché gli indirizzi IP dei servizi sono dinamici.

Suggerimento

È possibile usare lo script bash disponibile in GitHub per convalidare la configurazione e determinare se vengono soddisfatti tutti i requisiti elencati di seguito.

Crea gruppo di risorse

Creare un gruppo di risorse in modo da poter organizzare tutte le risorse pertinenti. Le risorse nel gruppo di risorse includono, ad esempio:

  • Una rete virtuale
  • Tre servizi chiave: un'istanza di Azure OpenAI, un’istanza di Azure AI Search e un account di archiviazione
  • Tre endpoint privati, ognuno collegato a un servizio chiave
  • Tre interfacce di rete, ognuna associata a un endpoint privato
  • Un gateway di rete virtuale per l'accesso da computer client locali
  • Un’app Web con rete virtuale integrata
  • Una zona DNS privato, in modo che l'app Web trovi l'IP dell'istanza di Azure OpenAI

Creare una rete virtuale

La rete virtuale ha tre subnet.

  1. La prima subnet viene usata per gli IP privati dei tre endpoint privati.
  2. La seconda subnet viene creata automaticamente quando si crea il gateway di rete virtuale.
  3. La terza subnet è vuota e viene usata per l'integrazione della rete virtuale in uscita dell'app Web.

Diagramma che mostra l'architettura della rete virtuale.

Tenere presente che la rete virtuale gestita da Microsoft viene creata da Microsoft e non è possibile visualizzarla. La rete virtuale gestita da Microsoft viene usata da Azure OpenAI per accedere in modo sicuro ad Azure AI Search.

Configurare Azure OpenAI

Sottodominio personalizzato abilitato

Se Azure OpenAI è stato creato tramite il portale di Azure, il sottodominio personalizzato deve essere già stato creato. Il sottodominio personalizzato è necessario per l'autenticazione basata su Microsoft Entra ID e per la zona DNS privato.

Abilitare l'identità gestita

Per consentire ad Azure AI Search e all'account di archiviazione di riconoscere il servizio Azure OpenAI tramite l'autenticazione di Microsoft Entra ID, è necessario assegnare un'identità gestita per il servizio Azure OpenAI. Il modo più semplice consiste nell'attivazione dell'identità gestita assegnata dal sistema nel portale di Azure. Screenshot che mostra l’opzione per l'identità gestita assegnata dal sistema nel portale di Azure.

Per impostare le identità gestite tramite l'API di gestione, vedere la documentazione di riferimento dell'API di gestione.


"identity": {
  "principalId": "12345678-abcd-1234-5678-abc123def",
  "tenantId": "1234567-abcd-1234-1234-abcd1234",
  "type": "SystemAssigned, UserAssigned", 
  "userAssignedIdentities": {
    "/subscriptions/1234-5678-abcd-1234-1234abcd/resourceGroups/my-resource-group",
    "principalId": "12345678-abcd-1234-5678-abcdefg1234", 
    "clientId": "12345678-abcd-efgh-1234-12345678"
  }
}

Abilitare il servizio attendibile

Per consentire ad Azure AI Search di chiamare preprocessing-jobs come API Web di competenza personalizzata, mentre Azure OpenAI non ha accesso alla rete pubblica, è necessario configurare Azure OpenAI per ignorare Azure AI Search come servizio attendibile basato sull'identità gestita. Azure OpenAI identifica il traffico proveniente da Azure AI Search verificando le attestazioni nel token JSON Web (JWT). Azure AI Search deve usare l'autenticazione dell'identità gestita assegnata dal sistema per chiamare l'API Web di competenza personalizzata.

Impostare networkAcls.bypass come AzureServices dall’API di gestione. Per altre informazioni, vedere l’articolo sulle reti virtuali.

Questo passaggio può essere ignorato solo se esiste un collegamento privato condiviso per la risorsa di Azure AI Search.

Disabilitare l'accesso alla rete pubblica

È possibile disabilitare l'accesso alla rete pubblica della risorsa di Azure OpenAI nel portale di Azure.

Per consentire l'accesso al servizio Azure OpenAI dai computer client, ad esempio con Azure OpenAI Studio, è necessario creare connessioni endpoint private che si connettono alla risorsa di Azure OpenAI.

È possibile usare il piano tariffario base e versioni successive per la configurazione seguente. Non è necessario, ma se si usa il piano tariffario S2, verranno visualizzate opzioni aggiuntive che è possibile selezionare.

Abilitare l'identità gestita

Per consentire ad altre risorse il riconoscimento di Azure AI Search tramite l'autenticazione di Microsoft Entra ID, è necessario assegnare un'identità gestita per Azure AI Search. Il modo più semplice consiste nell'attivazione dell'identità gestita assegnata dal sistema nel portale di Azure.

Screenshot che mostra l'impostazione dell'identità gestita per Azure AI Search nel portale di Azure.

Abilitare il controllo degli accessi in base al ruolo

Poiché Azure OpenAI usa l'identità gestita per accedere ad Azure AI Search, è necessario abilitare il controllo degli accessi in base al ruolo in Azure AI Search. Per eseguire questa operazione nel portale di Azure, selezionare Entrambe nella scheda Chiavi nel portale di Azure.

Screenshot che mostra l'opzione per l'identità gestita per Azure AI Search nel portale di Azure.

Per abilitare il controllo degli accessi in base al ruolo tramite l’API REST, impostare authOptions comeaadOrApiKey. Per altre informazioni, vedere l’articolo sul controllo degli accessi in base al ruolo (RBAC) di Azure AI Search.

"disableLocalAuth": false,
"authOptions": { 
    "aadOrApiKey": { 
        "aadAuthFailureMode": "http401WithBearerChallenge"
    }
}

Disabilitare l'accesso alla rete pubblica

È possibile disabilitare l'accesso alla rete pubblica della risorsa di Azure AI Search nel portale di Azure.

Per consentire l'accesso al servizio Azure AI Search dai computer client, ad esempio con Azure OpenAI Studio, è necessario creare connessioni endpoint private che si connettono alla risorsa di Azure AI Search.

Nota

Per consentire l'accesso alla risorsa di Azure AI Search dalla risorsa Azure OpenAI, è necessario inviare un modulo applicazione. L'applicazione verrà esaminata entro 5 giorni lavorativi e l’utente verrà contattato tramite e-mail per i risultati. Se l’utente è idoneo, verrà effettuato il provisioning dell'endpoint privato nella rete virtuale gestita da Microsoft e verrà inviata una richiesta di connessione all'endpoint privato al servizio di ricerca dell’utente, che dovrà approvare la richiesta.

Screenshot che mostra la schermata di approvazione dell'endpoint privato.

Il provisioning della risorsa dell’endpoint privato viene eseguito in un tenant gestito da Microsoft, mentre la risorsa collegata si trova nel tenant dell’utente. Non è possibile accedere alla risorsa dell’endpoint privato facendo semplicemente clic sul collegamento endpoint privato (con caratteri blu) nella scheda Accesso privato della pagina Rete. Fare clic in un altro punto della riga, invece, il pulsante Approva diventa selezionabile.

Altre informazioni sul flusso di lavoro di approvazione manuale.

Suggerimento

Se si usa un piano tariffario base o standard o se è la prima volta che si configurano tutte le risorse in modo sicuro, ignorare questo argomento avanzato.

Questa sezione riguarda solo la risorsa di ricerca del piano tariffario S2, perché richiede supporto dell'endpoint privato per gli indicizzatori con un set di competenze.

Per creare un collegamento privato condiviso dalla risorsa di ricerca che si connette alla risorsa di Azure OpenAI, vedere la documentazione sulla ricerca. Per Tipo di risorsa selezionare Microsoft.CognitiveServices/accounts e per ID gruppo selezionare openai_account.

Con il collegamento privato condiviso, il passaggio otto del diagramma dell'architettura di inserimento dati viene modificato da ignora servizio attendibile a endpoint privato.

Diagramma che mostra il processo di inserimento dei dati con una risorsa di ricerca S2.

Il collegamento privato condiviso di Azure AI Search creato si trova anche in una rete virtuale gestita da Microsoft, non nella rete virtuale dell’utente. La differenza rispetto all'altro endpoint privato gestito creato precedentemente consiste nel fatto che il provisioning dell'endpoint privato gestito [1] da Azure OpenAI ad Azure Search viene effettuato tramite il modulo applicazione, mentre il provisioning dell'endpoint privato gestito [2] da Azure Search ad Azure OpenAI viene effettuato tramite il portale di Azure o l'API REST di Azure Search.

Diagramma che mostra l'architettura della rete virtuale con una risorsa di ricerca S2.

Configurare l'account di archiviazione

Abilitare il servizio attendibile

Per consentire l'accesso al proprio account di archiviazione da Azure OpenAI e Azure AI Search, mentre l'account di archiviazione non ha accesso alla rete pubblica, è necessario configurare l'account di archiviazione in modo da ignorare Azure OpenAI e Azure AI Search come servizi attendibili basati sull'identità gestita.

Nel portale di Azure, passare alla scheda della rete dell'account di archiviazione, scegliere "Reti selezionate", selezionare Consenti ai servizi di Azure nell’elenco dei servizi attendibili di accedere a questo account di archiviazione e fare clic su Salva.

Disabilitare l'accesso alla rete pubblica

È possibile disabilitare l'accesso alla rete pubblica della risorsa di archiviazione nel portale di Azure.

Per consentire l'accesso al proprio account di archiviazione dai computer client, ad esempio con Azure OpenAI Studio, è necessario creare connessioni endpoint private che si connettono alla propria archiviazione BLOB.

Assegnazioni di ruoli

Finora è già stata configurata ogni risorsa in modo indipendente. Successivamente, è necessario consentire ai servizi di autorizzarsi tra loro.

Ruolo Assegnatario Risorsa Descrizione
Search Index Data Reader OpenAI di Azure Azure AI Search Il servizio di inferenza esegue una query dei dati dall'indice.
Search Service Contributor OpenAI di Azure Azure AI Search Il servizio di inferenza esegue una query dello schema dell'indice per il mapping automatico dei campi. Il servizio di inserimento dati crea indici, origini dati, set di competenze, indicizzatore ed esegue query dello stato dell'indicizzatore.
Storage Blob Data Contributor OpenAI di Azure Account di archiviazione Legge dal contenitore di input e scrive il risultato della pre-elaborazione nel contenitore di output.
Cognitive Services OpenAI Contributor Azure AI Search OpenAI di Azure Competenza personalizzata
Storage Blob Data Contributor Azure AI Search Account di archiviazione Legge BLOB e scrive un archivio conoscenze.

Nella tabella precedente, Assignee indica l'identità gestita assegnata dal sistema di tale risorsa.

L'amministratore deve avere il ruolo Owner per queste risorse per l’aggiunta di assegnazioni di ruolo.

Vedere la documentazione sul controllo degli accessi in base al ruolo (RBAC) di Azure per le istruzioni sull'impostazione di questi ruoli nel portale di Azure. È possibile usare lo script disponibile in GitHub per aggiungere le assegnazioni di ruolo a livello di codice.

Per consentire agli sviluppatori di usare queste risorse per la generazione di applicazioni, l'amministratore deve aggiungere l'identità degli sviluppatori con le assegnazioni di ruolo seguenti alle risorse.

Ruolo Risorsa Descrizione
Cognitive Services OpenAI Contributor OpenAI di Azure Chiamare l'API di inserimento pubblico da Azure OpenAI Studio. Il ruolo Contributor non è sufficiente perché con il solo ruolo Contributor non è possibile chiamare l'API del piano dati tramite l'autenticazione di Microsoft Entra ID e l'autenticazione di Microsoft Entra ID è necessaria nella configurazione sicura descritta in questo articolo.
Cognitive Services User OpenAI di Azure Elencare le chiavi API da Azure OpenAI Studio.
Contributor Azure AI Search Elencare le chiavi API per elencare gli indici da Azure OpenAI Studio.
Contributor Account di archiviazione Elencare la firma di accesso condiviso (SAS) per caricare file da Azure OpenAI Studio.
Contributor Il gruppo di risorse o la sottoscrizione di Azure in cui lo sviluppatore deve distribuire l'app Web in Distribuire l'app Web nella sottoscrizione di Azure dello sviluppatore.

Configurare il gateway e il client

Per accedere al servizio Azure OpenAI dai computer client locali, uno degli approcci consiste nella configurazione del Gateway VPN di Azure e del client VPN di Azure.

Seguire queste linee guida per creare un gateway di rete virtuale per la rete virtuale.

Seguire queste linee guida per aggiungere la configurazione da punto a sito e abilitare l'autenticazione basata sul Microsoft Entra ID. Scaricare il pacchetto di configurazione del profilo client VPN di Azure, quindi decomprimere e importare il file AzureVPN/azurevpnconfig.xml nel client VPN di Azure.

Screenshot che mostra dove importare il profilo client VPN di Azure.

Configurare il file hosts del computer locale per puntare i nomi host delle risorse sugli IP privati nella rete virtuale. Il file hosts si trova in C:\Windows\System32\drivers\etc per Windows e in /etc/hosts per Linux. Esempio:

10.0.0.5 contoso.openai.azure.com
10.0.0.6 contoso.search.windows.net
10.0.0.7 contoso.blob.core.windows.net

Azure OpenAI Studio

Sarà possibile usare tutte le funzionalità di Azure OpenAI Studio, incluse sia l'inserimento che l'inferenza, dai computer client locali.

Applicazione Web

L'app Web comunica con la risorsa di Azure OpenAI. Poiché la rete pubblica per la risorsa di Azure OpenAI è disabilitata, l'app Web deve essere configurata per usare l'endpoint privato nella rete virtuale per accedere alla risorsa di Azure OpenAI.

L'app Web deve risolvere il nome host di Azure OpenAI sull'IP privato dell'endpoint privato per Azure OpenAI. È necessario, quindi, configurare prima la zona DNS privato per la rete virtuale.

  1. Creare una zona DNS privato nel proprio gruppo di risorse.
  2. Aggiungere un record DNS. L'IP è l'IP privato dell'endpoint privato per la risorsa di Azure OpenAI ed è possibile ottenere l'indirizzo IP dall'interfaccia di rete associata all'endpoint privato per Azure OpenAI.
  3. Collegare la zona DNS privato alla rete virtuale in modo che l'app Web integrata in questa rete virtuale possa usare questa zona DNS privato.

Quando si distribuisce l'app Web da Azure OpenAI Studio, selezionare la stessa posizione con la rete virtuale e selezionare uno SKU appropriato, in modo da supportare la funzionalità di integrazione della rete virtuale.

Dopo la distribuzione dell'app Web, nella scheda Rete del portale di Azure configurare l'integrazione della rete virtuale del traffico in uscita dell'app Web e scegliere la terza subnet riservata per l'app Web.

Screenshot che mostra la configurazione del traffico in uscita per l'app Web.

Uso dell'API

Accertarsi che le credenziali di accesso dispongano del ruolo Cognitive Services OpenAI Contributor nella risorsa di Azure OpenAI ed eseguire prima az login.

Screenshot che mostra il ruolo di collaboratore OpenAI dei servizi cognitivi nel portale di Azure.

API di inserimento

Vedere l’articolo di riferimento sull'API di inserimento per informazioni dettagliate sugli oggetti richiesta e risposta usati dall'API di inserimento.

API di inferenza

Vedere l’articolo di riferimento sull'API di inferenza per informazioni dettagliate sugli oggetti richiesta e risposta usati dall'API di inferenza.

Abilitare Microsoft Defender for Cloud

A questo punto, è possibile integrare Microsoft Defender per il cloud (anteprima) con le risorse di Azure per proteggere le applicazioni. Microsoft Defender per il cloud protegge le applicazioni con la protezione dalle minacce per i carichi di lavoro di intelligenza artificiale, fornendo ai team avvisi di sicurezza basati sull’evidenza arricchiti con segnali di intelligence sulle minacce Microsoft e consente ai team di rafforzare la postura di sicurezza con consigli sulle procedure consigliate per la sicurezza integrata.

Per richiedere l'accesso, usare questo modulo.

Screenshot che mostra Microsoft Defender per il cloud.