Compartir a través de


Autenticación en base de datos SQL en Microsoft Fabric

Aplica a:Base de datos SQL en Microsoft Fabric

En este artículo se explica la autenticación para bases de datos SQL.

Al igual que otros tipos de elementos de Microsoft Fabric, las bases de datos SQL se basan en autenticación de Microsoft Entra.

Para autenticarse correctamente en una base de datos SQL, un usuario de Microsoft Entra, un principal del servicio o su grupo, debe contar con el permiso de lectura de ítem para la base de datos en Fabric. Para obtener información sobre cómo conceder acceso a una identidad de Microsoft Entra a un área de trabajo de Fabric o a una base de datos específica, consulte Controles de acceso deFabric.

Para encontrar la cadena de conexión de su base de datos SQL en Microsoft Fabric, vea Conectar a su base de datos SQL en Microsoft Fabric.

Nota:

Para habilitar principales de servicio para conectarse a Fabric y a las bases de datos SQL, también debe habilitar la configuración de inquilino de Fabric de principales de servicio pueden usar las API de Fabric. Para obtener información sobre cómo habilitar la configuración del inquilino, vea Configuración del inquilino en Fabric.

Conexión a una base de datos SQL mediante la autenticación de Microsoft Entra

Puede conectarse a una base de datos mediante Microsoft Entra autenticación con:

  • Herramientas SQL que son compatibles con la autenticación Microsoft Entra, incluida SQL Server Management Studio y la extensión MSSQL para Visual Studio Code.
  • Aplicaciones que usan controladores de cliente SQL que admiten la autenticación Microsoft Entra, incluidos SqlClient, JDBC, ODBC y OLE DB.

Las aplicaciones y herramientas deben actualizar los controladores a las versiones que admiten la autenticación Microsoft Entra y agregar una palabra clave de modo de autenticación en su SQL connection string, como ActiveDirectoryInteractive, ActiveDirectoryServicePrincipal o ActiveDirectoryPassword.

Creación de usuarios de base de datos para identidades de Microsoft Entra

Si tiene previsto configurar controles de acceso de SQL con Transact-SQL, primero debe crear usuarios de base de datos correspondientes a las identidades de Microsoft Entra - usuarios, entidades de servicio o sus grupos - con CREATE USER (Transact-SQL).

No es necesario crear usuarios de base de datos si usa controles de acceso de Fabric (roles de área de trabajo o permisos de elemento). Tampoco necesita crear usuarios cuando administra roles a nivel de base de datos SQL desde el portal de Fabric: el portal crea usuarios automáticamente cuando es necesario.

Creación de usuarios de base de datos cuando se conectan como un usuario de Microsoft Entra

Cuando esté conectado a la base de datos como usuario de Microsoft Entra, debe usar CREATE USER con la cláusula FROM EXTERNAL PROVIDER para crear usuarios para los principales de Microsoft Entra. FROM EXTERNAL PROVIDER valida el nombre principal especificado con Microsoft Entra, recupera el identificador principal (identificador de objeto del usuario o grupo, id. de aplicación o id. de cliente) y almacena el identificador como identificador de seguridad (SID) del usuario en los metadatos de SQL. Debe ser miembro del rol Lectores del directorio en Microsoft Entra al usar la cláusula FROM EXTERNAL PROVIDER. Los siguientes scripts T-SQL de ejemplo usan FROM EXTERNAL PROVIDER para crear un usuario basado en un usuario de Microsoft Entra, una entidad de servicio en Microsoft Entra o un grupo en Microsoft Entra.

-- Create a user for a Microsoft Entra user
CREATE USER [alice@contoso.com] FROM EXTERNAL PROVIDER;
-- Create a user for a service principal in Microsoft Entra
CREATE USER [HRApp] FROM EXTERNAL PROVIDER;
-- Create a user for a group in Microsoft Entra
CREATE USER [HR] FROM EXTERNAL PROVIDER; 

Crear usuarios de base de datos al conectarse como un principal de servicio de Microsoft Entra

Cuando una aplicación está conectada a una base de datos con un principal de servicio, la aplicación debe emitir CREATE USER con las cláusulas SID y TYPE para crear usuarios para los principales de Microsoft Entra. El nombre principal especificado no se valida en Microsoft Entra. Es responsabilidad de la aplicación (desarrollador de la aplicación) proporcionar un nombre válido y un SID y un tipo de objeto de usuario válidos.

Si el principal especificado es un usuario o grupo en Microsoft Entra, el SID debe ser el identificador de objeto de dicho usuario o grupo en Microsoft Entra. Si la entidad de servicio especificada es una entidad de servicio en Microsoft Entra, el SID debe ser un identificador de aplicación (id. de cliente) de la entidad de servicio en Microsoft Entra. Los identificadores de objeto y los identificadores de aplicación (identificadores de cliente) obtenidos de Microsoft Entra deben convertirse en binary(16).

El valor del argumento TYPE debe ser:

  • E: si el principal de Microsoft Entra especificado es un usuario o una entidad de servicio.
  • X - si el principal de Microsoft Entra especificado es un grupo.

El siguiente script de ejemplo de T-SQL crea un usuario de base de datos para el usuario de Microsoft Entra, denominado bob@contoso.com, estableciendo el SID del nuevo usuario en el identificador de objeto del usuario Microsoft Entra. El identificador único del ID de objeto del usuario se convierte y después se concatena en una declaración CREATE USER. Reemplace <unique identifier sid> por el identificador de objeto del usuario en Microsoft Entra.

DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

En el ejemplo siguiente se crea un usuario de base de datos para la entidad de servicio de Microsoft Entra, denominada HRApp, estableciendo el SID del nuevo usuario en el identificador de cliente de la entidad de servicio en Microsoft Entra.

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

En el ejemplo siguiente se crea un usuario de base de datos para el grupo de Microsoft Entra, denominado HR, estableciendo el SID del nuevo usuario en el identificador de objeto del grupo.

DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @group_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

Limitaciones

  • Microsoft Entra ID es la única base de datos SQL del proveedor de identidades que admite Fabric. En concreto, no se admite la autenticación de SQL.
  • No se admiten inicios de sesión (principales del servidor).
  • Actualmente, la única directiva de conexión admitida para SQL Database en Microsoft Fabric es Default. Para obtener más información, consulte directiva de conexión.