Tutorial: Protección con inicios de sesión de Microsoft Entra: Azure SQL Managed Instance

Se aplica a:Azure SQL Managed Instance

En este artículo, aprenderá a usar entidades de seguridad de servidor (inicios de sesión) respaldadas por Microsoft Entra ID (anteriormente Azure Active Directory) para proteger Azure SQL Managed Instance.

En este tutorial, aprenderá a:

  • Crear un inicio de sesión de Microsoft Entra para una instancia administrada
  • Conceder permisos a los inicios de sesión en una instancia administrada
  • Crear usuarios de Microsoft Entra a partir de inicios de sesión
  • Asignar permisos a usuarios y administrar la seguridad de base de datos
  • Usar la suplantación con usuarios
  • Usar consultas entre bases de datos con usuarios
  • Aprenda 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 era conocido anteriormente 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

A las instancias administradas solo se puede acceder mediante una dirección IP privada. Al igual que en un entorno aislado de SQL Server, las aplicaciones o los usuarios necesitan acceso a la red de Instancia administrada de SQL (red virtual) para poder establecer una conexión. Para más información, consulte Conexión de una aplicación a Instancia administrada de SQL.

También se puede configurar un punto de conexión de servicio en una instancia administrada, lo que permite las conexiones públicas, del mismo modo que para Azure SQL Database. Para más información, consulte Configuración de un punto de conexión público en Instancia administrada de Azure SQL.

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

El primer inicio de sesión de Microsoft Entra se puede crear mediante el administrador de SQL o el administrador de Microsoft Entra creado durante el aprovisionamiento. Para más información, vea Aprovisionamiento de un administrador de Microsoft Entra para SQL Managed Instance.

Consulte los artículos siguientes para ver ejemplos de conexión a Instancia administrada de SQL:

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

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

  3. En la ventana de consulta, use la siguiente sintaxis a fin de crear un inicio de sesión para una cuenta local 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 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. Compruebe el inicio de sesión recientemente agregado, mediante la ejecución del siguiente comando T-SQL:

    SELECT *  
    FROM sys.server_principals;  
    GO
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

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

Concesión de 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 una entidad de seguridad de servidor basada en SQL, se le debe asignar el rol sysadmin a fin de crear inicios de sesión para cuentas de Microsoft Entra.

Inicios de sesión de autenticación de Microsoft Entra

  • Si el inicio de sesión es una entidad de seguridad de servidor de Microsoft Entra, se le debe asignar el rol de servidor sysadmin o securityadmin a fin de crear inicios de sesión para otros usuarios, grupos y aplicaciones de Microsoft Entra.
  • Como mínimo, se debe conceder el permiso ALTER ANY LOGIN para crear otros inicios de sesión de Microsoft Entra.
  • De manera predeterminada, los permisos estándar que se conceden a los inicios de sesión de Microsoft Entra recién creados en master son CONNECT SQL y VIEW ANY DATABASE.
  • El rol de servidor sysadmin se puede conceder a muchos inicios de sesión de Microsoft Entra dentro de una instancia administrada.

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

  1. Vuelva a iniciar sesión en la instancia administrada o use la conexión existente con el administrador de Microsoft Entra o la entidad de seguridad SQL que tenga el rol sysadmin.

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

  3. Conceda 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 concede el rol de servidor sysadmin al inicio de sesión 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

Cuando se ha creado el inicio de sesión de Microsoft Entra y se le han concedido los privilegios 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 con el inicio de sesión de Microsoft Entra; para ello, seleccione Conectar a Server en SQL Server Management Studio (SSMS).

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

  3. En la ventana de consulta, use la siguiente sintaxis a fin de 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 bob@aadsqlmi.net de Microsoft Entra, cuyo dominio aadsqlmi.net está federado con el dominio aadsqlmi.onmicrosoft.com de Microsoft Entra.

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

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Cree una base de datos en la instancia administrada con 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 el Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nueva 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 de Microsoft Entra ID. El grupo debe existir en Microsoft Entra ID para poder agregar el inicio de sesión a SQL Managed Instance. Vea Creación de un grupo básico y adición de miembros con 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 con el inicio de sesión o grupo que se acaban de crear. Abra una nueva conexión a la instancia administrada y use el nuevo inicio de sesión al autenticarse.

  8. En el 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 nuevo inicio de sesión de Microsoft Entra mediante la ejecución del siguiente comando:

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

La compatibilidad de Azure SQL con las entidades de seguridad de Microsoft Entra a medida que los usuarios e inicios de sesión se extienden 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 desea 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 de usuarios invitados en 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 forma muy parecida en SQL Managed Instance y en las bases de datos de SQL Server. Puede crear un usuario a partir de un inicio de sesión existente en una base de datos y se le pueden conceder permisos sobre esa base de datos, o agregarse a un rol de base de datos.

Ahora que hemos creado una base de datos llamada 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. Por el momento, el inicio de sesión puede conectarse a la instancia administrada y ver todas las bases de datos, pero no puede interactuar con las bases de datos. 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:

Screenshot of an error message from the the S S M S Object Explorer that reads

Para más información sobre la concesión de permisos de base de datos, consulte Introducción a los permisos de los motores de bases 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 a una lista de permisos concedidos puede estar limitado en este caso.

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

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

  3. En la ventana de consulta, use la siguiente sintaxis 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 un inicio de sesión de Microsoft Entra que es un grupo.

    En el ejemplo siguiente se crea un inicio de sesión para el grupo mygroup de Microsoft Entra 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

    Cuando cree una instancia de USER a partir de un inicio de sesión de Microsoft Entra, especifique el nombre de usuario como el mismo nombre de inicio de sesión 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 se puede ver la tabla TestTable que se ha creado por el rol sysadmin anterior. 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 con una cuenta sysadmin mediante SQL Server Management Studio.

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

  3. Conceda al usuario de Microsoft Entra el rol de base de datos db_datareader mediante la siguiente sintaxis 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 mygroup permisos 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 de Microsoft Entra que se ha creado en la base de datos existe; para ello, ejecute el siguiente comando:

    SELECT * FROM sys.database_principals
    GO
    
  5. Cree una nueva conexión a la instancia administrada con el usuario al que se le ha agregado el rol db_datareader.

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

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

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

    SELECT *
    FROM TestTable
    

    ¿Puede ver los datos de la tabla? Debería ver las columnas que se devuelven.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Suplantación de 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 con una cuenta sysadmin mediante SQL Server Management Studio.

  2. En el Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nueva 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 inicios de sesión de nivel de servidor de SQL que formen parte del rol sysadmin pueden ejecutar las operaciones siguientes destinadas a entidades de seguridad de Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Consultas 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, hay que crear otra base de datos y una 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 con una cuenta sysadmin mediante SQL Server Management Studio.

  2. En el Explorador de objetos, haga clic con el botón derecho en el servidor y elija Nueva 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 conceda los permisos SELECT 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 mediante SQL Server Management Studio como miembro del grupo mygroup de Microsoft Entra. Abra una nueva ventana de consulta y ejecute la instrucción SELECT entre las bases de datos:

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

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

Escenarios admitidos adicionales

  • Se admiten la administración del agente SQL y las ejecuciones de trabajos con los inicios de sesión de Microsoft Entra.
  • Las operaciones de copia de seguridad y restauración de la base de datos se pueden ejecutar con inicios de sesión de Microsoft Entra.
  • Auditoría de todas las instrucciones relacionadas con inicios de sesión y eventos de autenticación de Microsoft Entra.
  • Conexión de administrador dedicada para los inicios de sesión de Microsoft Entra que son miembros del rol de servidor sysadmin.
  • Se admiten los inicios de sesión de Microsoft Entra con el uso de la utilidad sqlcmd y de la herramienta SQL Server Management Studio.
  • Se admiten desencadenadores de inicio de sesión para eventos de inicio de sesión procedentes de inicios de sesión de Microsoft Entra.
  • Se puede configurar Service Broker y el correo electrónico de la base de datos con los inicios de sesión de Microsoft Entra.

Pasos siguientes

Habilitar características de seguridad

Consulte en el artículo Características de seguridad de Instancia administrada de SQL una lista completa de las formas de proteger una base de datos. Se abordan las características de seguridad siguientes:

Funcionalidades de Instancia administrada de SQL

Para obtener información general completa de las funcionalidades de Instancia administrada de SQL, consulte: