Faça conexões de saída por meio de um link privado compartilhado

Este artigo explica como configurar chamadas privadas de saída do Azure AI Search para um recurso PaaS do Azure executado em uma rede virtual do Azure.

A configuração de uma conexão privada permite que um serviço de pesquisa se conecte a um endereço IP de rede virtual em vez de uma porta aberta para a Internet. O objeto criado para a conexão é chamado de link privado compartilhado. Na conexão, o serviço de pesquisa usa o link privado compartilhado internamente para alcançar um recurso PaaS do Azure dentro do limite da rede.

O link privado compartilhado é um recurso premium que é cobrado pelo uso. Quando você configura um link privado compartilhado, as cobranças pelo ponto de extremidade privado são adicionadas à sua fatura do Azure. À medida que você usa o link privado compartilhado, as taxas de transferência de dados para acesso de entrada e saída também são faturadas. Para obter detalhes, consulte Preços do Link Privado do Azure.

Nota

Se você estiver configurando uma conexão de indexador privado com uma Instância Gerenciada SQL, consulte este artigo para obter etapas específicas para esse tipo de recurso.

O Azure AI Search faz chamadas de saída para outros recursos de PaaS do Azure nos seguintes cenários:

  • Conexões de indexador ou mecanismo de pesquisa com o Azure OpenAI para incorporações de texto para vetor
  • Conexões do indexador com fontes de dados suportadas
  • Conexões de indexador (conjunto de habilidades) com o Armazenamento do Azure para enriquecimento de cache, depuração de sessão ou gravação em um repositório de conhecimento
  • Solicitações de chave de criptografia para o Cofre de Chaves do Azure
  • Solicitações de habilidades personalizadas para o Azure Functions ou recurso semelhante

Os links privados compartilhados só funcionam para conexões Azure-to-Azure. Se você estiver se conectando ao OpenAI ou outro modelo externo, a conexão deve ser pela internet pública.

Os links privados compartilhados são para operações e dados acessados por meio de um ponto de extremidade privado para recursos ou clientes do Azure executados em uma rede virtual do Azure.

Um link privado compartilhado é:

  • Criado usando ferramentas, APIs ou SDKs do Azure AI Search
  • Aprovado pelo proprietário do recurso PaaS do Azure
  • Usado internamente pela Pesquisa de IA do Azure em uma conexão privada com um recurso específico do Azure

Somente seu serviço de pesquisa pode usar os links privados que ele cria, e pode haver apenas um link privado compartilhado criado em seu serviço para cada combinação de recursos e subrecursos.

Depois de configurar o link privado, ele é usado automaticamente sempre que o serviço de pesquisa se conecta a esse recurso PaaS. Você não precisa modificar a cadeia de conexão ou alterar o cliente que está usando para emitir as solicitações, embora o dispositivo usado para a conexão deva se conectar usando um IP autorizado no firewall do recurso PaaS do Azure.

Há dois cenários para usar o Azure Private Link e o Azure AI Search juntos.

  • Cenário um: crie um link privado compartilhado quando uma conexão de saída (indexador) com o Azure PaaS exigir uma conexão privada.

  • Cenário dois: configurar a pesquisa de uma conexão de entrada privada de clientes executados em uma rede virtual.

O cenário um é abordado neste artigo.

Embora ambos os cenários dependam do Azure Private Link, eles são independentes. Você pode criar um link privado compartilhado sem ter que configurar seu próprio serviço de pesquisa para um ponto de extremidade privado.

Limitações

Ao avaliar links privados compartilhados para seu cenário, lembre-se dessas restrições.

  • Vários dos tipos de recursos usados em um link privado compartilhado estão em visualização. Se você estiver se conectando a um recurso de visualização (Banco de Dados do Azure para MySQL ou Instância Gerenciada SQL do Azure), use uma versão de visualização da API REST de Gerenciamento para criar o link privado compartilhado. Essas versões incluem 2020-08-01-preview, 2021-04-01-preview, 2024-03-01-previewe 2024-06-01-preview. Recomendamos a API de visualização mais recente.

  • A execução do indexador deve usar o ambiente de execução privado específico do seu serviço de pesquisa. As conexões de ponto de extremidade privado não são suportadas no ambiente multilocatário. A definição de configuração para este requisito é abordada neste artigo.

Pré-requisitos

  • Apenas para vetorização integrada, as conexões de saída por meio de link privado compartilhado são suportadas em todos os níveis faturáveis, somente em serviços criados após 3 de abril de 2024 localizados em regiões que oferecem maior capacidade.

  • Para enriquecimento de IA, processamento de conjunto de habilidades que não inclui uma habilidade de incorporação e em serviços criados antes de 3 de abril de 2024, a Pesquisa de IA do Azure deve ser Padrão 2 (S2) ou superior.

  • Para todos os outros casos de uso, que não envolvem conjuntos de habilidades, a Pesquisa de IA do Azure pode ser Básica ou superior.

  • Um recurso PaaS do Azure da seguinte lista de tipos de recursos suportados, configurado para ser executado em uma rede virtual.

  • Permissões na Pesquisa de IA do Azure e na fonte de dados:

    • No recurso PaaS do Azure, você deve ter a permissão para aprovar conexões de ponto de extremidade privadas. Por exemplo, se você estiver usando uma conta de Armazenamento do Azure como sua fonte de dados (como contêiner de Blob, compartilhamento de Arquivos do Azure, tabela do Azure), precisará do Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action.

    • No serviço de pesquisa, você deve ter permissões de leitura e gravação em recursos de link privado compartilhado e status de operação de leitura:

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

Tipos de recursos suportados

Você pode criar um link privado compartilhado para os seguintes recursos.

Tipo de recurso Subrecurso (ou ID de Grupo)
Microsoft.Storage/storageContas 1 blob, table, dfs, file
Microsoft.DocumentDB/databaseAccounts 2 Sql
Microsoft.Sql/servidores 3 sqlServer
Microsoft.KeyVault/cofres vault
Microsoft.DBforMySQL/servers (visualização) mysqlServer
Microsoft.Web/sites 4 sites
Microsoft.Sql/managedInstances (visualização) 5 managedInstance
Microsoft.CognitiveServices/contas 6 7 openai_account

1 Se o Armazenamento do Azure e a Pesquisa de IA do Azure estiverem na mesma região, a conexão com o armazenamento será feita pela rede de backbone da Microsoft, o que significa que um link privado compartilhado será redundante para essa configuração. No entanto, se você já configurou um ponto de extremidade privado para o Armazenamento do Azure, também deve configurar um link privado compartilhado ou a conexão é recusada no lado do armazenamento. Além disso, se você estiver usando vários formatos de armazenamento para vários cenários na pesquisa, crie um link privado compartilhado separado para cada subrecurso.

2 O Microsoft.DocumentDB/databaseAccounts tipo de recurso é usado para conexões de indexador com o Azure Cosmos DB para NoSQL. O nome do provedor e a ID do grupo diferenciam maiúsculas de minúsculas.

3 O Microsoft.Sql/servers tipo de recurso é usado para conexões com o banco de dados SQL do Azure. Atualmente, não há suporte para um link privado compartilhado para o Azure Synapse SQL.

4 O Microsoft.Web/sites tipo de recurso é usado para o Serviço de aplicativo e as funções do Azure. No contexto do Azure AI Search, uma função do Azure é o cenário mais provável. Uma função do Azure é comumente usada para hospedar a lógica de uma habilidade personalizada. O Azure Function tem planos de hospedagem de Consumo, Premium e Serviço de Aplicativo Dedicado. O Ambiente do Serviço de Aplicativo (ASE), o Serviço Kubernetes do Azure (AKS) e o Gerenciamento de API do Azure não são suportados no momento.

5 Consulte Criar um link privado compartilhado para uma instância gerenciada do SQL para obter instruções.

6 O Microsoft.CognitiveServices/accounts tipo de recurso é usado para conexões de vetorizador e indexador ao Azure OpenAI ao implementar vetorização integrada. Atualmente, não há suporte para link privado compartilhado para incorporar modelos no catálogo de modelos do Azure AI Studio ou para a API multimodal do Azure AI Vision.

7 O Link Privado Compartilhado para Azure OpenAI só é suportado na nuvem pública. Outras ofertas de nuvem, como o Microsoft Azure Government , não têm suporte para Links Privados Compartilhados para openai_account ID de Grupo.

Use o portal do Azure, a API REST de gerenciamento, a CLI do Azure ou o Azure PowerShell para criar um link privado compartilhado.

Aqui estão algumas dicas:

  • Dê ao link privado um nome significativo. No recurso PaaS do Azure, um link privado compartilhado aparece ao lado de outros pontos de extremidade privados. Um nome como "shared-private-link-for-search" pode lembrá-lo de como é usado.

Ao concluir as etapas nesta seção, você terá um link privado compartilhado provisionado em um estado pendente. Leva vários minutos para criar o link. Depois de criada, o proprietário do recurso deve aprovar a solicitação antes que ela esteja operacional.

  1. Entre no portal do Azure e encontre seu serviço de pesquisa.

  2. Em Configurações no painel de navegação esquerdo, selecione Rede.

  3. Na página Acesso Privado Partilhado, selecione + Adicionar Acesso Privado Partilhado.

  4. Selecione Conectar a um recurso do Azure em meu diretório ou Conectar a um recurso do Azure por ID de recurso.

  5. Se você selecionar a primeira opção (recomendada), o portal ajudará você a escolher o recurso apropriado do Azure e preencherá outras propriedades, como a ID de grupo do recurso e o tipo de recurso.

    Captura de ecrã da página Adicionar Acesso Privado Partilhado, mostrando uma experiência guiada para criar um recurso de ligação privada partilhada.

  6. Se você selecionar a segunda opção, insira a ID de recurso do Azure manualmente e escolha a ID de grupo apropriada na lista no início deste artigo.

    Captura de ecrã da página Adicionar Acesso Privado Partilhado, mostrando a experiência manual para criar um recurso de ligação privada partilhada.

  7. Confirme se o status de provisionamento é "Atualização".

    Captura de ecrã da página Adicionar Acesso Privado Partilhado, mostrando a criação de recursos em curso.

  8. Quando o recurso é criado com êxito, o estado de provisionamento do recurso muda para "Êxito".

    Captura de ecrã da página Adicionar Acesso Privado Partilhado, mostrando a criação do recurso concluída.

Uma 202 Accepted resposta é devolvida em caso de sucesso. O processo de criação de um ponto de extremidade privado de saída é uma operação de longa execução (assíncrona). Envolve a implantação dos seguintes recursos:

  • Um ponto de extremidade privado, alocado com um endereço IP privado em um "Pending" estado. O endereço IP privado é obtido a partir do espaço de endereço alocado para a rede virtual do ambiente de execução para o indexador privado específico do serviço de pesquisa. Após a aprovação do ponto de extremidade privado, qualquer comunicação da Pesquisa de IA do Azure para o recurso do Azure é originada do endereço IP privado e de um canal de link privado seguro.

  • Uma zona DNS privada para o tipo de recurso, com base no ID do grupo. Ao implantar esse recurso, você garante que qualquer pesquisa de DNS para o recurso privado utilize o endereço IP associado ao ponto de extremidade privado.

2 - Aprovar a conexão de ponto final privado

A aprovação da conexão de ponto de extremidade privado é concedida no lado PaaS do Azure. É necessária a aprovação explícita do proprietário do recurso. As etapas a seguir abrangem a aprovação usando o portal do Azure, mas aqui estão alguns links para aprovar a conexão programaticamente do lado do Azure PaaS:

Usando o portal do Azure, execute as seguintes etapas:

  1. Abra a página Rede do recurso PaaS do Azure.Texto

  2. Encontre a seção que lista as conexões de ponto de extremidade privadas. O exemplo a seguir é para uma conta de armazenamento.

    Captura de ecrã do portal do Azure, mostrando o painel Ligações de ponto de extremidade privado.

  3. Selecione a conexão e, em seguida, selecione Aprovar. Pode levar alguns minutos para que o status seja atualizado no portal.

    Captura de ecrã do portal do Azure, mostrando um estado Aprovado no painel Ligações de ponto de extremidade privado.

Depois que o ponto de extremidade privado é aprovado, o Azure AI Search cria os mapeamentos de zona DNS necessários na zona DNS criada para ele.

Embora o link do ponto de extremidade privado na página Rede esteja ativo, ele não será resolvido.

Captura de ecrã da ligação do ponto de extremidade privado na página de rede PaaS do Azure.

Selecionar o link produz um erro. Uma mensagem de status de e must match the tenant associated with this subscription aparece porque o recurso de ponto de extremidade privado de back-end é provisionado "The access token is from the wrong issuer" pela Microsoft em um locatário gerenciado pela Microsoft, enquanto o recurso vinculado (Azure AI Search) está em seu locatário. É por design que você não pode acessar o recurso de ponto de extremidade privado selecionando o link de conexão de ponto de extremidade privado.

Siga as instruções na próxima seção para verificar o status do seu link privado compartilhado.

No lado da Pesquisa de IA do Azure, você pode confirmar a aprovação da solicitação revisitando a página Acesso Privado Compartilhado da página Rede do serviço de pesquisa. O estado da conexão deve ser aprovado.

Captura de ecrã do portal do Azure, mostrando um recurso de ligação privada partilhada Aprovado.

Como alternativa, você também pode obter o estado da conexão usando os Recursos de Link Privado Compartilhado - Get.

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

Isso retornaria um JSON, onde o estado da conexão aparece como "status" na seção "propriedades". Segue-se um exemplo de uma conta de armazenamento.

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

Se o estado de provisionamento (properties.provisioningState) do recurso for "Bem-sucedido" e o estado da conexão(properties.status) for "Aprovado", isso significa que o recurso de link privado compartilhado está funcional e o indexador pode ser configurado para se comunicar pelo ponto de extremidade privado.

4 - Configurar o indexador para ser executado no ambiente privado

A execução do indexador ocorre em um ambiente privado específico para o serviço de pesquisa ou em um ambiente multilocatário usado internamente para descarregar o processamento dispendioso do conjunto de habilidades para vários clientes.

O ambiente de execução é transparente, mas depois de começar a criar regras de firewall ou estabelecer conexões privadas, você deve levar em conta a execução do indexador. Para uma conexão privada, configure a execução do indexador para sempre ser executada no ambiente privado.

Esta etapa mostra como configurar o indexador para ser executado no ambiente privado usando a API REST. Você também pode definir o ambiente de execução usando o editor JSON no portal.

Nota

Você pode executar esta etapa antes que a conexão de ponto de extremidade privado seja aprovada. No entanto, até que a conexão de ponto de extremidade privado apareça como aprovada, qualquer indexador existente que tente se comunicar com um recurso seguro (como a conta de armazenamento) acabará em um estado de falha transitória e novos indexadores não poderão ser criados.

  1. Crie a definição, o índice e o conjunto de habilidades da fonte de dados (se estiver usando um) como faria normalmente. Não há propriedades em nenhuma dessas definições que variam ao usar um ponto de extremidade privado compartilhado.

  2. Crie um indexador que aponte para a fonte de dados, o índice e o conjunto de habilidades que você criou na etapa anterior. Além disso, force o indexador a ser executado no ambiente de execução privada definindo a propriedade de configuração do indexador executionEnvironment como private.

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

Depois que o indexador for criado com êxito, ele deverá se conectar ao recurso do Azure por meio da conexão de ponto de extremidade privado. Você pode monitorar o status do indexador usando a API de Status do Indexador.

Nota

Se você já tiver indexadores existentes, poderá atualizá-los por meio da API PUT definindo o executionEnvironment para private ou usando o editor JSON no portal.

  1. Se você ainda não tiver feito isso, verifique se seu recurso PaaS do Azure recusa conexões da Internet pública. Se as conexões forem aceitas, revise as configurações de DNS na página Rede do seu recurso PaaS do Azure.

  2. Escolha uma ferramenta que possa invocar um cenário de solicitação de saída, como uma conexão de indexador com um ponto de extremidade privado. Uma opção fácil é usar o assistente Importar dados , mas você também pode tentar um cliente REST e APIs REST para obter mais precisão. Supondo que seu serviço de pesquisa também não esteja configurado para uma conexão privada, a conexão do cliente REST para pesquisar pode ser pela Internet pública.

  3. Defina a cadeia de conexão para o recurso privado de PaaS do Azure. O formato da cadeia de conexão não muda para o link privado compartilhado. O serviço de pesquisa invoca o link privado compartilhado internamente.

    Para cargas de trabalho de indexador, a cadeia de conexão está na definição da fonte de dados. Um exemplo de uma fonte de dados pode ter esta aparência:

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. Para cargas de trabalho do indexador, lembre-se de definir o ambiente de execução na definição do indexador. Um exemplo de uma definição de indexador pode ter esta aparência:

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. Execute o indexador. Se a execução do indexador for bem-sucedida e o índice de pesquisa for preenchido, o link privado compartilhado estará funcionando.

Resolução de Problemas

  • Se a criação do indexador falhar com "As credenciais da fonte de dados são inválidas", verifique o status de aprovação do link privado compartilhado antes de depurar a conexão. Se o status for Approved, verifique a properties.provisioningState propriedade. Se for , pode haver um problema com dependências Incompletesubjacentes. Nesse caso, reemita a PUT solicitação para recriar o link privado compartilhado. Também pode ser necessário repetir a etapa de aprovação.

  • Se os indexadores falharem de forma consistente ou intermitente, verifique a executionEnvironment propriedade no indexador. O valor deve ser definido como private. Se você não definiu essa propriedade e as execuções do indexador foram bem-sucedidas no passado, é porque o serviço de pesquisa usou um ambiente privado por conta própria. Um serviço de pesquisa move o processamento para fora do ambiente padrão se o sistema estiver sob carga.

  • Se você receber um erro ao criar um link privado compartilhado, verifique os limites de serviço para verificar se você está abaixo da cota para sua camada.

Próximos passos

Saiba mais sobre pontos de extremidade privados e outros métodos de conexão segura: