Använd Azure OpenAI på dina data på ett säkert sätt

Använd den här artikeln om du vill lära dig hur du använder Azure OpenAI på dina data på ett säkert sätt genom att skydda data och resurser med rollbaserad åtkomstkontroll i Microsoft Entra, virtuella nätverk och privata slutpunkter.

Den här artikeln gäller endast när du använder Azure OpenAI På dina data med text. Den gäller inte för Azure OpenAI På dina data med bilder.

Datainmatningsarkitektur

När du använder Azure OpenAI På dina data för att mata in data från Azure Blob Storage, lokala filer eller URL:er till Azure AI Search används följande process för att bearbeta data.

Ett diagram som visar processen för att mata in data.

  • Steg 1 och 2 används endast för filuppladdning.
  • Nedladdning av URL:er till bloblagringen visas inte i det här diagrammet. När webbsidorna har laddats ned från Internet och laddats upp till bloblagring är steg 3 och senare desamma.
  • Två indexerare, två index, två datakällor och en anpassad färdighet skapas i Azure AI Search-resursen.
  • Segmentcontainern skapas i bloblagringen.
  • Om inmatningen utlöses av en schemalagd uppdatering börjar inmatningsprocessen från steg 7.
  • Azure OpenAI:s preprocessing-jobs API implementerar webb-API-protokollet för Azure AI Search-kunskaper och bearbetar dokumenten i en kö.
  • Azure OpenAI:
    1. Internt använder den första indexeraren som skapades tidigare för att knäcka dokumenten.
    2. Använder en heuristisk baserad algoritm för att utföra segmentering, uppfylla tabelllayouter och andra formateringselement i segmentgränsen för att säkerställa bästa segmentkvalitet.
    3. Om du väljer att aktivera vektorsökning använder Azure OpenAI den valda inbäddningsdistributionen för att vektorisera segmenten internt.
  • När alla data som tjänsten övervakar bearbetas utlöser Azure OpenAI den andra indexeraren.
  • Indexeraren lagrar bearbetade data i en Azure AI-tjänsten Search.

För de hanterade identiteter som används i tjänstanrop stöds endast systemtilldelade hanterade identiteter. Användartilldelade hanterade identiteter stöds inte.

Slutsatsdragningsarkitektur

Ett diagram som visar processen för att använda inferens-API:et.

När du skickar API-anrop för att chatta med en Azure OpenAI-modell på dina data måste tjänsten hämta indexfälten under slutsatsdragningen för att utföra fältmappning automatiskt om fältmappningen inte uttryckligen anges i begäran. Därför kräver tjänsten att Azure OpenAI-identiteten Search Service Contributor har rollen för söktjänsten även under slutsatsdragningen.

Om en inbäddningsdistribution tillhandahålls i inferensbegäran kommer den omskrivna frågan att vektoriseras av Azure OpenAI och både fråga och vektor skickas Azure AI Search för vektorsökning.

Åtkomstkontroll på dokumentnivå

Kommentar

Åtkomstkontroll på dokumentnivå stöds endast för Azure AI-sökning.

Med Azure OpenAI På dina data kan du begränsa de dokument som kan användas som svar för olika användare med Säkerhetsfilter för Azure AI Search. När du aktiverar åtkomst på dokumentnivå trimmas sökresultaten som returneras från Azure AI Search och används för att generera ett svar baserat på användarens Microsoft Entra-gruppmedlemskap. Du kan bara aktivera åtkomst på dokumentnivå för befintliga Azure AI Search-index. Så här aktiverar du åtkomst på dokumentnivå:

  1. Följ stegen i Azure AI Search-dokumentationen för att registrera ditt program och skapa användare och grupper.

  2. Indexera dina dokument med deras tillåtna grupper. Se till att de nya säkerhetsfälten har schemat nedan:

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

    group_ids är standardfältets namn. Om du använder ett annat fältnamn som my_group_idskan du mappa fältet i mappningen av indexfält.

  3. Kontrollera att varje känsligt dokument i indexet har värdet korrekt inställt på det här säkerhetsfältet för att ange de tillåtna grupperna i dokumentet.

  4. Lägg till din datakälla i Azure OpenAI Studio. I avsnittet indexfältmappning kan du mappa noll eller ett värde till fältet tillåtna grupper, så länge schemat är kompatibelt. Om fältet Tillåtna grupper inte mappas aktiveras inte åtkomst på dokumentnivå.

Azure OpenAI Studio

När Azure AI Search-indexet är anslutet får dina svar i studion dokumentåtkomst baserat på Microsoft Entra-behörigheterna för den inloggade användaren.

Webbapp

Om du använder en publicerad webbapp måste du distribuera om den för att uppgradera till den senaste versionen. Den senaste versionen av webbappen innehåller möjligheten att hämta grupperna för den inloggade användarens Microsoft Entra-konto, cachelagra det och inkludera grupp-ID:n i varje API-begäran.

API

När du använder API:et skickar du parametern filter i varje API-begäran. Till exempel:

{
    "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 är det fältnamn som du valde för Tillåtna grupper under fältmappning.
  • group_id1, group_id2 är grupper som tillskrivs den inloggade användaren. Klientprogrammet kan hämta och cachelagrat användargrupper.

Resurskonfiguration

Använd följande avsnitt för att konfigurera dina resurser för optimal säker användning. Även om du planerar att endast skydda en del av dina resurser måste du fortfarande följa alla steg nedan.

I den här artikeln beskrivs nätverksinställningar som rör inaktivering av offentliga nätverk för Azure OpenAI-resurser, Azure AI-sökresurser och lagringskonton. Det går inte att använda valda nätverk med IP-regler eftersom tjänsternas IP-adresser är dynamiska.

Dricks

Du kan använda bash-skriptet som är tillgängligt på GitHub för att verifiera konfigurationen och avgöra om alla krav som anges här uppfylls.

Skapa resursgrupp

Skapa en resursgrupp så att du kan organisera alla relevanta resurser. Resurserna i resursgruppen inkluderar men är inte begränsade till:

  • Ett virtuellt nätverk
  • Tre viktiga tjänster: en Azure OpenAI, en Azure AI Search, ett lagringskonto
  • Tre privata slutpunkter, var och en är länkad till en nyckeltjänst
  • Tre nätverksgränssnitt, var och en är associerad med en privat slutpunkt
  • En virtuell nätverksgateway för åtkomst från lokala klientdatorer
  • En webbapp med integrerat virtuellt nätverk
  • En Privat DNS zon, så webbappen hittar IP-adressen för din Azure OpenAI

Skapa virtuella nätverk

Det virtuella nätverket har tre undernät.

  1. Det första undernätet används för privata IP-adresser för de tre privata slutpunkterna.
  2. Det andra undernätet skapas automatiskt när du skapar den virtuella nätverksgatewayen.
  3. Det tredje undernätet är tomt och används för utgående integrering av virtuella nätverk i Web App.

Ett diagram som visar arkitekturen för det virtuella nätverket.

Observera att microsofts hanterade virtuella nätverk har skapats av Microsoft och du kan inte se det. Microsofts hanterade virtuella nätverk används av Azure OpenAI för säker åtkomst till din Azure AI Search.

Konfigurera Azure OpenAI

Aktiverad anpassad underdomän

Om du har skapat Azure OpenAI via Azure-portalen bör den anpassade underdomänen redan ha skapats. Den anpassade underdomänen krävs för Microsoft Entra ID-baserad autentisering och privat DNS-zon.

Aktivera hanterad identitet

Om du vill tillåta att ditt Azure AI Search- och Storage-konto känner igen din Azure OpenAI-tjänst via Microsoft Entra-ID-autentisering måste du tilldela en hanterad identitet för din Azure OpenAI-tjänst. Det enklaste sättet är att växla på systemtilldelad hanterad identitet på Azure-portalen. En skärmbild som visar alternativet systemtilldelad hanterad identitet i Azure-portalen.

Information om hur du anger hanterade identiteter via hanterings-API :et finns i referensdokumentationen för hanterings-API.


"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"
  }
}

Aktivera betrodd tjänst

Om du vill tillåta att Azure AI Search anropar azure OpenAI preprocessing-jobs som webb-API för anpassad kompetens, medan Azure OpenAI inte har någon offentlig nätverksåtkomst, måste du konfigurera Azure OpenAI för att kringgå Azure AI Search som en betrodd tjänst baserat på hanterad identitet. Azure OpenAI identifierar trafiken från din Azure AI Search genom att verifiera anspråken i JSON-webbtoken (JWT). Azure AI Search måste använda systemtilldelad hanterad identitetsautentisering för att anropa webb-API:et för anpassad kompetens.

Ange networkAcls.bypass som AzureServices från hanterings-API:et. Mer information finns i artikeln Om virtuella nätverk.

Kommentar

Den betrodda tjänstfunktionen är endast tillgänglig med hjälp av kommandot som beskrivs ovan och kan inte göras med hjälp av Azure-portalen.

Det här steget kan bara hoppas över om du har en delad privat länk för din Azure AI Search-resurs.

Inaktivera åtkomst till offentligt nätverk

Du kan inaktivera åtkomsten till det offentliga nätverket för din Azure OpenAI-resurs i Azure-portalen.

Om du vill tillåta åtkomst till din Azure OpenAI-tjänst från dina klientdatorer, som att använda Azure OpenAI Studio, måste du skapa privata slutpunktsanslutningar som ansluter till din Azure OpenAI-resurs.

Du kan använda den grundläggande prisnivån och högre för konfigurationen nedan. Det är inte nödvändigt, men om du använder prisnivån S2 ser du ytterligare alternativ som är tillgängliga för val.

Aktivera hanterad identitet

Om du vill att dina andra resurser ska kunna identifiera Azure AI Search med hjälp av Microsoft Entra-ID-autentisering måste du tilldela en hanterad identitet för din Azure AI Search. Det enklaste sättet är att växla på den systemtilldelade hanterade identiteten i Azure-portalen.

En skärmbild som visar inställningen för hanterad identitet för Azure AI Search i Azure-portalen.

Aktivera rollbaserad åtkomstkontroll

Eftersom Azure OpenAI använder hanterad identitet för att få åtkomst till Azure AI Search måste du aktivera rollbaserad åtkomstkontroll i Azure AI Search. Om du vill göra det på Azure-portalen väljer du Bådafliken Nycklar i Azure-portalen.

En skärmbild som visar alternativet hanterad identitet för Azure AI-sökning i Azure-portalen.

Om du vill aktivera rollbaserad åtkomstkontroll via REST API anger du authOptions som aadOrApiKey. Mer information finns i artikeln Azure AI Search RBAC.

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

Om du vill använda Azure OpenAI Studio kan du inte inaktivera API-nyckelbaserad autentisering för Azure AI Search eftersom Azure OpenAI Studio använder API-nyckeln för att anropa Azure AI Search-API:et från webbläsaren.

Dricks

För bästa säkerhet, när du är redo för produktion och inte längre behöver använda Azure OpenAI Studio för testning, rekommenderar vi att du inaktiverar API-nyckeln. Mer information finns i RBAC-artikeln för Azure AI Search.

Inaktivera åtkomst till offentligt nätverk

Du kan inaktivera åtkomsten till det offentliga nätverket för din Azure AI Search-resurs i Azure-portalen.

Om du vill tillåta åtkomst till din Azure AI Search-resurs från dina klientdatorer, som att använda Azure OpenAI Studio, måste du skapa privata slutpunktsanslutningar som ansluter till din Azure AI Search-resurs.

Kommentar

Om du vill tillåta åtkomst till din Azure AI Search-resurs från Azure OpenAI-resursen måste du skicka ett programformulär. Programmet kommer att granskas om fem arbetsdagar och du kommer att kontaktas via e-post om resultatet. Om du är berättigad etablerar vi den privata slutpunkten i Microsofts hanterade virtuella nätverk och skickar en begäran om privat slutpunktsanslutning till din söktjänst, och du måste godkänna begäran.

En skärmbild som visar skärmen för godkännande av privat slutpunkt.

Den privata slutpunktsresursen etableras i en Microsoft-hanterad klient, medan den länkade resursen finns i din klientorganisation. Du kan inte komma åt den privata slutpunktsresursen genom att bara klicka på länken för den privata slutpunkten (med blått teckensnitt) på fliken Privat åtkomstsidan Nätverk. Klicka i stället någon annanstans på raden. Knappen Godkänn ovan bör vara klickbar.

Läs mer om arbetsflödet för manuellt godkännande.

Dricks

Om du använder en grundläggande prisnivå eller standardprisnivå, eller om det är första gången du konfigurerar alla dina resurser på ett säkert sätt, bör du hoppa över det här avancerade ämnet.

Det här avsnittet gäller endast för S2-prisnivåsökningsresursen, eftersom det kräver privat slutpunktsstöd för indexerare med en kompetensuppsättning.

Information om hur du skapar en delad privat länk från sökresursen som ansluter till din Azure OpenAI-resurs finns i sökdokumentationen. Välj Resurstyp som Microsoft.CognitiveServices/accounts och Grupp-ID som openai_account.

Med delad privat länk ändras steg åtta i datainmatningsarkitekturdiagrammet från förbikoppling av betrodd tjänst till privat slutpunkt.

Ett diagram som visar processen för att mata in data med en S2-sökresurs.

Den delade privata länken för Azure AI Search som du skapade finns också i ett Microsoft-hanterat virtuellt nätverk, inte i ditt virtuella nätverk. Skillnaden jämfört med den andra hanterade privata slutpunkten som skapades tidigare är att den hanterade privata slutpunkten [1] från Azure OpenAI till Azure Search etableras via formulärprogrammet, medan den hanterade privata slutpunkten [2] från Azure Search till Azure OpenAI etableras via Azure-portalen eller REST API för Azure Search.

Ett diagram som visar den virtuella nätverksarkitekturen med S2-sökresursen.

Konfigurera lagringskonto

Aktivera betrodd tjänst

Om du vill tillåta åtkomst till ditt lagringskonto från Azure OpenAI och Azure AI Search, men lagringskontot inte har någon åtkomst till det offentliga nätverket, måste du konfigurera lagringskontot för att kringgå Azure OpenAI och Azure AI Search som betrodda tjänster baserat på hanterad identitet.

I Azure-portalen går du till nätverksfliken för lagringskontot, väljer "Valda nätverk" och väljer sedan Tillåt Azure-tjänster i listan över betrodda tjänster att komma åt det här lagringskontot och klickar på Spara.

Inaktivera åtkomst till offentligt nätverk

Du kan inaktivera åtkomsten till det offentliga nätverket för ditt lagringskonto i Azure-portalen.

Om du vill tillåta åtkomst till ditt lagringskonto från dina klientdatorer, till exempel genom att använda Azure OpenAI Studio, måste du skapa privata slutpunktsanslutningar som ansluter till bloblagringen.

Rolltilldelningar

Hittills har du redan konfigurerat varje resursarbete separat. Därefter måste du tillåta att tjänsterna auktoriserar varandra.

Roll Tilldelad Resurs beskrivning
Search Index Data Reader Azure OpenAI Azure AI-sökning Slutsatsdragningstjänsten frågar data från indexet.
Search Service Contributor Azure OpenAI Azure AI-sökning Slutsatsdragningstjänsten frågar indexschemat för automatisk fältmappning. Datainmatningstjänsten skapar index, datakällor, kompetensuppsättning, indexerare och frågar indexerarens status.
Storage Blob Data Contributor Azure OpenAI Lagringskonto Läser från indatacontainern och skriver förbearbetningsresultatet till utdatacontainern.
Cognitive Services OpenAI Contributor Azure AI-sökning Azure OpenAI Anpassad färdighet
Storage Blob Data Contributor Azure AI-sökning Lagringskonto Läser blob och skriver kunskapslager.

I tabellen ovan innebär det Assignee systemtilldelade hanterade identiteten för den resursen.

Administratören Owner måste ha rollen på dessa resurser för att lägga till rolltilldelningar.

Mer information om hur du anger dessa roller finns i Azure RBAC-dokumentationen i Azure-portalen. Du kan använda det tillgängliga skriptet på GitHub för att lägga till rolltilldelningarna programmatiskt.

För att göra det möjligt för utvecklarna att använda dessa resurser för att skapa program måste administratören lägga till utvecklarnas identitet med följande rolltilldelningar till resurserna.

Roll Resurs beskrivning
Cognitive Services OpenAI Contributor Azure OpenAI Anropa offentligt inmatnings-API från Azure OpenAI Studio. Rollen Contributor räcker inte, för om du bara har Contributor en roll kan du inte anropa DATA Plane API via Microsoft Entra ID-autentisering och Microsoft Entra-ID-autentisering krävs i den säkra konfiguration som beskrivs i den här artikeln.
Cognitive Services User Azure OpenAI Lista API-nycklar från Azure OpenAI Studio.
Contributor Azure AI-sökning Lista API-nycklar för att lista index från Azure OpenAI Studio.
Contributor Lagringskonto Lista konto-SAS för att ladda upp filer från Azure OpenAI Studio.
Contributor Resursgruppen eller Azure-prenumerationen där utvecklaren behöver distribuera webbappen till Distribuera webbappen till utvecklarens Azure-prenumeration.

Konfigurera gateway och klient

För att få åtkomst till Azure OpenAI-tjänsten från dina lokala klientdatorer är en av metoderna att konfigurera Azure VPN Gateway och Azure VPN Client.

Följ den här riktlinjen för att skapa en virtuell nätverksgateway för ditt virtuella nätverk.

Följ den här riktlinjen om du vill lägga till punkt-till-plats-konfiguration och aktivera Microsoft Entra ID-baserad autentisering. Ladda ned konfigurationspaketet för Azure VPN-klientprofilen, packa upp och importera AzureVPN/azurevpnconfig.xml filen till Din Azure VPN-klient.

En skärmbild som visar var azure VPN-klientprofilen ska importeras.

Konfigurera din lokala datorfil hosts så att den pekar resursernas värdnamn på de privata IP-adresserna i det virtuella nätverket. Filen hosts finns på C:\Windows\System32\drivers\etc för Windows och på /etc/hosts i Linux. Exempel:

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

Du bör kunna använda alla Azure OpenAI Studio-funktioner, inklusive både inmatning och slutsatsdragning, från dina lokala klientdatorer.

Webbapp

Webbappen kommunicerar med din Azure OpenAI-resurs. Eftersom din Azure OpenAI-resurs har inaktiverat det offentliga nätverket måste webbappen konfigureras för att använda den privata slutpunkten i det virtuella nätverket för att få åtkomst till din Azure OpenAI-resurs.

Webbappen måste matcha ditt Azure OpenAI-värdnamn till den privata IP-adressen för den privata slutpunkten för Azure OpenAI. Därför måste du konfigurera den privata DNS-zonen för ditt virtuella nätverk först.

  1. Skapa en privat DNS-zon i resursgruppen.
  2. Lägg till en DNS-post. IP-adressen är den privata IP-adressen för den privata slutpunkten för din Azure OpenAI-resurs och du kan hämta IP-adressen från nätverksgränssnittet som är associerat med den privata slutpunkten för din Azure OpenAI.
  3. Länka den privata DNS-zonen till ditt virtuella nätverk så att webbappen som är integrerad i det här virtuella nätverket kan använda den här privata DNS-zonen.

När du distribuerar webbappen från Azure OpenAI Studio väljer du samma plats med det virtuella nätverket och väljer en lämplig SKU så att den kan stödja integreringsfunktionen för virtuella nätverk.

När webbappen har distribuerats konfigurerar du webbappens utgående trafikintegrering på fliken Nätverk i Azure-portalen och väljer det tredje undernätet som du har reserverat för webbappen.

En skärmbild som visar utgående trafikkonfiguration för webbappen.

Använda API:et

Kontrollera att inloggningsautentiseringsuppgifterna har Cognitive Services OpenAI Contributor en roll för din Azure OpenAI-resurs och kör az login först.

En skärmbild som visar rollen För Cognitive Services OpenAI-deltagare i Azure-portalen.

Inmatnings-API

Mer information om de begärande- och svarsobjekt som används av inmatnings-API:et finns i referensartikeln för inmatnings-API:et.

Fler kommentarer:

  • JOB_NAME i API-sökvägen används som indexnamn i Azure AI Search.
  • Authorization Använd huvudet i stället för api-key.
  • storageEndpoint Ange uttryckligen rubrik.
  • Använd ResourceId= format för storageConnectionString rubrik, så Azure OpenAI och Azure AI Search använder hanterad identitet för att autentisera lagringskontot, vilket krävs för att kringgå nätverksbegränsningar.
  • Ange intesearchServiceAdminKey rubriken. Den systemtilldelade identiteten för Azure OpenAI-resursen används för att autentisera Azure AI Search.
  • Ställ inte in embeddingEndpoint eller embeddingKey. Använd embeddingDeploymentName i stället rubriken för att aktivera textvektorisering.

Exempel på att skicka jobb

accessToken=$(az account get-access-token --resource https://cognitiveservices.azure.com/ --query "accessToken" --output tsv)
curl -i -X PUT https://my-resource.openai.azure.com/openai/extensions/on-your-data/ingestion-jobs/vpn1025a?api-version=2023-10-01-preview \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $accessToken" \
-H "storageEndpoint: https://mystorage.blob.core.windows.net/" \
-H "storageConnectionString: ResourceId=/subscriptions/1234567-abcd-1234-5678-1234abcd/resourceGroups/my-resource/providers/Microsoft.Storage/storageAccounts/mystorage" \
-H "storageContainer: my-container" \
-H "searchServiceEndpoint: https://mysearch.search.windows.net" \
-H "embeddingDeploymentName: ada" \
-d \
'
{
}
'

Hämta jobbstatusexempel

accessToken=$(az account get-access-token --resource https://cognitiveservices.azure.com/ --query "accessToken" --output tsv)
curl -i -X GET https://my-resource.openai.azure.com/openai/extensions/on-your-data/ingestion-jobs/abc1234?api-version=2023-10-01-preview \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $accessToken"

Slutsatsdragnings-API

Mer information om de begärande- och svarsobjekt som används av inferens-API:et finns i referensartikeln för slutsatsdragnings-API:et.