Creare un collegamento privato condiviso per un'istanza gestita di SQL da Azure AI Search

Questo articolo illustra come configurare un indicizzatore in Azure AI Search per una connessione privata a un'istanza gestita di SQL eseguita all'interno di una rete virtuale. La connessione privata avviene tramite un collegamento privato condiviso e un collegamento privato di Azure.

In una connessione privata a un'istanza gestita, il nome di dominio completo (FQDN) dell'istanza deve includere la zona DNS. Attualmente, solo l'API REST di gestione Azure AI Search fornisce un parametro resourceRegion con cui accettare la specifica della zona DNS.

Anche se è possibile chiamare direttamente l'API REST di gestione, è più semplice usare il modulo az rest dell'interfaccia della riga di comando di Azure per inviare chiamate API REST di gestione da una riga di comando. In questo articolo viene illustrato l’uso dell'interfaccia della riga di comando di Azure con REST per configurare il collegamento privato.

Nota

Questo articolo fa riferimento al portale di Azure per ottenere le proprietà e confermare la procedura. Tuttavia, quando si crea il collegamento privato condiviso per Istanza gestita di SQL, assicurarsi di usare l'API REST. Anche se la scheda Rete è elencata Microsoft.Sql/managedInstances come opzione, attualmente il portale non supporta il formato di URL esteso usato da Istanza gestita di SQL.

Prerequisiti

  • Interfaccia della riga di comando di Azure

  • Azure AI Search, Basic o versione superiore. Se si usano set di competenze e arricchimento tramite intelligenza artificiale, usare la versione standard 2 (S2) o superiore. Per informazioni dettagliate, vedere Limiti del servizio.

  • Istanza gestita di SQL di Azure, configurata per l'esecuzione in una rete virtuale.

  • È necessario avere almeno le autorizzazioni di Collaboratore sia per Azure AI Search che per Istanza gestita di SQL.

  • Stringa di connessione di Istanza gestita di SQL di Azure. L'identità gestita non è attualmente supportata con il collegamento privato condiviso. La stringa di connessione deve includere un nome utente e una password.

Nota

I collegamenti privati condivisi sono fatturabili secondo i prezzi del collegamento privato di Azure e gli addebiti vengono fatturati in base all'utilizzo.

1 - Recuperare informazioni sulla connessione

Recuperare il nome di dominio completo dell'istanza gestita, inclusa la zona DNS. La zona DNS fa parte del nome di dominio dell'istanza gestita di SQL. Ad esempio, se il nome di dominio completo dell'istanza gestita di SQL è my-sql-managed-instance.00000000000.database.windows.net, la zona DNS è 00000000000.

  1. Nel portale di Azure, trovare l'oggetto Istanza gestita di SQL.

  2. Nella scheda Informazioni generali individuare la proprietà Host. Copiare la porzione della zona DNS del nome di dominio completo per il passaggio successivo.

  3. Nella scheda Stringhe di connessione copiare la stringa di connessione ADO.NET per uno dei passaggi successivi. È necessaria per la connessione all'origine dati durante il test della connessione privata.

Per altre informazioni sulle proprietà di connessione, vedere Creare un'istanza gestita di SQL di Azure.

2 - Creare il corpo della richiesta

  1. Con un editor di testo, creare il codice JSON per il collegamento privato condiviso.

    {
        "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. Specificare un nome significativo per il collegamento privato condiviso. Il collegamento privato condiviso viene visualizzato insieme ad altri endpoint privati. Un nome come "link-privato-condiviso-per-search" può ricordare come viene usato.

  3. In "resourceRegion" incollare il nome della zona DNS recuperato in uno dei passaggi precedenti.

  4. Modificare "privateLinkResourceId" in modo che rifletta l'endpoint privato dell'istanza gestita. Specificare l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'oggetto dell'istanza gestita.

  5. Salvare il file in locale come create-pe.json (o usare un altro nome, ricordando di aggiornare la sintassi dell'interfaccia della riga di comando di Azure nel passaggio successivo).

  6. Nell'interfaccia della riga di comando di Azure digitare dir per prendere nota del percorso corrente del file.

  1. Dalla riga di comando accedere ad Azure usando az login.

  2. Se si hanno più sottoscrizioni, assicurarsi di usare quella che si intende usare: az account show.

    Per impostare la sottoscrizione, usare az account set --subscription {{subscription ID}}

  3. Chiamare il comando az rest per usare l'API REST di gestione di Azure AI Search.

    Poiché il supporto dei collegamenti privati condivisi per le istanze gestite di SQL è ancora in anteprima, è necessaria una versione di anteprima dell'API REST. Usare 2021-04-01-preview o una versione di anteprima successiva dell’API per questo passaggio. È consigliabile usare la versione di anteprima più recente dell’API.

    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=2024-06-01-preview --body @create-pe.json
    

    Specificare l'ID sottoscrizione, il nome del gruppo di risorse e il nome del servizio della risorsa di Azure AI Search.

    Immettere lo stesso nome di collegamento privato condiviso specificato nel corpo JSON.

    Specificare un percorso del file create-pe.json, se ci si è spostati dalla posizione del file. È possibile digitare dir nella riga di comando per verificare che il file si trovi nella directory corrente.

  4. Premere Invio per eseguire il comando.

Completati questi passaggi, si dovrebbe disporre di un collegamento privato condiviso di cui è stato effettuato il provisioning in stato in sospeso. La creazione del collegamento richiede alcuni minuti. Una volta creato, il proprietario della risorsa deve approvare la richiesta affinché sia operativa.

4 - Approvare la connessione endpoint privato

Lato Istanza gestita di SQL, il proprietario della risorsa deve approvare la richiesta di connessione privata creata.

  1. Nel portale di Azure, aprire la scheda Connessioni endpoint privato dell'istanza gestita.

  2. Trovare la sezione in cui sono elencate le connessioni dell'endpoint privato.

  3. Selezionare la connessione e quindi Approva. L'aggiornamento dello stato nel portale può richiedere alcuni minuti.

Dopo l'approvazione dell'endpoint privato, Azure AI Search crea i mapping di zona DNS necessari nella zona DNS creata.

Lato Azure AI Search è possibile confermare l'approvazione della richiesta rivedendo la scheda Accesso privato condiviso della pagina Rete del servizio di ricerca. Lo stato della connessione dovrebbe essere approvato.

Screenshot del portale di Azure che mostra una risorsa del collegamento privato condiviso

6 - Configurare l'indicizzatore per l'esecuzione nell'ambiente privato

È ora possibile configurare un indicizzatore e la relativa origine dati in modo che venga usata una connessione privata in uscita all'istanza gestita.

In questo passaggio, è possibile usare la procedura guidata Importa dati, ma l'indicizzatore generato non sarà valido per questo scenario. Sarà necessario modificare la proprietà JSON dell'indicizzatore come descritto in questo passaggio per renderlo conforme a questo scenario. Sarà quindi necessario reimpostare l'indicizzatore ed eseguirlo di nuovo per testare completamente la pipeline usando l'indicizzatore aggiornato.

Questo articolo presuppone un client REST e usa le API REST per semplificare la visualizzazione di tutte le proprietà. Tenere presente che le chiamate API REST per indicizzatori e origini dati usano le API REST di ricerca, non le API REST di gestione usate per creare il collegamento privato condiviso. La sintassi e le versioni API delle due API REST sono diverse.

  1. Creare la definizione dell'origine dati come si farebbe normalmente per Azure SQL. Il formato della stringa di connessione è leggermente diverso per un'istanza gestita, ma altre proprietà sono uguali a quelle della configurazione di una connessione origine dati al database SQL di Azure.

    Specificare la stringa di connessione copiata in precedenza.

    POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
     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. Creare la definizione dell'indicizzatore impostando l'ambiente di esecuzione dell'indicizzatore su "privato".

    L’esecuzione dell'indicizzatore avviene in un ambiente privato specifico del servizio di ricerca o in un ambiente multi-tenant usato internamente per eseguire l'offload di costose elaborazioni del set di competenze per più clienti. Quando ci si connette tramite un endpoint privato, l'esecuzione dell'indicizzatore deve essere privata.

     POST https://myservice.search.windows.net/indexers?api-version=2024-07-01
      Content-Type: application/json
      api-key: admin-key
        {
         "name": "indexer",
         "dataSourceName": "my-sql-datasource",
         "targetIndexName": "my-search-index",
         "parameters": {
             "configuration": {
                 "executionEnvironment": "private"
             }
         },
         "fieldMappings": []
         }
    
  3. Eseguire l'indicizzatore. Se l'esecuzione dell'indicizzatore ha esito positivo e l'indice di ricerca viene popolato, il collegamento privato condiviso funziona.

È possibile monitorare lo stato dell'indicizzatore nel portale di Azure o tramite l'API Stato dell'indicizzatore.

È possibile usare Esplora ricerche nel portale di Azure per controllare il contenuto dell'indice.

Se l'indicizzatore è stato eseguito nel passaggio precedente e il contenuto indicizzato correttamente dall'istanza gestita, il test ha avuto esito positivo. Tuttavia, se l'indicizzatore dà errore o non è presente contenuto nell'indice, è possibile modificare gli oggetti e ripetere il test scegliendo qualsiasi client in grado di richiamare una richiesta in uscita da un indicizzatore.

Una scelta semplice consiste nell’eseguire un indicizzatore nel portale di Azure, ma si può anche provare con un client REST e con le API REST per una maggiore precisione. Supponendo che il servizio di ricerca non sia configurato anche per una connessione privata, la connessione client REST a Search può essere eseguita tramite Internet pubblico.

Ecco alcuni promemoria per il test:

  • Se si usa un client REST, usare l'API REST di gestione e la versione dell'API 2021-04-01 anteprima per creare il collegamento privato condiviso. Usare l'API REST di ricerca e una versione stabile dell'API per creare e richiamare indicizzatori e origini dati.

  • È possibile usare l’importazione guidata dati per creare un indicizzatore, un'origine dati e un indice. Tuttavia, l'indicizzatore generato non avrà l'impostazione corretta dell'ambiente di esecuzione.

  • È possibile modificare l'origine dati e il codice JSON dell'indicizzatore nel portale di Azure per cambiare le proprietà, tra cui l'ambiente di esecuzione e la stringa di connessione.

  • È possibile reimpostare ed eseguire di nuovo l'indicizzatore nel portale di Azure. In questo scenario è importante reimpostarlo perché questo permette una rielaborazione completa di tutti i documenti.

  • È possibile usare Esplora ricerche per controllare il contenuto dell'indice.

Vedi anche