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 platformy Azure.
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 usługą SQL Managed Instance, zapoznaj się z tym artykułem , aby zapoznać się z krokami specyficznymi dla tego typu zasobu.
Kiedy używać udostępnionego łącza prywatnego
Usługa Azure AI Search wykonuje wywołania wychodzące do innych zasobów paaS platformy Azure w następujących scenariuszach:
- Połączenia indeksatora lub wyszukiwarki z usługą Azure OpenAI na potrzeby osadzania tekstu na wektor
- Połączenia indeksatora 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 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-preview
2024-03-01-preview
i2024-06-01-preview
. Zalecamy najnowszą wersję zapoznawcza interfejsu API.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
Tylko w przypadku zintegrowanej wektoryzacji połączenia wychodzące za pośrednictwem udostępnionego łącza prywatnego są obsługiwane we wszystkich warstwach rozliczanych, tylko w przypadku usług utworzonych po 3 kwietnia 2024 r. znajdujących się w regionach zapewniających większą pojemność.
W przypadku wzbogacania sztucznej inteligencji przetwarzanie zestawu umiejętności, które nie obejmuje umiejętności osadzania i usług utworzonych przed 3 kwietnia 2024 r., usługa Azure AI Search musi być w warstwie Standardowa 2 (S2) lub nowsza.
W przypadku wszystkich innych przypadków użycia, które nie obejmują zestawów umiejętności, usługa Azure AI Search może być podstawowa lub wyższa.
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 , , dfs file |
Microsoft.DocumentDB/databaseAccounts 2 | Sql |
Microsoft.Sql/servers 3 | sqlServer |
Microsoft.KeyVault/vaults | vault |
Microsoft.DBforMySQL/servers (wersja zapoznawcza) | mysqlServer |
Microsoft.Web/sites 4 | sites |
Microsoft.Sql/managedInstances (wersja zapoznawcza) 5 | managedInstance |
Microsoft.CognitiveServices/accounts 6 7 | 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.Sql/servers
zasobu jest używany na potrzeby połączeń z bazą danych Azure SQL Database. Obecnie nie ma obsługi udostępnionego łącza prywatnego do usługi Azure Synapse SQL.
4 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), usługa Azure Kubernetes Service (AKS) i usługa Azure API Management nie są obecnie obsługiwane.
5 Aby uzyskać instrukcje, zobacz Tworzenie udostępnionego łącza prywatnego dla wystąpienia zarządzanego SQL.
6 Typ Microsoft.CognitiveServices/accounts
zasobu jest używany dla połączeń wektoryzatora i indeksatora z usługą Azure OpenAI podczas implementowania zintegrowanej wektoryzacji. Obecnie nie ma obsługi udostępnionego łącza prywatnego do osadzania modeli w katalogu modeli usługi Azure AI Studio ani do wielomodalnego interfejsu API usługi Azure AI Vision.
7 Udostępnione łącze prywatne dla usługi Azure OpenAI jest obsługiwane tylko w chmurze publicznej. Inne oferty w chmurze, takie jak Microsoft Azure Government , nie obsługują udostępnionych linków prywatnych dla openai_account
identyfikatora grupy.
1 — Tworzenie udostępnionego łącza prywatnego
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ć.
- Witryna Azure Portal
- Interfejs API REST
- Program PowerShell
- Interfejs wiersza polecenia platformy Azure
Zaloguj się do witryny Azure Portal i znajdź usługę wyszukiwania.
W obszarze Ustawienia w okienku nawigacji po lewej stronie wybierz pozycję Sieć.
Na stronie Udostępniony dostęp prywatny wybierz pozycję + Dodaj udostępniony dostęp prywatny.
Wybierz pozycję Połącz z zasobem platformy Azure w moim katalogu lub Połącz z zasobem platformy Azure według identyfikatora zasobu.
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.
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.
Upewnij się, że stan aprowizacji to "Aktualizowanie".
Po pomyślnym utworzeniu zasobu stan aprowizacji zasobu zmieni się na "Powodzenie".
Przepływ pracy tworzenia udostępnionego łącza prywatnego
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:
- W usłudze Azure Storage użyj połączeń prywatnych punktów końcowych — Put
- W usłudze Azure Cosmos DB użyj połączeń prywatnych punktów końcowych — tworzenie lub aktualizowanie
- W usłudze Azure OpenAI użyj połączeń prywatnych punktów końcowych — tworzenie lub aktualizowanie
Korzystając z witryny Azure Portal, wykonaj następujące kroki:
Otwórz stronę Sieć zasobu PaaS platformy Azure.Tekst
Znajdź sekcję zawierającą listę połączeń prywatnych punktów końcowych. Poniższy przykład dotyczy konta magazynu.
Wybierz połączenie, a następnie wybierz pozycję Zatwierdź. Zaktualizowanie stanu w portalu może potrwać kilka minut.
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.
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.
3 — Sprawdzanie stanu 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. Stan połączenia powinien zostać zatwierdzony.
Możesz również uzyskać stan połączenia przy użyciu udostępnionych zasobów usługi Private Link — Pobierz.
az rest --method get --uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2024-07-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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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.
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.
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
naprivate
.{ "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.
5 — Testowanie udostępnionego łącza prywatnego
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.
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.
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=..." }
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": [] }
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 jestIncomplete
, może wystąpić problem z zależnościami bazowymi. W takim przypadku ponownie prześlijPUT
żą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 naprivate
. 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: