Creación de un vínculo privado compartido para Azure SQL Managed Instance desde Azure AI Search
En este artículo se explica cómo configurar un indexador en Azure AI Search para una conexión privada a una instancia de Azure SQL Managed Instance que se ejecuta dentro de una red virtual. La conexión privada se realiza a través de un vínculo privado compartido y Azure Private Link.
En una conexión privada a una instancia administrada, el nombre de dominio completo (FQDN) de la instancia debe incluir la zona DNS. Actualmente, solo la API REST de administración de Azure AI Search proporciona un parámetro dnsZonePrefix
para aceptar la especificación de zona DNS.
Aunque puede llamar directamente a la API REST de administración, es más fácil usar el módulo az rest
de la CLI de Azure para enviar llamadas a la API REST de administración desde una línea de comandos. En este artículo se usa la CLI de Azure con REST para configurar el vínculo privado.
Nota:
En este artículo se hace referencia a Azure Portal para obtener propiedades y confirmar los pasos. Sin embargo, al crear el vínculo privado compartido para SQL Managed Instance, asegúrese de que usa la API REST. Aunque la pestaña Redes muestra Microsoft.Sql/managedInstances
como una opción, Azure Portal no admite actualmente el formato de dirección URL extendido usado por SQL Managed Instance.
Requisitos previos
Azure AI Search, Básico o superior. Si usa conjuntos de aptitudes y enriquecimiento con inteligencia artificial, utilice Estándar 2 (S2) o superior. Consulte Límites de servicio para más información.
Azure SQL Managed Instance, configurada para ejecutarse en una red virtual.
Debe tener un mínimo de permisos de colaborador en Azure AI Search y en SQL Managed Instance.
Cadena de conexión de Azure SQL Managed Instance. La identidad administrada no se admite actualmente con vínculos privados compartidos. La cadena de conexión debe incluir un nombre de usuario y una contraseña.
Nota:
Los vínculos privados compartidos son facturables a través de los precios de Azure Private Link y los cargos se facturan en función del uso.
1. Recuperación de información de conexión
En esta sección, obtenga la zona DNS del nombre de host y una cadena de conexión.
En Azure Portal, busque el objeto de SQL Managed Instance.
En la pestaña Información general, busque la propiedad Host. Copie la parte de la zona DNS del FQDN para el paso siguiente. La zona DNS forma parte del nombre de dominio de SQL Managed Instance. Por ejemplo, si el FQDN de SQL Managed Instance es
my-sql-managed-instance.a1b22c333d44.database.windows.net
, la zona DNS esa1b22c333d44
.En la pestaña Cadenas de conexión, copie la cadena de conexión ADO.NET para un paso posterior. Es necesario para la conexión del origen de datos al probar la conexión privada.
Para más información sobre las propiedades de conexión, consulte Creación de una instancia de Azure SQL Managed Instance.
2. Establecimiento del cuerpo de la solicitud
Con un editor de texto, cree el JSON para el vínculo privado compartido.
{ "name": "{{shared-private-link-name}}", "properties": { "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}", "dnsZonePrefix": "a1b22c333d44", "groupId": "managedInstance", "requestMessage": "please approve" } }
Proporcione un nombre descriptivo para el vínculo privado compartido. El vínculo privado compartido aparece junto con otros puntos de conexión privados. Un nombre como "shared-private-link-for-search" puede recordarle cómo se usa.
Pegue el nombre de la zona DNS en "dnsZonePrefix" que recuperó en un paso anterior.
Edite "privateLinkResourceId" y sustituya válido por los valores de los marcadores de posición. Proporcione un id. de suscripción válido, un nombre de grupo de recursos y un nombre de instancia administrada.
Guarde el archivo localmente como create-pe.json (o use otro nombre, recuerde actualizar la sintaxis de la CLI de Azure en el paso siguiente).
En la CLI de Azure, escriba
dir
para anotar la ubicación actual del archivo.
3. Creación de un vínculo privado compartido
Desde la línea de comandos, inicie sesión en Azure con
az login
.Asegúrese de que está usando la suscripción correcta si tiene varias:
az account show
.Para establecer la suscripción, use
az account set --subscription {{subscription ID}}
Llame al comando
az rest
para usar la API REST de administración de Azure AI Search.Dado que la compatibilidad de vínculo privado compartido con instancias administradas de SQL aún se encuentra en versión preliminar, se necesita una versión preliminar de la API de REST de administración. Use
2021-04-01-preview
o una versión preliminar posterior de la API para este paso. Se recomienda usar la versión preliminar más reciente de la 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
Proporcione el identificador de suscripción, el nombre del grupo de recursos y el nombre del servicio del recurso de Azure AI Search.
Proporcione el mismo nombre de vínculo privado compartido que especificó en el cuerpo JSON.
Proporcione una ruta de acceso al archivo create-pe.json si ha navegado fuera de la ubicación del archivo. Puede escribir
dir
en la línea de comandos para confirmar que el archivo está en el directorio actual.Ejecute el comando.
Cuando complete estos pasos, debe tener un vínculo privado compartido que se aprovisione en un estado pendiente. Se tarda unos minutos en crear el vínculo. Una vez creado, el propietario del recurso debe aprobar la solicitud antes de que esté operativa.
Compruebe el estado del vínculo privado compartido en Azure Portal. En la página del servicio Search, en Configuración>Propiedades, desplácese hacia abajo para buscar los recursos de vínculo privado compartido y ver el valor JSON. Cuando el estado de aprovisionamiento cambie de pendiente a correcto, continúe con el paso siguiente.
4. Aprobación de la conexión del punto de conexión privado
En SQL Managed Instance, el propietario del recurso debe aprobar la solicitud de conexión privada que creó.
En Azure Portal, abra Seguridad>Conexiones de punto de conexión privado de la instancia administrada.
Busque la sección en la que se enumeran las conexiones de punto de conexión privado.
Seleccione la conexión y, después, Aprobar. El estado puede tardar unos minutos en actualizarse.
Después de que se aprueba el punto de conexión privado, Azure AI Search crea las asignaciones de zona DNS necesarias en la zona DNS que se crea para él.
5. Comprobación del estado del vínculo privado compartido
En el lado de Azure AI Search, puede confirmar la aprobación de la solicitud; para ello, vuelva a consultar la pestaña Acceso privado compartido de la página Redes del servicio de búsqueda. El estado de conexión debe aprobarse.
6 - Configuración del indexador para que se ejecute en el entorno privado
Ahora puede configurar un indexador y su origen de datos para usar una conexión privada saliente a la instancia administrada.
En este artículo se supone que existe un cliente de REST y que usa las API de REST.
Cree la definición del origen de datos como lo haría normalmente para Azure SQL. De forma predeterminada, una instancia administrada escucha en el puerto 3342, pero en una red virtual escucha el 1433.
Proporcione la cadena de conexión que copió anteriormente con un catálogo inicial establecido en el nombre de la base de datos.
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.a1b22c333d44.database.windows.net,1433;Persist Security Info=false; User ID=<your user name>; Password=<your password>;MultipleActiveResultsSets=False; Encrypt=True;Connection Timeout=30;Initial Catalog=<your database name>" }, "container" : { "name" : "Name of table or view to index", "query" : null (not supported in the Azure SQL indexer) }, "dataChangeDetectionPolicy": null, "dataDeletionDetectionPolicy": null, "encryptionKey": null }
Cree la definición del indexador y establezca el indexador
executionEnvironment
en "privado".La ejecución del indexador se produce en un entorno de ejecución privado específico del servicio Search o en un entorno multiinquilino hospedado por Microsoft y se usa para descargar el costoso procesamiento del conjunto de aptitudes para varios clientes. Al conectarse a través de un punto de conexión privado, la ejecución del indexador debe ser privada.
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": [] }
Ejecute el indexador. Si la ejecución del indexador se realiza correctamente y el índice de búsqueda se rellena, el vínculo privado compartido funciona.
Puede supervisar el estado del indexador en Azure Portal o mediante la API del estado del indexador.
Puede usar el Explorador de búsqueda en Azure Portal para comprobar el contenido del índice.
7. Creación de un vínculo privado compartido
Si ejecutó el indexador en el paso anterior e indexó correctamente el contenido de la instancia administrada, la prueba se realizó correctamente. Sin embargo, si se produce un error en el indexador o no hay contenido en el índice, puede modificar los objetos y repetir las pruebas eligiendo cualquier cliente que pueda invocar una solicitud saliente desde un indexador.
Una opción sencilla es ejecutar un indexador en Azure Portal, pero también puede un cliente REST y las API de REST para mayor precisión. Suponiendo que el servicio de búsqueda no esté configurado también para una conexión privada, la conexión del cliente de REST a Búsqueda de Azure AI puede realizarse a través de la red Internet pública.
Estos son algunos recordatorios para las pruebas:
Si usa un cliente REST, utilice la API de REST de administración y la versión de API 2021-04-01-Preview para crear el vínculo privado compartido. Use la API REST de búsqueda y una versión estable de API para crear e invocar indexadores y orígenes de datos.
Puede usar el Asistente para importar datos para crear un indexador, un origen de datos y un índice. Sin embargo, el indexador generado no tendrá la configuración correcta del entorno de ejecución.
Puede editar el JSON de origen de datos y de indexador en Azure Portal para cambiar las propiedades, incluido el entorno de ejecución y la cadena de conexión.
Puede restablecer y volver a ejecutar el indexador en Azure Portal. El restablecimiento es importante para este escenario porque fuerza un reprocesamiento completo de todos los documentos.
Puede usar el Explorador de búsqueda para comprobar el contenido del índice.