Criar um link privado compartilhado para uma instância gerenciada do SQL a partir da Pesquisa de IA do Azure

Este artigo explica como configurar um indexador no Azure AI Search para uma conexão privada com uma instância gerenciada do SQL que é executada em uma rede virtual.

Em uma conexão privada com uma instância gerenciada, o FQDN (nome de domínio totalmente qualificado) da instância deve incluir a Zona DNS. Atualmente, apenas a API REST do Azure AI Search Management fornece um resourceRegion parâmetro para aceitar a especificação da zona DNS.

Embora você possa chamar a API REST de Gerenciamento diretamente, é mais fácil usar o módulo CLI az rest do Azure para enviar chamadas da API REST de Gerenciamento de uma linha de comando. Este artigo usa a CLI do Azure com REST para configurar o link privado.

Nota

Este artigo refere-se ao portal do Azure para obter propriedades e confirmar etapas. No entanto, ao criar o link privado compartilhado para a Instância Gerenciada do SQL, verifique se você está usando a API REST. Embora a guia Rede seja listada Microsoft.Sql/managedInstances como uma opção, o portal atualmente não oferece suporte ao formato de URL estendido usado pela Instância Gerenciada SQL.

Pré-requisitos

  • CLI do Azure

  • Azure AI Search, Basic ou superior. Se você estiver usando o enriquecimento de IA e conjuntos de habilidades, use o Padrão 2 (S2) ou superior. Consulte Limites de serviço para obter detalhes.

  • Instância Gerenciada SQL do Azure, configurada para ser executada em uma rede virtual.

  • Você deve ter um mínimo de permissões de Colaborador na Pesquisa de IA do Azure e na Instância Gerenciada do SQL.

  • Cadeia de conexão da Instância Gerenciada SQL do Azure. Atualmente, a identidade gerenciada não é suportada com link privado compartilhado. Sua cadeia de conexão deve incluir um nome de usuário e senha.

Nota

O Azure Private Link é usado internamente, sem nenhum custo, para configurar o link privado compartilhado.

1 - Recuperar informações de conexão

Recupere o FQDN da instância gerenciada, incluindo a zona DNS. A zona DNS faz parte do nome de domínio da Instância Gerenciada SQL. Por exemplo, se o FQDN da Instância Gerenciada SQL for my-sql-managed-instance.00000000000.database.windows.net, a zona DNS será 00000000000.

  1. No portal do Azure, localize o objeto de instância gerenciada SQL.

  2. Na guia Visão Geral, localize a propriedade Host. Copie a parte da zona DNS do FQDN para a próxima etapa.

  3. Na guia Cadeias de conexão, copie a cadeia de conexão ADO.NET para uma etapa posterior. É necessário para a conexão da fonte de dados ao testar a conexão privada.

Para obter mais informações sobre propriedades de conexão, consulte Criar uma instância gerenciada SQL do Azure.

2 - Crie o corpo do pedido

  1. Usando um editor de texto, crie o JSON para o link privado compartilhado.

    {
        "name": "{{shared-private-link-name}}",
        "properties": {
            "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}",
            "resourceRegion": "a1b22c333d44",
            "groupId": "managedInstance",
            "requestMessage": "please approve",
        }
    }
    
  2. Forneça um nome significativo para o link privado compartilhado. O 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.

  3. Cole o nome da zona DNS em "resourceRegion" que você recuperou em uma etapa anterior.

  4. Edite o "privateLinkResourceId" para refletir o ponto de extremidade privado da sua instância gerenciada. Forneça a ID da assinatura, o nome do grupo de recursos e o nome do objeto da instância gerenciada.

  5. Salve o arquivo localmente como create-pe.json (ou use outro nome, lembrando-se de atualizar a sintaxe da CLI do Azure na próxima etapa).

  6. Na CLI do Azure, digite dir para anotar o local atual do arquivo.

  1. Na linha de comando, entre no Azure usando az logino .

  2. Se tiver várias subscrições, certifique-se de que está a utilizar a que pretende utilizar: az account show.

    Para definir a assinatura, use az account set --subscription {{subscription ID}}

  3. Chame o az rest comando para usar a API REST de Gerenciamento do Azure AI Search.

    Como o suporte a links privados compartilhados para instâncias gerenciadas SQL ainda está em visualização, você precisa de uma versão de visualização da API REST. Use 2021-04-01-preview para esta etapa'.

    az rest --method put --uri https://management.azure.com/subscriptions/{{search-service-subscription-ID}}/resourceGroups/{{search service-resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/sharedPrivateLinkResources/{{shared-private-link-name}}?api-version=2021-04-01-preview --body @create-pe.json
    

    Forneça a ID da assinatura, o nome do grupo de recursos e o nome do serviço do seu recurso Azure AI Search.

    Forneça o mesmo nome de link privado compartilhado que você especificou no corpo JSON.

    Forneça um caminho para o arquivo create-pe.json se você tiver navegado para fora do local do arquivo. Você pode digitar dir na linha de comando para confirmar que o arquivo está no diretório atual.

  4. Prima Enter para executar o comando.

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

4 - Aprovar a conexão de ponto final privado

No lado da Instância Gerenciada SQL, o proprietário do recurso deve aprovar a solicitação de conexão privada que você criou.

  1. No portal do Azure, abra a guia Conexões de ponto de extremidade privado da instância gerenciada.

  2. Encontre a seção que lista as conexões de ponto de extremidade privadas.

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

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.

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

Screenshot of the Azure portal, showing an

6 - Configure o indexador para ser executado no ambiente privado

Agora você pode configurar um indexador e sua fonte de dados para usar uma conexão privada de saída com sua instância gerenciada.

Você pode usar o assistente Importar dados para esta etapa, mas o indexador gerado não será válido para esse cenário. Você precisará modificar a propriedade JSON do indexador conforme descrito nesta etapa para torná-la compatível com esse cenário. Em seguida, você precisará redefinir e executar novamente o indexador para testar totalmente o pipeline usando o indexador atualizado.

Este artigo pressupõe um cliente REST e usa as APIs REST para facilitar a visualização de todas as propriedades. Lembre-se de que as chamadas da API REST para indexadores e fontes de dados usam as APIs REST de pesquisa, não as APIs REST de gerenciamento usadas para criar o link privado compartilhado. A sintaxe e as versões da API são diferentes entre as duas APIs REST.

  1. Crie a definição da fonte de dados como faria normalmente para o SQL do Azure. O formato da cadeia de conexão é ligeiramente diferente para uma instância gerenciada, mas outras propriedades são as mesmas como se você estivesse configurando uma conexão de fonte de dados com o banco de dados SQL do Azure.

    Forneça a cadeia de conexão que você copiou anteriormente.

    POST https://myservice.search.windows.net/datasources?api-version=2020-06-30
     Content-Type: application/json
     api-key: admin-key
     {
         "name" : "my-sql-datasource",
         "description" : "A database for testing Azure AI Search indexes.",
         "type" : "azuresql",
         "credentials" : { 
             "connectionString" : "Server=tcp:contoso.public.0000000000.database.windows.net,1433; Persist Security Info=false; User ID=<your user name>; Password=<your password>;MultipleActiveResultsSets=False; Encrypt=True;Connection Timeout=30;" 
            },
         "container" : { 
             "name" : "Name of table or view to index",
             "query" : null (not supported in the Azure SQL indexer)
             },
         "dataChangeDetectionPolicy": null,
         "dataDeletionDetectionPolicy": null,
         "encryptionKey": null,
         "identity": null
     }
    
  2. Crie a definição do indexador, definindo o ambiente de execução do indexador como "private".

    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. Ao se conectar por meio de um ponto de extremidade privado, a execução do indexador deve ser privada.

     POST https://myservice.search.windows.net/indexers?api-version=2020-06-30
      Content-Type: application/json
      api-key: admin-key
        {
         "name": "indexer",
         "dataSourceName": "my-sql-datasource",
         "targetIndexName": "my-search-index",
         "parameters": {
             "configuration": {
                 "executionEnvironment": "private"
             }
         },
         "fieldMappings": []
         }
    
  3. 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.

Você pode monitorar o status do indexador no portal do Azure ou usando a API de Status do Indexador.

Você pode usar o Gerenciador de Pesquisa no portal do Azure para verificar o conteúdo do índice.

Se você executou o indexador na etapa anterior e indexou com êxito o conteúdo da instância gerenciada, o teste foi bem-sucedido. No entanto, se o indexador falhar ou não houver conteúdo no índice, você poderá modificar seus objetos e repetir o teste escolhendo qualquer cliente que possa invocar uma solicitação de saída de um indexador.

Uma opção fácil é executar um indexador no portal do Azure, 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 com a Pesquisa pode ser pela Internet pública.

Aqui estão alguns lembretes para testes:

  • Se você usar um cliente REST, use a API REST de gerenciamento e a versão da API 2021-04-01-Preview para criar o link privado compartilhado. Use a API REST de pesquisa e uma versão estável da API para criar e invocar indexadores e fontes de dados.

  • Você pode usar o assistente Importar dados para criar um indexador, fonte de dados e índice. No entanto, o indexador gerado não terá a configuração correta do ambiente de execução.

  • Você pode editar a fonte de dados e o indexador JSON no portal do Azure para alterar propriedades, incluindo o ambiente de execução e a cadeia de conexão.

  • Você pode redefinir e executar novamente o indexador no portal do Azure. A redefinição é importante para esse cenário porque força um reprocessamento completo de todos os documentos.

  • Você pode usar o explorador de pesquisa para verificar o conteúdo do índice.

Consulte também