Establecimiento de conexiones de salida compartidas mediante un vínculo privado
En este artículo se explica cómo configurar llamadas privadas y salientes de la Búsqueda de Azure AI a un recurso de Azure que se ejecuta dentro de una red virtual de Azure.
La configuración de una conexión privada permite que un servicio de búsqueda se conecte a una dirección IP de red virtual en lugar de un puerto abierto a Internet. El objeto creado para la conexión se denomina vínculo privado compartido. En la conexión, el servicio de búsqueda usa internamente el vínculo privado compartido para acceder a un recurso de Azure dentro del límite de red.
El vínculo privado compartido es una característica premium que se factura por uso. Al configurar un vínculo privado compartido, los cargos por el punto de conexión privado se agregan a la factura de Azure. Al usar el vínculo privado compartido, también se facturan las tasas de transferencia de datos para el acceso entrante y saliente. Para obtener más información, consulte Precios de Azure Private Link.
Nota:
Si está configurando una conexión de indexador privado a una instancia administrada de SQL, consulte este artículo para ver los pasos específicos para ese tipo de recurso.
Cuándo debe usarse un vínculo privado compartido
La Búsqueda de Azure AI realiza llamadas salientes a otros recursos de Azure en los escenarios siguientes:
- El indizador o motor de búsqueda se conecta a Azure OpenAI para inserciones de texto a vector
- Conexiones del indexador a orígenes de datos admitidos
- Conexiones del indizador (conjunto de aptitudes) a Azure Storage para almacenar en caché enriquecimientos, el estado de la sesión de depuración o escribir en un almacén de conocimiento
- Conexiones del indexador (conjunto de aptitudes) a los servicios de Azure AI con fines de facturación
- Solicitudes de clave de cifrado a Azure Key Vault
- Solicitudes de aptitudes personalizadas a Azure Functions o a un recurso similar
Los vínculos privados compartidos solo funcionan para las conexiones de Azure a Azure. Si se conecta a OpenAI u otro modelo externo, la conexión debe ser mediante la red pública de Internet.
Los vínculos privados compartidos son para las operaciones y los datos a los que se accede mediante un punto de conexión privado para los recursos o clientes de Azure que se ejecutan en una red virtual de Azure.
Un vínculo privado compartido:
- Se crea con herramientas, API o SDK de Azure AI Search
- Lo aprueba el propietario del recurso de Azure
- Lo usa internamente Búsqueda de Azure AI en una conexión privada a un recurso de Azure específico.
Solo el servicio de búsqueda puede usar los vínculos privados que crea y solo puede haber un vínculo privado compartido creado en el servicio para cada combinación de recurso y subrecurso.
Una vez configurado el vínculo privado, se usa automáticamente cada vez que el servicio de búsqueda se conecta a ese recurso. No es necesario modificar la cadena de conexión ni modificar el cliente que usa para emitir las solicitudes, aunque el dispositivo usado para la conexión debe conectarse mediante una dirección IP autorizada en el firewall del recurso de Azure.
Hay dos escenarios para usar Azure Private Link y Azure AI Search juntos.
Escenario uno: cree un vínculo privado compartido cuando una conexión saliente (indexador) a Azure requiera una conexión privada.
Escenario dos: configure la búsqueda de una conexión entrante privada desde clientes que se ejecutan en una red virtual.
El primer escenario se trata en este artículo.
Aunque ambos escenarios tienen una dependencia en Azure Private Link, son independientes. Puede crear un vínculo privado compartido sin tener que configurar su propio servicio de búsqueda para un punto de conexión privado.
Limitaciones
A la hora de evaluar vínculos privados compartidos para su escenario, recuerde estas restricciones.
Varios de los tipos de recursos usados en un vínculo privado compartido están en versión preliminar. Si se conecta a un recurso de versión preliminar (Azure Database for MySQL o Instancia administrada de Azure SQL), use una versión preliminar de la API de REST de administración para crear el vínculo privado compartido. Estas versiones incluyen
2020-08-01-preview
,2021-04-01-preview
,2024-03-01-preview
y2024-06-01-preview
. Se recomienda la API de versión preliminar más reciente.La ejecución del indexador debe usar el entorno de ejecución privado específico del servicio de búsqueda. Las conexiones de punto de conexión privado no se admiten en el entorno multiinquilino de procesamiento de contenido. La configuración de este requisito se trata en este artículo.
Revise los límites de recursos para cada nivel del vínculo privado compartido.
Requisitos previos
Un recurso de Azure compatible, configurado para ejecutarse en una red virtual.
Un servicio de Búsqueda de Azure AI con requisitos de nivel y región, por carga de trabajo:
Carga de trabajo Requisitos del nivel Requisitos de la región Requisitos de creación de servicios Indexadores sin conjuntos de aptitudes Básico y versiones posteriores Ninguno Ninguno Conjuntos de aptitudes con aptitudes de inserción (vectorización integrada) Básico y versiones posteriores Regiones de alta capacidad Después del 3 de abril de 2024 Conjuntos de aptitudes que usan otras aptitudes integradas o personalizadas Estándar 2 (S2) y versiones posteriores Ninguno Después del 3 de abril de 2024 Permisos tanto en Búsqueda de Azure AI como en el recurso de Azure:
Resource Permisos Azure AI Search Microsoft.Search/searchServices/sharedPrivateLinkResources/write
Microsoft.Search/searchServices/sharedPrivateLinkResources/read
Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read
Otro recurso de Azure Permiso para aprobar las conexiones de punto de conexión privado. Por ejemplo, en Azure Storage, necesita Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action
.
Tipos de recurso admitidos
Puede crear un vínculo privado compartido para los siguientes recursos.
Tipo de recurso | Subrecurso (o identificador de grupo) |
---|---|
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 (versión preliminar) | mysqlServer |
Microsoft.Web/sites 4 | sites |
Microsoft.Sql/managedInstances (preview) 5 | managedInstance |
Microsoft.CognitiveServices/accounts 6 7 | openai_account |
Microsoft.CognitiveServices/accounts 8 | cognitiveservices_account |
1 Si Azure Storage y Azure AI Search están en la misma región, la conexión al almacenamiento se realiza a través de la red troncal de Microsoft, lo que significa que un vínculo privado compartido es redundante para esta configuración. Sin embargo, si ya ha configurado un punto de conexión privado para Azure Storage, también debe configurar un vínculo privado compartido o la conexión se rechazará en el lado de almacenamiento. Además, si usa varios formatos de almacenamiento para varios escenarios en la búsqueda, asegúrese de crear un vínculo privado compartido independiente para cada subrecurso.
2 El tipo de recurso Microsoft.DocumentDB/databaseAccounts
se usa para las conexiones del indexador a Azure Cosmos DB for NoSQL. El nombre del proveedor y el identificador de grupo distinguen mayúsculas de minúsculas.
3 El tipo de recurso Microsoft.Sql/servers
se utiliza para las conexiones a la base de datos Azure SQL. Actualmente no hay soporte para un vínculo privado compartido a Azure Synapse SQL.
4 El tipo de recurso Microsoft.Web/sites
se usa para App Service y Azure Functions. En el contexto de Azure AI Search, una función de Azure es el escenario más probable. Normalmente se usa una función de Azure para hospedar la lógica de una aptitud personalizada. Azure Function tiene los siguientes planes de hospedaje de App Service: Consumo, Premium y Dedicado. Las instancias de App Service Environment (ASE), Azure Kubernetes Service (AKS) y Azure API Management no se admiten en este momento.
5 Consulte Crear un vínculo privado compartido para una SQL Managed Instance para obtener instrucciones.
6 El tipo de recurso Microsoft.CognitiveServices/accounts
se utiliza para las conexiones del vectorizador y el indexador a los modelos de inserción de Azure OpenAI cuando se implementa la Vectorización integrada. Desde el 19 de noviembre de 2024, deja de haber compatibilidad con el vínculo privado compartido para insertar modelos en el catálogo de modelos de Estudio de IA de Azure o en la API multimodal de Visión de Azure AI.
7 Los vínculos privados compartidos para Azure OpenAI solo se admiten en la nube pública. Otras ofertas en la nube, como Microsoft Azure Government, no admiten vínculos privados compartidos para el openai_account
identificador de grupo.
8 Los vínculos privados compartidos se admiten ahora (desde noviembre de 2024) para las conexiones a las cuentas de varios servicios de Azure AI. La Búsqueda de Azure AI se conecta a la cuenta de varios servicios de Azure AI para fines de facturación. Estas conexiones ahora pueden ser privadas a través de un vínculo privado compartido.
1 - Creación de un vínculo privado compartido
Use Azure Portal, la API de REST de administración, la CLI de Azure o Azure PowerShell para crear un vínculo privado compartido.
A continuación se muestran algunas sugerencias:
- Asigne un nombre descriptivo al vínculo privado. En el recurso PaaS de Azure, aparece un vínculo privado compartido junto con otros puntos de conexión privados. Un nombre como "shared-private-link-for-search" puede recordarle cómo se usa.
Cuando complete los pasos de esta sección, tendrá un vínculo privado compartido aprovisionado 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.
Inicie sesión en Azure Portal y encuentre su servicio de búsqueda.
En el panel de navegación de la izquierda, en Configuración, seleccione Redes.
En la página Acceso privado compartido, seleccione + Agregar acceso privado compartido.
Seleccione Conectarse a un recurso de Azure en mi directorio o Conectarse a un recurso de Azure por Id. de recurso.
Si selecciona la primera opción (recomendada), el portal le ayudará a elegir el recurso de Azure adecuado y rellenará automáticamente otras propiedades, como el Id. de grupo del recurso y el tipo del recurso.
Si selecciona la segunda opción, escriba el identificador de recurso de Azure manualmente y elija el identificador de grupo adecuado en la lista al principio de este artículo.
Confirme que el estado de aprovisionamiento es "Actualizando".
Una vez creado correctamente el recurso, el estado de aprovisionamiento del recurso cambia a "Correcto".
Flujo de trabajo de creación de vínculos privados compartidos
Se devuelve la respuesta 202 Accepted
en caso de éxito. El proceso de creación de un punto de conexión privado de salida es una operación de larga duración (asincrónica), Implica la implementación de los siguientes recursos:
Un punto de conexión privado asignado con una dirección IP privada con un estado
"Pending"
. La dirección IP privada se obtiene del espacio de direcciones que se asigna a la red virtual del entorno de ejecución del indexador privado específico del servicio de búsqueda. Tras la aprobación del punto de conexión privado, cualquier comunicación desde Azure AI Search al recurso de Azure se origina desde la dirección IP privada y un canal de vínculo privado seguro.Una zona DNS privada para el tipo de recurso, que se basa en el Id. de grupo. Mediante la implementación de este recurso se asegura de que todas las búsquedas DNS en el recurso privado utilizan la dirección IP asociada con el punto de conexión privado.
2 - Aprobación de la conexión del punto de conexión privado
La aprobación de la conexión de punto de conexión privado se concede en el lado de PaaS de Azure. Se requiere la aprobación explícita del propietario del recurso. Los pasos siguientes tratan sobre la aprobación mediante Azure Portal, pero estos son algunos vínculos para aprobar la conexión mediante programación desde el lado PaaS de Azure:
- En Azure Storage, use conexiones de punto de conexión privado: Put
- En Azure Cosmos DB, use conexiones de punto de conexión privado: Create o Update
- En Azure OpenAI, use Conexiones de punto de conexión privado: crear o actualizar
Con Azure Portal, realice los pasos siguientes:
Abra la página Redes del recurso de PaaS de Azure.texto
Busque la sección en la que se enumeran las conexiones de punto de conexión privado. El ejemplo siguiente es para una cuenta de almacenamiento.
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.
Aunque el vínculo de punto de conexión privado de la página de Redes está activo, no se resolverá.
Al seleccionar el vínculo se produce un error. Un mensaje de estado "The access token is from the wrong issuer"
y must match the tenant associated with this subscription
aparece porque el recurso de punto de conexión privado de back-end lo aprovisiona Microsoft en un inquilino administrado de Microsoft, mientras que el recurso vinculado (Búsqueda de Azure AI) está en su inquilino. De manera deliberada, no se le permite acceder al recurso de punto de conexión privado seleccionando el vínculo de conexión de punto de conexión privado.
Siga las instrucciones de la sección siguiente para comprobar el estado del vínculo privado compartido.
3 - Comprobación del estado del vínculo privado compartido
En el lado de Búsqueda de Azure AI, puede confirmar la aprobación de la solicitud; para ello, vuelva a consultar la página Acceso privado compartido de la página Redes del servicio de búsqueda. El estado de conexión debe aprobarse.
Como alternativa, también puede obtener el estado de conexión mediante la Recursos de vínculo privado compartido: Obtener.
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
Esto devolvería un elemento JSON, donde el estado de conexión aparece como "status" en la sección "properties". A continuación se muestra un ejemplo de una cuenta de almacenamiento.
{
"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"
}
}
Si el estado de aprovisionamiento (properties.provisioningState
) del recurso es "Correcto" y el estado de conexión (properties.status
) es "Aprobado", significa que el recurso de vínculo privado compartido es funcional y que el indexador se puede configurar para comunicarse a través del punto de conexión privado.
4 - Configurar el indexador para que se ejecute en el entorno privado
La ejecución del indexador se produce en un entorno privado específico del servicio de búsqueda o en un entorno multiinquilino que se usa internamente para descargar el procesamiento costoso del conjunto de aptitudes para varios clientes.
El entorno de ejecución es transparente, pero una vez que empiece a crear reglas de firewall o establecer conexiones privadas, tiene que tener en cuenta la ejecución del indexador. Para una conexión privada, configure la ejecución del indexador para que siempre se ejecute en el entorno privado.
En este paso se muestra cómo configurar el indexador para que se ejecute en el entorno privado usando la API REST. También puede establecer el entorno de ejecución mediante el editor de JSON en Azure Portal.
Nota:
Este paso se puede realizar antes de que se apruebe la conexión del punto de conexión privado. Sin embargo, hasta que la conexión de punto de conexión privado se muestre como aprobada, cualquier indexador existente que intente comunicarse con un recurso protegido (como la cuenta de almacenamiento) terminará en un estado de error transitorio y no se podrán crear nuevos indexadores.
Cree la definición de origen de datos, el índice y el conjunto de aptitudes (si usa uno) como lo haría normalmente. No hay propiedades en ninguna de estas definiciones que varíen al usar un punto de conexión privado compartido.
Cree un indexador que apunte al origen de datos, el índice y el conjunto de aptitudes que creó en el paso anterior. Además, fuerce a que el indexador se ejecute en el entorno de ejecución privado; para ello, establezca la propiedad de configuración
executionEnvironment
del indexador enprivate
.{ "name": "indexer", "dataSourceName": "blob-datasource", "targetIndexName": "index", "parameters": { "configuration": { "executionEnvironment": "private" } }, "fieldMappings": [] }
Una vez que el indexador se cree correctamente, debería conectarse al recurso de Azure a través de la conexión de punto de conexión privado. Puede supervisar el estado del indexador. Para ello, se utiliza Indexer Status API.
Nota:
Si ya tiene indexadores, puede actualizarlos a través de la API PUT. Para ello, establezca executionEnvironment
en private
o use el editor de JSON en Azure Portal.
5 - Creación de un vínculo privado compartido
Si aún no lo ha hecho, compruebe que el recurso PaaS de Azure rechaza las conexiones de la red pública de Internet. Si se aceptan conexiones, revise la configuración de DNS en la página Redes del recurso PaaS de Azure.
Elija una herramienta que pueda invocar un escenario de solicitud saliente, como una conexión de indexador a un punto de conexión privado. Una opción sencilla es usar el Asistente para importar datos, pero también puede probar un cliente REST y API de REST para una 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 REST a la búsqueda puede realizarse a través de la red Internet pública.
Establezca la cadena de conexión en el recurso PaaS privado de Azure. El formato de la cadena de conexión no cambia para el vínculo privado compartido. El servicio de búsqueda invoca el vínculo privado compartido internamente.
En el caso de las cargas de trabajo del indexador, la cadena de conexión se encuentra en la definición del origen de datos. Un ejemplo de un origen de datos podría tener este aspecto:
{ "name": "my-blob-ds", "type": "azureblob", "subtype": null, "credentials": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..." }
En el caso de las cargas de trabajo del indexador, recuerde establecer el entorno de ejecución en la definición del indexador. Un ejemplo de una definición de indexador podría tener este aspecto:
"name": "indexer", "dataSourceName": "my-blob-ds", "targetIndexName": "my-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.
Solución de problemas
Si se produce un error en la creación del indexador con "Las credenciales del origen de datos no son válidas", compruebe el estado de aprobación del vínculo privado compartido antes de depurar la conexión. Si el estado es
Approved
, compruebe la propiedadproperties.provisioningState
. Si esIncomplete
, puede haber un problema con las dependencias subyacentes. En este caso, vuelva a emitir la solicitudPUT
para volver a crear el vínculo privado compartido. Es posible que también tenga que repetir el paso de aprobación.Si los indexadores no se pueden realizar de forma coherente o intermitente, compruebe la propiedad
executionEnvironment
en el indexador. El valor debe establecerse enprivate
. Si no estableció esta propiedad y las ejecuciones del indexador se realizaron correctamente en el pasado, se debe a que el servicio de búsqueda usó un entorno privado propio. Un servicio de búsqueda saca el procesamiento del entorno multiinquilino si el sistema está bajo carga.Si recibe un error al crear un vínculo privado compartido, compruebe los límites del servicio para comprobar que está por debajo de la cuota del nivel.
Pasos siguientes
Más información sobre los puntos de conexión privados y otros métodos de conexión segura: