Nawiązywanie połączeń wychodzących za pośrednictwem udostępnionego łącza prywatnego

W tym artykule wyjaśniono, jak skonfigurować prywatne, wychodzące wywołania z usługi Azure AI Search do zasobu PaaS platformy Azure działającego w sieci wirtualnej.

Skonfigurowanie połączenia prywatnego umożliwia usłudze wyszukiwania łączenie się z adresem IP sieci wirtualnej zamiast portu otwartego dla Internetu. Obiekt utworzony dla połączenia jest nazywany udostępnionym łączem prywatnym. W połączeniu usługa wyszukiwania używa współużytkowanego łącza prywatnego wewnętrznie, aby uzyskać dostęp do zasobu PaaS platformy Azure wewnątrz granicy sieci.

Udostępniony link prywatny to funkcja w warstwie Premium, która jest rozliczana według użycia. Po skonfigurowaniu udostępnionego łącza prywatnego opłaty za prywatny punkt końcowy są dodawane do faktury platformy Azure. W miarę korzystania z udostępnionego łącza prywatnego zafakturowane są również stawki transferu danych dla dostępu przychodzącego i wychodzącego. Aby uzyskać szczegółowe informacje, zobacz Cennik usługi Azure Private Link.

Uwaga

Jeśli konfigurujesz połączenie prywatnego indeksatora z wystąpieniem zarządzanym SQL, zapoznaj się z tym artykułem .

Usługa Azure AI Search wykonuje wywołania wychodzące do innych zasobów paaS platformy Azure w następujących scenariuszach:

  • Indeksator lub wyszukiwarka łączy się z usługą Azure OpenAI na potrzeby osadzania tekstu na wektor
  • Indeksator łączy się z obsługiwanymi źródłami danych
  • Połączenia indeksatora (zestawu umiejętności) z usługą Azure Storage na potrzeby buforowania wzbogaceń, danych sesji debugowania lub zapisywania w magazynie wiedzy
  • Żądania klucza szyfrowania do usługi Azure Key Vault
  • Niestandardowe żądania umiejętności do usługi Azure Functions lub podobnego zasobu

Udostępnione łącza prywatne działają tylko w przypadku połączeń azure-to-Azure. Jeśli łączysz się z usługą OpenAI lub innym modelem zewnętrznym, połączenie musi być za pośrednictwem publicznego Internetu.

Udostępnione linki prywatne są przeznaczone dla operacji i danych uzyskiwanych za pośrednictwem prywatnego punktu końcowego dla zasobów platformy Azure lub klientów uruchomionych w sieci wirtualnej platformy Azure.

Udostępniony link prywatny to:

  • Tworzenie przy użyciu narzędzi do wyszukiwania sztucznej inteligencji platformy Azure, interfejsów API lub zestawów SDK
  • Zatwierdzone przez właściciela zasobu PaaS platformy Azure
  • Używane wewnętrznie przez usługę Azure AI Search w połączeniu prywatnym z określonym zasobem platformy Azure

Tylko usługa wyszukiwania może używać utworzonych przez siebie linków prywatnych i może istnieć tylko jeden udostępniony link prywatny utworzony w usłudze dla każdej kombinacji zasobów i podźródła.

Po skonfigurowaniu łącza prywatnego jest on używany automatycznie za każdym razem, gdy usługa wyszukiwania łączy się z tym zasobem PaaS. Nie musisz modyfikować parametry połączenia ani zmieniać klienta używanego do wystawiania żądań, chociaż urządzenie używane na potrzeby połączenia musi łączyć się przy użyciu autoryzowanego adresu IP w zaporze zasobu usługi Azure PaaS.

Istnieją dwa scenariusze dotyczące używania usługi Azure Private Link i usługi Azure AI Search razem.

  • Scenariusz pierwszy: utworzenie udostępnionego łącza prywatnego, gdy połączenie wychodzące (indeksator) z usługą Azure PaaS wymaga połączenia prywatnego.

  • Scenariusz drugi: skonfiguruj wyszukiwanie prywatnego połączenia przychodzącego od klientów uruchomionych w sieci wirtualnej.

Scenariusz jeden został omówiony w tym artykule.

Chociaż oba scenariusze mają zależność od usługi Azure Private Link, są niezależne. Możesz utworzyć udostępniony link prywatny bez konieczności konfigurowania własnej usługi wyszukiwania dla prywatnego punktu końcowego.

Ograniczenia

Podczas oceniania udostępnionych linków prywatnych dla danego scenariusza pamiętaj o tych ograniczeniach.

  • Kilka typów zasobów używanych w udostępnionym linku prywatnym jest dostępnych w wersji zapoznawczej. Jeśli łączysz się z zasobem w wersji zapoznawczej (Azure Database for MySQL, Azure Functions lub Azure SQL Managed Instance), użyj wersji zapoznawczej interfejsu API REST zarządzania, aby utworzyć udostępniony link prywatny. Te wersje obejmują 2020-08-01-preview, 2021-04-01-previewi 2024-03-01-preview.

  • Wykonywanie indeksatora musi używać prywatnego środowiska wykonawczego specyficznego dla usługi wyszukiwania. Połączenia prywatnego punktu końcowego nie są obsługiwane w środowisku wielodostępnym. Ustawienie konfiguracji dla tego wymagania zostało omówione w tym artykule.

Wymagania wstępne

  • Usługa Azure AI Search w warstwie Podstawowa lub nowsza. Jeśli używasz wzbogacania sztucznej inteligencji i zestawów umiejętności, warstwa musi być standardowa 2 (S2) lub nowsza. Aby uzyskać szczegółowe informacje, zobacz Limity usług.

  • Zasób usługi Azure PaaS z poniższej listy obsługiwanych typów zasobów skonfigurowany do uruchamiania w sieci wirtualnej.

  • Uprawnienia zarówno w usłudze Azure AI Search, jak i w źródle danych:

    • W zasobie PaaS platformy Azure musisz mieć uprawnienie do zatwierdzania połączeń prywatnych punktów końcowych. Jeśli na przykład używasz konta usługi Azure Storage jako źródła danych (takiego jak kontener obiektów blob, udział usługi Azure Files, tabela platformy Azure), potrzebujesz polecenia Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action.

    • W usłudze wyszukiwania musisz mieć uprawnienia do odczytu i zapisu w udostępnionych zasobach łącza prywatnego i stanach operacji odczytu:

      • Microsoft.Search/searchServices/sharedPrivateLinkResources/write
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/read
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read

Obsługiwane typy zasobów

Możesz utworzyć udostępniony link prywatny dla następujących zasobów.

Typ zasobu Podźródło (lub identyfikator grupy)
Microsoft.Storage/storageAccounts 1 blob, , table, , dfsfile
Microsoft.DocumentDB/databaseAccounts 2 Sql
Microsoft.Sql/servers sqlServer
Microsoft.KeyVault/vaults vault
Microsoft.DBforMySQL/servers (wersja zapoznawcza) mysqlServer
Microsoft.Web/sites (wersja zapoznawcza) 3 sites
Microsoft.Sql/managedInstances (wersja zapoznawcza) 4 managedInstance
Microsoft.CognitiveServices/accounts (wersja zapoznawcza) 5 openai_account

1 Jeśli usługi Azure Storage i Azure AI Search znajdują się w tym samym regionie, połączenie z magazynem odbywa się za pośrednictwem sieci szkieletowej firmy Microsoft, co oznacza, że współużytkowany link prywatny jest nadmiarowy dla tej konfiguracji. Jeśli jednak skonfigurowano już prywatny punkt końcowy dla usługi Azure Storage, należy również skonfigurować udostępniony link prywatny lub połączenie zostanie odrzucone po stronie magazynu. Ponadto jeśli używasz wielu formatów magazynu dla różnych scenariuszy wyszukiwania, pamiętaj o utworzeniu oddzielnego udostępnionego łącza prywatnego dla każdego podźródła.

2 Typ Microsoft.DocumentDB/databaseAccounts zasobu jest używany dla połączeń indeksatora z usługą Azure Cosmos DB for NoSQL. W nazwie dostawcy i identyfikatorze grupy uwzględniana jest wielkość liter.

3 Typ Microsoft.Web/sites zasobu jest używany dla usług App Service i Azure Functions. W kontekście usługi Azure AI Search funkcja platformy Azure jest bardziej prawdopodobnym scenariuszem. Funkcja platformy Azure jest często używana do hostowania logiki umiejętności niestandardowych. Funkcja platformy Azure ma plany hostingu Consumption, Premium i Dedicated App Service. Środowisko App Service Environment (ASE) i usługa Azure Kubernetes Service (AKS) nie są obecnie obsługiwane.

4 Aby uzyskać instrukcje, zobacz Tworzenie udostępnionego łącza prywatnego dla wystąpienia zarządzanego SQL.

5 Typ Microsoft.CognitiveServices/accounts zasobu jest używany dla połączeń indeksatora z usługą Azure OpenAI podczas implementowania zintegrowanej wektoryzacji.

Użyj witryny Azure Portal, interfejsu API REST zarządzania, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby utworzyć udostępniony link prywatny.

Oto kilka wskazówek:

  • Nadaj linkowi prywatnemu zrozumiałą nazwę. W zasobie PaaS platformy Azure zostanie wyświetlony udostępniony link prywatny wraz z innymi prywatnymi punktami końcowymi. Nazwa, na przykład "shared-private-link-for-search", może przypominać, jak jest używana.

Po wykonaniu kroków w tej sekcji masz udostępniony link prywatny aprowizowany w stanie oczekiwania. Utworzenie linku trwa kilka minut. Po utworzeniu właściciel zasobu musi zatwierdzić żądanie, zanim będzie działać.

  1. Zaloguj się do witryny Azure Portal i znajdź usługę wyszukiwania.

  2. W obszarze Ustawienia w okienku nawigacji po lewej stronie wybierz pozycję Sieć.

  3. Na stronie Udostępniony dostęp prywatny wybierz pozycję + Dodaj udostępniony dostęp prywatny.

  4. Wybierz Połączenie do zasobu platformy Azure w moim katalogu lub Połączenie do zasobu platformy Azure według identyfikatora zasobu.

  5. Jeśli wybierzesz pierwszą opcję (zalecaną), portal pomoże Ci wybrać odpowiedni zasób platformy Azure i wypełnić inne właściwości, takie jak identyfikator grupy zasobu i typ zasobu.

    Zrzut ekranu przedstawiający stronę Dodawanie udostępnionego dostępu prywatnego z przewodnikiem umożliwiającym utworzenie udostępnionego zasobu łącza prywatnego.

  6. Jeśli wybierzesz drugą opcję, wprowadź identyfikator zasobu platformy Azure ręcznie i wybierz odpowiedni identyfikator grupy z listy na początku tego artykułu.

    Zrzut ekranu przedstawiający stronę Dodawanie współużytkowanego dostępu prywatnego z ręcznym środowiskiem tworzenia udostępnionego zasobu łącza prywatnego.

  7. Upewnij się, że stan aprowizacji to "Aktualizowanie".

    Zrzut ekranu przedstawiający stronę Dodawanie współużytkowanego dostępu prywatnego z wyświetlonym postępem tworzenia zasobów.

  8. Po pomyślnym utworzeniu zasobu stan aprowizacji zasobu zmieni się na "Powodzenie".

    Zrzut ekranu przedstawiający stronę Dodawanie udostępnionego dostępu prywatnego z ukończonym tworzeniem zasobów.

202 Accepted Odpowiedź jest zwracana po powodzeniu. Proces tworzenia wychodzącego prywatnego punktu końcowego jest długotrwałą operacją (asynchroniczną). Obejmuje wdrożenie następujących zasobów:

  • Prywatny punkt końcowy przydzielony z prywatnym adresem IP w "Pending" stanie. Prywatny adres IP jest uzyskiwany z przestrzeni adresowej przydzielonej do sieci wirtualnej środowiska wykonawczego dla indeksatora prywatnego specyficznego dla usługi wyszukiwania. Po zatwierdzeniu prywatnego punktu końcowego każda komunikacja z usługi Azure AI Search do zasobu platformy Azure pochodzi z prywatnego adresu IP i bezpiecznego kanału łącza prywatnego.

  • Prywatna strefa DNS dla typu zasobu na podstawie identyfikatora grupy. Wdrażając ten zasób, upewnij się, że wszystkie wyszukiwania DNS w zasobie prywatnym korzystają z adresu IP skojarzonego z prywatnym punktem końcowym.

2 — Zatwierdzanie połączenia prywatnego punktu końcowego

Zatwierdzenie połączenia prywatnego punktu końcowego jest przyznawane po stronie usługi Azure PaaS. Wymagane jest jawne zatwierdzenie przez właściciela zasobu. Poniższe kroki obejmują zatwierdzanie przy użyciu witryny Azure Portal, ale poniżej przedstawiono kilka linków do programowego zatwierdzania połączenia po stronie usługi Azure PaaS:

Korzystając z witryny Azure Portal, wykonaj następujące kroki:

  1. Otwórz stronę Sieć zasobu PaaS platformy Azure.Tekst

  2. Znajdź sekcję zawierającą listę połączeń prywatnych punktów końcowych. Poniższy przykład dotyczy konta magazynu.

    Zrzut ekranu witryny Azure Portal przedstawiający okienko Połączenia prywatnego punktu końcowego.

  3. Wybierz połączenie, a następnie wybierz pozycję Zatwierdź. Zaktualizowanie stanu w portalu może potrwać kilka minut.

    Zrzut ekranu witryny Azure Portal przedstawiający stan Zatwierdzone w okienku Połączenia prywatnego punktu końcowego.

Po zatwierdzeniu prywatnego punktu końcowego usługa Azure AI Search tworzy niezbędne mapowania stref DNS w utworzonej dla niej strefie DNS.

Mimo że link prywatnego punktu końcowego na stronie Sieć jest aktywny, nie zostanie rozwiązany.

Zrzut ekranu przedstawiający link prywatnego punktu końcowego na stronie sieci PaaS platformy Azure.

Wybranie linku powoduje błąd. Zostanie wyświetlony komunikat o "The access token is from the wrong issuer"must match the tenant associated with this subscription stanie, ponieważ zasób prywatnego punktu końcowego zaplecza jest aprowizowany przez firmę Microsoft w dzierżawie zarządzanej przez firmę Microsoft, podczas gdy połączony zasób (Azure AI Search) znajduje się w dzierżawie. Zgodnie z projektem nie można uzyskać dostępu do zasobu prywatnego punktu końcowego, wybierając link połączenia prywatnego punktu końcowego.

Postępuj zgodnie z instrukcjami w następnej sekcji, aby sprawdzić stan udostępnionego łącza prywatnego.

Po stronie usługi Azure AI Search możesz potwierdzić zatwierdzenie żądania, ponownie przeglądając stronę Współużytkowany dostęp prywatny na stronie Sieć usługi wyszukiwania. należy zatwierdzić stan Połączenie ion.

Zrzut ekranu witryny Azure Portal przedstawiający zatwierdzony zasób udostępnionego łącza prywatnego.

Możesz również uzyskać stan połączenia przy użyciu interfejsu API GET Shared Private Link.

az rest --method get --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2023-11-01

Spowoduje to zwrócenie kodu JSON, w którym stan połączenia będzie wyświetlany jako "status" w sekcji "properties". Poniżej przedstawiono przykład konta magazynu.

{
      "name": "blob-pe",
      "properties": {
        "privateLinkResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage",
        "groupId": "blob",
        "requestMessage": "please approve",
        "status": "Approved",
        "resourceRegion": null,
        "provisioningState": "Succeeded"
      }
}

Jeśli stan aprowizacji (properties.provisioningState) zasobu to "Powodzenie", a stan połączenia(properties.status) to "Zatwierdzone", oznacza to, że współużytkowany zasób łącza prywatnego jest funkcjonalny, a indeksator można skonfigurować do komunikowania się za pośrednictwem prywatnego punktu końcowego.

4 — Konfigurowanie indeksatora do uruchamiania w środowisku prywatnym

Wykonywanie indeksatora odbywa się w prywatnym środowisku specyficznym dla usługi wyszukiwania lub w środowisku wielodostępnym używanym wewnętrznie do odciążania kosztownego przetwarzania zestawu umiejętności dla wielu klientów.

Środowisko wykonywania jest przezroczyste, ale po rozpoczęciu tworzenia reguł zapory lub ustanawianiu połączeń prywatnych należy wziąć pod uwagę wykonywanie indeksatora. W przypadku połączenia prywatnego skonfiguruj wykonywanie indeksatora, aby zawsze było uruchamiane w środowisku prywatnym.

W tym kroku pokazano, jak skonfigurować indeksator do uruchamiania w środowisku prywatnym przy użyciu interfejsu API REST. Środowisko wykonywania można również ustawić przy użyciu edytora JSON w portalu.

Uwaga

Ten krok można wykonać przed zatwierdzeniem połączenia prywatnego punktu końcowego. Jednak dopóki połączenie prywatnego punktu końcowego nie zostanie wyświetlone jako zatwierdzone, każdy istniejący indeksator, który próbuje nawiązać komunikację z bezpiecznym zasobem (takim jak konto magazynu), zakończy się przejściowym stanem awarii, a nowe indeksatory nie zostaną utworzone.

  1. Utwórz definicję źródła danych, indeks i zestaw umiejętności (jeśli używasz go), tak jak zwykle. W żadnej z tych definicji nie ma żadnych właściwości, które różnią się w przypadku korzystania z udostępnionego prywatnego punktu końcowego.

  2. Utwórz indeksator , który wskazuje źródło danych, indeks i zestaw umiejętności utworzony w poprzednim kroku. Ponadto wymusić uruchomienie indeksatora w prywatnym środowisku wykonywania przez ustawienie właściwości konfiguracji indeksatora executionEnvironment na private.

    {
        "name": "indexer",
        "dataSourceName": "blob-datasource",
        "targetIndexName": "index",
        "parameters": {
            "configuration": {
                "executionEnvironment": "private"
            }
        },
        "fieldMappings": []
    }
    

Po pomyślnym utworzeniu indeksatora powinien nawiązać połączenie z zasobem platformy Azure za pośrednictwem połączenia prywatnego punktu końcowego. Stan indeksatora można monitorować przy użyciu interfejsu API stanu indeksatora.

Uwaga

Jeśli masz już istniejące indeksatory, możesz je zaktualizować za pośrednictwem interfejsu API PUT, ustawiając executionEnvironment wartość na private lub używając edytora JSON w portalu.

  1. Jeśli jeszcze tego nie zrobiono, sprawdź, czy zasób PaaS platformy Azure odrzuca połączenia z publicznego Internetu. Jeśli połączenia są akceptowane, zapoznaj się z ustawieniami DNS na stronie Sieć zasobu usługi Azure PaaS.

  2. Wybierz narzędzie, które może wywołać scenariusz żądania wychodzącego, na przykład połączenie indeksatora z prywatnym punktem końcowym. Łatwym wyborem jest użycie kreatora importu danych , ale możesz również wypróbować klienta REST i interfejsy API REST, aby uzyskać większą precyzję. Zakładając, że usługa wyszukiwania nie jest również skonfigurowana dla połączenia prywatnego, połączenie klienta REST z wyszukiwaniem może być za pośrednictwem publicznego Internetu.

  3. Ustaw parametry połączenia na prywatny zasób PaaS platformy Azure. Format parametry połączenia nie zmienia się dla udostępnionego łącza prywatnego. Usługa wyszukiwania wywołuje współużytkowany link prywatny wewnętrznie.

    W przypadku obciążeń indeksatora parametry połączenia znajduje się w definicji źródła danych. Przykład źródła danych może wyglądać następująco:

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. W przypadku obciążeń indeksatora pamiętaj, aby ustawić środowisko wykonywania w definicji indeksatora. Przykład definicji indeksatora może wyglądać następująco:

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. Uruchom indeksator. Jeśli wykonanie indeksatora zakończy się pomyślnie i indeks wyszukiwania zostanie wypełniony, współużytkowany link prywatny działa.

Rozwiązywanie problemów

  • Jeśli tworzenie indeksatora zakończy się niepowodzeniem z komunikatem "Poświadczenia źródła danych są nieprawidłowe", sprawdź stan zatwierdzenia udostępnionego łącza prywatnego przed debugowaniem połączenia. Jeśli stan to Approved, sprawdź properties.provisioningState właściwość . Jeśli tak jest Incomplete, może wystąpić problem z zależnościami bazowymi. W takim przypadku ponownie prześlij PUT żądanie ponownego utworzenia udostępnionego łącza prywatnego. Może być również konieczne powtórzenie kroku zatwierdzania.

  • Jeśli indeksatory sporadycznie kończą się niepowodzeniem lub sporadycznie, sprawdź executionEnvironment właściwość indeksatora. Wartość powinna być ustawiona na private. Jeśli ta właściwość nie zostanie ustawiona, a indeksator przebiegnie pomyślnie w przeszłości, jest to spowodowane tym, że usługa wyszukiwania korzystała ze środowiska prywatnego własnego porozumienia. Usługa wyszukiwania przenosi przetwarzanie ze środowiska standardowego, jeśli system jest obciążony.

  • Jeśli podczas tworzenia udostępnionego linku prywatnego wystąpi błąd, sprawdź limity usług, aby sprawdzić, czy jesteś w ramach limitu przydziału dla danej warstwy.

Następne kroki

Dowiedz się więcej o prywatnych punktach końcowych i innych bezpiecznych metodach połączenia: