Compartir a través de


Tutorial: Protege mediante accesos de Microsoft Entra - Instancia administrada de Azure SQL

Applies to:Azure SQL Managed Instance

En este artículo, aprenderá cómo utilizar los principales del servidor (inicios de sesión) respaldados por Microsoft Entra ID (anteriormente conocido como Azure Active Directory) con el fin de proteger una instancia administrada de Azure SQL.

En este tutorial, aprenderá a:

  • Configure una cuenta de inicio de sesión de Microsoft Entra para una instancia administrada de SQL.
  • Conceda permisos a los inicios de sesión en una instancia administrada de SQL.
  • Cree usuarios de Microsoft Entra a partir de credenciales.
  • Asigne permisos a los usuarios y administre la seguridad de la base de datos.
  • Use la suplantación con los usuarios.
  • Use consultas entre bases de datos con usuarios.
  • Obtenga información sobre las características de seguridad, como la protección contra amenazas, la auditoría, el enmascaramiento de datos y el cifrado.

Nota:

Microsoft Entra ID anteriormente se conocía como Azure Active Directory (Azure AD).

Requisitos previos

Para completar el tutorial, asegúrese de que cuenta con estos requisitos previos:

Limitación del acceso

Se puede acceder a las instancias administradas de SQL a través de una dirección IP privada. Al igual que un entorno de SQL Server aislado, las aplicaciones o los usuarios necesitan acceder a la red de SQL Managed Instance (VNet) para poder establecer una conexión. Para obtener más información, consulte Conectar la aplicación a SQL Managed Instance.

También es posible configurar un punto de conexión de servicio en una instancia administrada de SQL, lo que permite conexiones públicas de la misma manera que para Azure SQL Database. Para obtener más información, consulte Configurar punto de conexión público en Azure SQL Managed Instance.

Creación de un inicio de sesión de Microsoft Entra mediante SSMS

El administrador de SQL puede crear el primer inicio de sesión de Microsoft Entra, o bien utilizar el administrador de Microsoft Entra que se creó durante el aprovisionamiento. Para obtener más información, consulte Provisionar un administrador de Microsoft Entra para SQL Managed Instance.

Consulte los artículos siguientes para obtener ejemplos de conexión a SQL Managed Instance:

  1. Conéctese a la instancia administrada de SQL con un inicio de sesión sysadmin de SQL o con el administrador de Microsoft Entra mediante SQL Server Management Studio (SSMS).

  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. En la ventana de consulta, use la siguiente sintaxis para crear un inicio de sesión para una cuenta de Microsoft Entra local:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    En este ejemplo se crea un inicio de sesión para la cuenta nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. En la barra de herramientas, seleccione Ejecutar para crear el inicio de sesión.

  5. Ejecute el siguiente comando T-SQL para comprobar el inicio de sesión recién agregado:

    SELECT *
    FROM sys.server_principals;
    GO
    

    Captura de pantalla de la pestaña Resultados del Explorador de objetos de SSMS que muestra el nombre, principal_id, sid, type y type_desc del Login que se acaba de agregar.

Para más información, consulte CREATE LOGIN.

Conceder permisos para crear inicios de sesión

Los inicios de sesión existentes deben tener los permisos adecuados o formar parte de los roles de servidor adecuados para crear otros inicios de sesión de Microsoft Entra.

Inicios de sesión de autenticación de SQL

Si el inicio de sesión es un principal de servidor basado en autenticación de SQL, se le debe asignar el rol sysadmin para crear logins para las cuentas de Microsoft Entra.

inicios de sesión de autenticación de Microsoft Entra

  • Si el acceso es un principal de servidor de Microsoft Entra, se debe asignar el rol de servidor sysadmin o securityadmin para crear cuentas de acceso para otros usuarios, grupos y aplicaciones de Microsoft Entra.
  • Como mínimo, se debe conceder el permiso ALTER ANY LOGIN para crear otras cuentas de Microsoft Entra.
  • De forma predeterminada, los permisos estándar concedidos a inicios de sesión de Microsoft Entra recién creados en master son CONNECT SQL y VIEW ANY DATABASE.
  • El rol de servidor sysadmin puede ser otorgado a numerosas cuentas de Microsoft Entra en una instancia SQL administrada.

Para agregar el inicio de sesión al rol de servidor sysadmin :

  1. Inicie sesión nuevamente en la instancia administrada de SQL o utilice la conexión existente con el administrador de Microsoft Entra o el principal de SQL que sea un sysadmin.

  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. Conceder al inicio de sesión de Microsoft Entra el rol de servidor sysadmin mediante la siguiente sintaxis de T-SQL:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    En el siguiente ejemplo se otorga el rol de servidor sysadmin al login nativeuser@aadsqlmi.onmicrosoft.com:

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Creación de inicios de sesión de Microsoft Entra adicionales mediante SSMS

Una vez que se ha creado el inicio de sesión de Microsoft Entra y se le han concedido los privilegios de sysadmin, ese inicio de sesión puede crear inicios de sesión adicionales mediante la cláusula FROM EXTERNAL PROVIDER con CREATE LOGIN.

  1. Conéctese a la instancia administrada de SQL usando el inicio de sesión de Microsoft Entra seleccionando Conectar al servidor en SQL Server Management Studio (SSMS).

    1. Escriba el nombre de host de SQL Managed Instance en Nombre del servidor.
    2. Para Authentication, seleccione Microsoft Entra MFA para abrir una ventana de inicio de sesión de autenticación multifactor. Inicia sesión. Para más información, vea Autenticación universal (compatibilidad de SSMS con la autenticación multifactor).
  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. En la ventana de consulta, use la sintaxis siguiente para crear un inicio de sesión para otra cuenta de Microsoft Entra:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    En este ejemplo se crea un inicio de sesión para el usuario de Microsoft Entra bob@aadsqlmi.net, cuyo dominio aadsqlmi.net es federated con el dominio Microsoft Entra aadsqlmi.onmicrosoft.com.

    Ejecute el siguiente comando T-SQL. Las cuentas de Microsoft Entra federadas son los reemplazos de SQL Managed Instance para inicios de sesión y usuarios locales de Windows.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Cree una base de datos en la instancia administrada de SQL mediante la sintaxis CREATE DATABASE . Esta base de datos se usará para probar los inicios de sesión de usuario en la sección siguiente.

    1. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

    2. En la ventana de consulta, utilice la siguiente sintaxis para crear una base de datos denominada MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Cree un inicio de sesión de SQL Managed Instance para un grupo en Microsoft Entra ID. El grupo debe existir en Microsoft Entra ID antes de agregar el inicio de sesión a SQL Managed Instance. Consulte Crear un grupo básico y agregar miembros mediante Microsoft Entra ID. Cree un grupo mygroup y agregue miembros a este grupo.

  6. Abra una nueva ventana de consulta en SQL Server Management Studio.

    En este ejemplo se supone que existe un grupo denominado mygroup en Microsoft Entra ID. Ejecute el comando siguiente:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. Como prueba, inicie sesión en la instancia administrada de SQL con el inicio de sesión o grupo recién creado. Abra una nueva conexión a la instancia administrada de SQL y use el nuevo inicio de sesión al autenticarse.

  8. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nueva consulta para la nueva conexión.

  9. Compruebe los permisos del servidor para el inicio de sesión de Microsoft Entra recién creado ejecutando el comando siguiente:

    SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE')
    GO
    

La compatibilidad de Azure SQL con los principales de Microsoft Entra como usuarios y inicios de sesión se extiende a usuarios invitados internos y externos de Id. externa de Microsoft Entra. Los usuarios invitados, tanto individualmente como como parte de un grupo, se pueden usar igual que cualquier otro usuario de Microsoft Entra en Azure SQL. Si quiere que los usuarios invitados puedan crear otros inicios de sesión de servidor o usuarios de base de datos de Microsoft Entra, deben tener permisos para leer otras identidades en el directorio Microsoft Entra. Este permiso se configura en el nivel de directorio. Para obtener más información, consulte permisos de acceso para invitados de Microsoft Entra ID.

Creación de un usuario de Microsoft Entra a partir del inicio de sesión de Microsoft Entra

La autorización para bases de datos individuales funciona de la misma manera en SQL Managed Instance como con las bases de datos en SQL Server. Puede crear un usuario a partir de un login existente en una base de datos que tiene permisos otorgados a esa base de datos o que sea agregado a un rol de base de datos.

Ahora que hemos creado una base de datos denominada MyMITestDB y un inicio de sesión que solo tiene permisos predeterminados, el siguiente paso es crear un usuario a partir de ese inicio de sesión. En este momento, las credenciales de acceso pueden conectarse a la instancia administrada de SQL y visualizar todas las bases de datos, pero no pueden interactuar con ellas. Si inicia sesión con la cuenta de Microsoft Entra que tiene los permisos predeterminados e intenta expandir la base de datos recién creada, verá el siguiente error:

Captura de pantalla de un mensaje de error del Explorador de objetos de SSMS que lee

Para obtener más información sobre cómo conceder permisos de base de datos, consulte Introducción a permisos de Motor de base de datos.

Creación de un usuario de Microsoft Entra y creación de una tabla de ejemplo

Nota:

Hay algunas limitaciones cuando un usuario inicia sesión como parte de un grupo de Microsoft Entra. Por ejemplo, una llamada a SUSER_SID devuelve NULL, ya que el usuario de Microsoft Entra especificado no forma parte de la tabla sys.server_principals. Por lo tanto, el acceso a determinados procedimientos almacenados o una lista de permisos concedidos puede estar limitado en este caso.

  1. Inicie sesión en la instancia administrada de SQL con una cuenta de sysadmin en SQL Server Management Studio.

  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. En la ventana de consulta, use la sintaxis siguiente para crear un usuario a partir de un inicio de sesión de Microsoft Entra:

    USE <Database Name> -- provide your database name
    GO
    CREATE USER user_name FROM LOGIN login_name
    GO
    

    En el ejemplo siguiente se crea un usuario bob@aadsqlmi.net en el inicio de sesión bob@aadsqlmi.net:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. También se admite la creación de un usuario de Microsoft Entra a partir de una cuenta de Microsoft Entra que pertenezca a un grupo.

    En el ejemplo siguiente se crea un inicio de sesión para el grupo de Microsoft Entra mygroup que existe en el inquilino de Microsoft Entra:

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Todos los usuarios que pertenecen a mygroup pueden acceder a la base de datos MyMITestDB.

    Importante

    Al crear un USER desde un inicio de sesión de Microsoft Entra, especifique el user_name como el mismo login_name de LOGIN.

    Para más información, consulte CREATE USER.

  5. En una nueva ventana de consulta, cree una tabla de prueba con el siguiente comando T-SQL:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Cree una conexión en SSMS con el usuario que se ha creado. Observará que no puede ver la tabla TestTable creada por sysadmin anteriormente. Hay que proporcionar al usuario los permisos para leer los datos de la base de datos.

  7. Puede comprobar el permiso actual del usuario mediante la ejecución del siguiente comando:

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Adición de usuarios a roles de nivel de base de datos

Para que el usuario vea los datos en la base de datos, hay que proporcionar roles de nivel de base de datos al usuario.

  1. Inicie sesión en la instancia administrada de SQL con una cuenta de sysadmin con SQL Server Management Studio.

  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. Conceda al usuario Microsoft Entra el rol de base de datos db_datareader mediante la siguiente sintaxis de T-SQL:

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    En el ejemplo siguiente se proporciona al usuario bob@aadsqlmi.net y al grupo mygrouppermisos de db_datareader en la base de datos MyMITestDB:

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Compruebe que el usuario Microsoft Entra que se creó en la base de datos existe ejecutando el siguiente comando:

    SELECT * FROM sys.database_principals
    GO
    
  5. Cree una nueva conexión con la instancia administrada de SQL utilizando el usuario agregado al rol db_datareader.

  6. Expanda la base de datos en Explorador de objetos para ver la tabla.

    Captura de pantalla del Explorador de Objetos en SSMS que muestra la estructura de carpetas para Tablas en MyMITestDB. La carpeta dbo.TestTable está destacada.

  7. Abra una nueva ventana de consulta y ejecute la instrucción siguiente SELECT :

    SELECT *
    FROM TestTable
    

    ¿Puede ver los datos de la tabla? Deberá observar las columnas que se devuelven como se presenta en la captura de pantalla siguiente.

    Captura de pantalla de la pestaña Resultados del Explorador de objetos de SSMS que muestra los encabezados de columna de tabla AccountNum, City, Name y State.

Suplantar inicios de sesión de Microsoft Entra

SQL Managed Instance admite la suplantación de inicios de sesión de Microsoft Entra.

Prueba de suplantación

  1. Inicie sesión en la instancia administrada de SQL con una cuenta de sysadmin con SQL Server Management Studio.

  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. En la ventana de consulta, utilice el siguiente comando para crear un procedimiento almacenado:

    USE MyMITestDB
    GO
    CREATE PROCEDURE dbo.usp_Demo
    WITH EXECUTE AS 'bob@aadsqlmi.net'
    AS
    SELECT user_name();
    GO
    
  4. Utilice el siguiente comando para ver que el usuario que está suplantando al ejecutar el procedimiento almacenado es bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Pruebe la suplantación con la instrucción EXECUTE AS LOGIN:

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Nota:

Solo los accesos a nivel de servidor SQL que forman parte del rol sysadmin pueden ejecutar las siguientes operaciones destinadas a entidades de seguridad de Microsoft Entra.

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Consultas cruzadas entre bases de datos

Las consultas entre bases de datos se admiten para cuentas de Microsoft Entra con inicios de sesión de Microsoft Entra. Para probar una consulta entre bases de datos con un grupo de Microsoft Entra, es necesario crear otra base de datos y tabla. Puede omitir la creación de otra base de datos y tabla si ya existe una.

  1. Inicie sesión en la instancia administrada de SQL con una cuenta de sysadmin con SQL Server Management Studio.

  2. En Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nuevo consulta.

  3. En la ventana de consulta, utilice el siguiente comando para crear una base de datos denominada MyMITestDB2 y una tabla llamada TestTable2:

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. En una nueva ventana de consulta, ejecute el siguiente comando para crear el usuario mygroup en la nueva base de datos MyMITestDB2 y conceder SELECT permisos en esa base de datos a mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Inicie sesión en la instancia administrada de SQL mediante SQL Server Management Studio como miembro del grupo de Microsoft Entra mygroup. Abra una nueva ventana de consulta y ejecute la instrucción entre bases de datos SELECT :

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Debería ver los resultados de la tabla en TestTable2.

Escenarios admitidos adicionales

  • La administración del Agente SQL y la ejecución de trabajos son compatibles con las credenciales de Microsoft Entra.
  • Los inicios de sesión de Microsoft Entra pueden ejecutar operaciones de copia de seguridad y restauración de bases de datos.
  • Auditing de todas las declaraciones relacionadas con los inicios de sesión de Microsoft Entra y los eventos de autenticación.
  • Conexión dedicada del administrador para conexiones de inicio de sesión de Microsoft Entra que son miembros del rol de servidor sysadmin.
  • Los inicios de sesión de Microsoft Entra son compatibles con el uso de la utilidad sqlcmd y la herramienta SQL Server Management Studio.
  • Los desencadenadores de inicio de sesión son compatibles con eventos de inicio de sesión procedentes de Microsoft Entra.
  • El Service Broker y el correo electrónico de la base de datos se pueden configurar mediante inicios de sesión de Microsoft Entra.