Compartir a través de


Autenticación en base de datos SQL en Microsoft Fabric

Se 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 la autenticación de Microsoft Entra.

Para autenticarse correctamente en una base de datos SQL, un usuario de Microsoft Entra, una entidad de servicio o su grupo, debe tener el permiso de lectura de elementos para la base de datos en Fabric. Para obtener información sobre cómo conceder un acceso de identidad de Microsoft Entra a un área de trabajo de Fabric o a una base de datos específica, consulte el artículo sobre los controles de acceso de Fabric.

Para buscar la cadena de conexión a la base de datos SQL en Fabric, consulte Conexión a la base de datos SQL en Microsoft Fabric.

Nota:

Para habilitar las entidades de servicio para conectarse a las bases de datos De Fabric y SQL, también debe habilitar las entidades de servicio de pueden usar las API de Fabric configuración de inquilino 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 la autenticación de Microsoft Entra con:

Las aplicaciones y herramientas deben actualizar los controladores a las versiones que admiten la autenticación de Microsoft Entra y agregar una palabra clave de modo de autenticación en su cadena de conexión SQL, 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 SQL con Transact-SQL, primero deberá crear usuarios de base de datos correspondientes a sus identidades de Microsoft Entra, es decir, 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 al conectarse como usuario de Microsoft Entra

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

Creación de usuarios de bases de datos al conectarse como entidad de servicio de Microsoft Entra

Cuando una aplicación se conecta a una base de datos con una entidad de servicio, la aplicación debe emitir CREATE USER con las cláusulas SID y TYPE para crear usuarios para las entidades de entidad de seguridad de Microsoft Entra. El nombre de la entidad de seguridad 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 la entidad de seguridad especificada es un usuario o un grupo de Microsoft Entra, el SID debe ser un identificador de objeto de ese usuario o grupo en Microsoft Entra. Si la entidad de seguridad especificada es una entidad de servicio en Microsoft Entra, el SID debe ser un id. de aplicación (id. de cliente) de la entidad de servicio en Microsoft Entra. Los id. de objeto y de aplicación (id. de cliente) obtenidos de Microsoft Entra deben convertirse a binario(16).

El valor del argumento TYPE debe ser:

  • E: si la entidad de seguridad de Microsoft Entra especificada es un usuario o una entidad de servicio.
  • X: si la entidad de seguridad de Microsoft Entra especificada es un grupo.

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

El siguiente ejemplo crea un usuario de base de datos para el grupo de Microsoft Entra, llamado HR, estableciendo el SID del nuevo usuario en el id. 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 [' + @principal_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 (entidades de seguridad de servidor).