Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Note
Búsqueda de Azure AI está disponible a través del portal de Azure, las API REST y los SDK de Azure. También respalda Foundry IQ, la capa de conocimiento administrada que transforma el contenido empresarial en bases de conocimiento reutilizables y compatibles con permisos para agentes en el portal de Microsoft Foundry.
En este artículo se explica cómo configurar una conexión de indexador para Azure SQL Database mediante una identidad administrada en lugar de proporcionar credenciales en el cadena de conexión.
Puede usar una identidad administrada asignada por el sistema o una identidad administrada asignada por el usuario. Las identidades administradas son inicios de sesión de Microsoft Entra y requieren asignaciones de roles de Azure para acceder a datos en Azure SQL.
Requisitos previos
Cree una identidad administrada para el servicio de búsqueda.
Asignar un rol de administrador de Azure en SQL. La identidad usada en la conexión del indexador necesita permisos de lectura. Debe ser administrador de Microsoft Entra con un servidor en SQL Database o SQL Managed Instance para conceder permisos de lectura en una base de datos.
Debe estar familiarizado con los conceptos y la configuración del indexador.
1- Asignar permisos para leer la base de datos
Siga los pasos siguientes para asignar el servicio de búsqueda o el permiso de identidad administrada asignada por el usuario para leer la base de datos.
Conéctese a Visual Studio.
Autentíquese con su cuenta de Microsoft Entra.
Ejecute los siguientes comandos:
Incluya los corchetes alrededor del nombre del servicio de búsqueda o el nombre de identidad administrada asignada por el usuario.
CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER; EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
Si posteriormente cambia la identidad del servicio de búsqueda o la identidad asignada por el usuario después de asignar permisos, debe quitar la pertenencia al rol y quitar el usuario en la base de datos SQL y, a continuación, repetir la asignación de permisos. Para quitar la membresía al rol y eliminar el usuario, ejecute los siguientes comandos:
sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];
DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];
2 - Agregar una asignación de roles
En esta sección, dará permiso al servicio de Búsqueda de Azure AI para leer datos de la SQL Server. Para obtener pasos detallados, consulte Assign Azure roles mediante el portal de Azure.
En el portal de Azure, vaya a la página de Azure SQL Server.
Seleccione Control de acceso (IAM) .
Seleccione Agregar > asignación de roles.
En la pestaña Rol , seleccione el rol lector adecuado.
En la pestaña Miembros , seleccione Identidad administrada y, a continuación, seleccione Seleccionar miembros.
Seleccione la suscripción de Azure.
Si usa una identidad administrada asignada por el sistema, seleccione Identidad administrada asignada por el sistema, busque el servicio de búsqueda y selecciónelo.
De lo contrario, si usa una identidad administrada asignada por el usuario, seleccione Identidad administrada asignada por el usuario, busque el nombre de la identidad administrada asignada por el usuario y, a continuación, selecciónela.
En la pestaña Revisar y asignar , seleccione Revisar y asignar para asignar el rol.
3- Creación del origen de datos
Cree el origen de datos y proporcione una identidad administrada asignada por el sistema o una identidad administrada asignada por el usuario.
Identidad administrada asignada por el sistema
La API REST, Azure portal y la SDK de Azure admiten la identidad administrada asignada por el sistema.
Al conectarse con una identidad administrada asignada por el sistema, el único cambio en la definición del origen de datos es el formato de la propiedad "credentials". Proporcionará un nombre inicial de catálogo o base de datos y un ResourceId que no tenga ninguna clave de cuenta ni contraseña. ResourceId debe incluir el identificador de suscripción de Azure SQL Database, el grupo de recursos de SQL Database y el nombre de la base de datos SQL.
Este es un ejemplo de cómo crear un origen de datos para indexar datos de una cuenta de almacenamiento mediante la API REST de Crear origen de datos y una cadena de conexión de identidad administrada. El formato de la cadena de conexión de identidad administrada es el mismo para la API REST, el SDK de .NET y el portal de Azure.
POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
}
}
Identidad administrada asignada por el usuario
La API REST versión 2026-04-01 y versiones posteriores admiten conexiones basadas en una identidad administrada asignada por el usuario. Al conectarse con una identidad administrada asignada por el usuario, hay dos cambios en la definición del origen de datos:
En primer lugar, el formato de la propiedad "credentials" es un nombre inicial de catálogo o base de datos y un ResourceId que no tiene ninguna clave de cuenta ni contraseña. ResourceId debe incluir el identificador de suscripción de Azure SQL Database, el grupo de recursos de SQL Database y el nombre de la base de datos SQL. Este es el mismo formato que la identidad administrada asignada por el sistema.
En segundo lugar, agregue una propiedad "identity" que contenga la colección de identidades administradas asignadas por el usuario. Solo se debe proporcionar una identidad administrada asignada por el usuario al crear el origen de datos. Establézcalo como "userAssignedIdentities".
Este es un ejemplo de cómo crear un objeto de origen de datos de indexador mediante orígenes de datos: crear o actualizar:
POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
}
}
4 - Creación del índice
El índice especifica los campos de un documento, atributos y otras construcciones que dan forma a la experiencia de búsqueda.
Esta es una llamada a la API REST Create Index con un campo que permite booktitle búsquedas:
POST https://[service name].search.windows.net/indexes?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-target-index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
]
}
5- Creación del indexador
Un indexador conecta un origen de datos con un índice de búsqueda de destino y proporciona una programación para automatizar la actualización de datos. Una vez creado el índice y el origen de datos, está listo para crear el indexador. Si el indexador funciona correctamente, la sintaxis de conexión y las asignaciones de roles son válidas.
Esta es una llamada API REST Create Indexer con una definición de Azure SQL indexador. El indexador se ejecuta al enviar la solicitud.
POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-indexer",
"dataSourceName" : "sql-datasource",
"targetIndexName" : "my-target-index"
}
Si recibe un error cuando el indexador intenta conectarse al origen de datos que indica que el cliente no tiene permiso para acceder al servidor, eche un vistazo a los errores comunes del indexador.