Tutorial: Protección de una base de datos en Azure SQL Database

SE APLICA A: Azure SQL Database

En este tutorial, aprenderá a:

  • Crear reglas de firewall de nivel de servidor y de base de datos.
  • Configurar un administrador de Azure Active Directory (Azure AD).
  • Administrar el acceso de usuario con la autenticación de SQL, la autenticación de Azure AD y cadenas de conexión seguras.
  • Habilitar características de seguridad, como Microsoft Defender para SQL, la auditoría, el enmascaramiento de datos y el cifrado.

Azure SQL Database protege los datos, al permitirle:

  • Limitar el acceso mediante reglas de firewall
  • Usar mecanismos de autenticación que requieran la identidad
  • Usar la autorización con pertenencias y permisos basados en roles
  • Habilitar características de seguridad

Nota:

Instancia administrada de Azure SQL se protege mediante reglas de seguridad de red y puntos de conexión privados, como se describe en Instancia administrada de Azure SQL Database y Arquitectura de conectividad.

Para más información, consulte los artículos Información general sobre las funcionalidades de seguridad de Azure SQL Database y Funcionalidades.

Sugerencia

El siguiente módulo de Microsoft Learn le ayuda a aprender de forma gratuita sobre cómo proteger la base de datos de Azure SQL Database.

Requisitos previos

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

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Inicio de sesión en Azure Portal

Para realizar todos los pasos del tutorial, inicie sesión en Azure Portal.

Creación de reglas de firewall

En Azure, las bases de datos SQL Database están protegidas mediante firewalls. De forma predeterminada, se rechazan todas las conexiones al servidor y a la base de datos. Para más información, consulte Creación de reglas de firewall de nivel de servidor y de base de datos.

Establezca Permitir el acceso a servicios de Azure en OFF (DESACTIVADO) para configurar la opción más segura. A continuación, cree una dirección IP reservada (implementación clásica) para el recurso que tenga que conectar, como una máquina virtual de Azure o un servicio en la nube, y permita solo a esa dirección IP el acceso mediante el firewall. Si usa el modelo de implementación de Resource Manager, es necesaria una dirección IP pública dedicada para cada recurso.

Nota

SQL Database se comunica a través del puerto 1433. Si intenta conectarse desde dentro de una red corporativa, es posible que el firewall de la red no permita el tráfico de salida a través del puerto 1433. En ese caso, no puede conectarse al servidor, salvo que el administrador abra el puerto 1433.

Configuración de reglas de firewall de nivel de servidor

Las reglas de firewall de IP en el nivel de servidor se aplican a todas las bases de datos del mismo servidor.

Para configurar una regla de firewall de nivel de servidor:

  1. En Azure Portal, seleccione Bases de datos SQL en el menú de la izquierda y seleccione la base de datos en la página Bases de datos SQL.

    server firewall rule

    Nota:

    Copie el nombre completo del servidor (como suservidor.database.windows.net) para usarlo más adelante en el tutorial.

  2. En la página Información general, seleccione Establecer el firewall del servidor. Se abrirá la página Configuración del firewall del servidor.

    1. Seleccione Agregar IP de cliente en la barra de herramientas para agregar la dirección IP actual a la nueva regla de firewall. La regla puede abrir el puerto 1433 para una única dirección IP o un intervalo de direcciones IP. Seleccione Guardar.

      set server firewall rule

    2. Seleccione Aceptar y, después, cierre la página Configuración de firewall.

Ahora puede conectarse a cualquier base de datos del servidor con la dirección IP o el intervalo de direcciones IP especificados.

Configuración de reglas de firewall para las bases de datos

Las reglas de firewall de nivel de base de datos solo se aplican a bases de datos individuales. La base de datos conservará estas reglas durante una conmutación por error del servidor. Las reglas de firewall de nivel de base de datos solo pueden configurarse mediante instrucciones de Transact-SQL (T-SQL) y únicamente después de haber configurado una regla de firewall de nivel de servidor.

Para configurar una regla de firewall en el nivel de base de datos:

  1. Conéctese a la base de datos, por ejemplo, mediante SQL Server Management Studio.

  2. En el Explorador de objetos, haga clic con el botón derecho en la base de datos y seleccione Nueva consulta.

  3. En la ventana de consulta, agregue esta instrucción y reemplace la dirección IP por su dirección IP pública:

    EXECUTE sp_set_database_firewall_rule N'Example DB Rule','0.0.0.4','0.0.0.4';
    
  4. En la barra de herramientas, seleccione Ejecutar para crear la regla de firewall.

Nota:

También puede crear una regla de firewall de nivel de servidor en SSMS mediante el comando sp_set_firewall_rule, aunque debe estar conectado a la base de datos maestra.

Creación de un administrador de Azure AD

Asegúrese de que está usando el dominio administrado de Azure Active Directory (AD) adecuado. Seleccione el dominio de AD en la esquina superior derecha de Azure Portal. Este proceso confirma que la misma suscripción se usa tanto para Azure AD como para el servidor SQL lógico que hospeda el almacenamiento de datos o la base de datos.

choose-ad

Para establecer el administrador de Azure AD:

  1. En Azure Portal, en la página SQL Server, seleccione Administrador de Active Directory. A continuación, seleccione Establecer administrador.

    select active directory

    Importante

    Para realizar esta tarea, debe ser "administrador global".

  2. En la página Agregar administrador, busque y seleccione el usuario o el grupo de AD, y elija Seleccionar. Se muestran todos los miembros y grupos de Active Directory; no se admiten las entradas atenuadas como administradores de Azure AD. Consulte Características y limitaciones de Azure AD.

    select admin

    Importante

    El control de acceso basado en roles de Azure se aplica solo al portal y no se propaga a SQL Server.

  3. En la parte superior de la página Administrador de Active Directory, seleccione Guardar.

    El proceso de cambio de un administrador puede tardar varios minutos. El nuevo administrador aparecerá en el cuadro Administrador de Active Directory.

Nota:

Al configurar un administrador de Azure AD, el nombre del nuevo administrador (usuario o grupo) no puede existir como un usuario o inicio de sesión de SQL Server en la base de datos maestra. Si estuviera, se producirá un error en la instalación, se revertirán los cambios y se indicará que ese nombre de administrador ya existe. Como el usuario o inicio de sesión de SQL Server no forma parte de Azure AD, se producirá un error cada vez que se intente conectar el usuario con la autenticación de Azure AD.

Para más información acerca de la configuración de Azure AD, consulte:

Administración del acceso a las bases de datos

Para administrar el acceso de la base de datos, agregue usuarios a la base de datos o permita el acceso de los usuarios con cadenas de conexión segura. Las cadenas de conexión son útiles para las aplicaciones externas. Para más información, consulte Control y concesión de acceso de la base de datos a SQL Database y SQL Data Warehouse y Usar la autenticación de Azure Active Directory para autenticación con SQL.

Para agregar usuarios, elija el tipo de autenticación de base de datos:

  • Autenticación de SQL, que usa un nombre de usuario y una contraseña para iniciar sesión, y son válidos únicamente en el contexto de una base de datos específica dentro de un servidor.

  • Autenticación de Azure AD, que usa identidades administradas por Azure AD.

Autenticación SQL

Para agregar un usuario con la autenticación de SQL:

  1. Conéctese a la base de datos, por ejemplo, mediante SQL Server Management Studio.

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

  3. En la ventana de consulta, escriba el comando siguiente:

    CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
    
  4. En la barra de herramientas, seleccione Ejecutar para crear el usuario.

  5. De forma predeterminada, el usuario puede conectarse a la base de datos, pero no tiene permisos para leer o escribir datos. Para conceder estos permisos, ejecute los dos comandos siguientes en una nueva ventana de consulta:

    ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
    ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
    

Nota:

Cree cuentas sin privilegios de administrador en el nivel de base de datos, a menos que haya que ejecutar tareas de administrador tales como crear nuevos usuarios.

Autenticación de Azure AD

La autenticación de Azure Active Directory requiere que los usuarios de la base de datos se creen como independientes. Un usuario de base de datos independiente se asigna a una identidad en el directorio de Azure AD asociado a la base de datos y no tiene inicio de sesión en la base de datos maestra. La identidad de Azure AD puede ser una cuenta de usuario individual o un grupo. Para más información, consulte Usuarios de base de datos independiente: hacer que la base de datos sea portátil y revise el Tutorial de Azure AD acerca de cómo autenticarse con Azure AD.

Nota:

Los usuarios de base de datos (a excepción de los administradores) no se pueden crear mediante Azure Portal. Los roles de Azure no se propagan a los almacenes de datos, servidores o bases de datos de SQL. Se utilizan solo para administrar los recursos de Azure y no se aplican a los permisos de base de datos.

Por ejemplo, el rol Colaborador de SQL Server no concede acceso para conectarse a una base de datos o a un almacenamiento de datos. Este permiso tiene que concederse dentro de la base de datos mediante instrucciones de T-SQL.

Importante

No se admiten caracteres especiales, como los dos puntos : o la "y" comercial &, en los nombres de usuario de las instrucciones CREATE LOGIN y CREATE USER de T-SQL.

Para agregar un usuario con la autenticación de Azure AD:

  1. Conéctese a su servidor de Azure mediante una cuenta de Azure AD con al menos el permiso ALTER ANY USER.

  2. En el Explorador de objetos, haga clic con el botón derecho en la base de datos y seleccione Nueva consulta.

  3. En la ventana de consulta, escriba el siguiente comando y reemplace <Azure_AD_principal_name> por el nombre principal del usuario de Azure AD o el nombre para mostrar del grupo de Azure AD:

    CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;
    

Nota:

Los usuarios de Azure AD se marcan en los metadatos de la base de datos con el tipo E (EXTERNAL_USER) y el tipo X (EXTERNAL_GROUPS) para grupos. Para obtener más información, consulte sys.database_principals (Transact-SQL).

Cadenas de conexión seguras

Para garantizar una conexión cifrada y segura entre la aplicación cliente y SQL Database, se debe configurar una cadena de conexión para:

  • Solicitar una conexión cifrada.
  • No confiar en el certificado de servidor.

La conexión se establece mediante la Seguridad de la capa de transporte (TLS) y se reduce el riesgo de ataques de tipo "Man in the middle". Las cadenas de conexión están disponibles para cada base de datos y están preconfiguradas para admitir los controladores de cliente como ADO.NET, JDBC, ODBC y PHP. Para información sobre TLS y la conectividad, consulte Consideraciones de TLS.

Para copiar una cadena de conexión segura:

  1. En Azure Portal, seleccione Bases de datos SQL en el menú de la izquierda y seleccione la base de datos en la página Bases de datos SQL.

  2. En la página Información general, haga clic en Mostrar las cadenas de conexión de la base de datos.

  3. Seleccione una pestaña de controlador y copie la cadena de conexión completa.

    ADO.NET connection string

Habilitar características de seguridad

Azure SQL Database proporciona características de seguridad que son accesibles mediante Azure Portal. Estas características están disponibles tanto para la base de datos como para el servidor, excepto el enmascaramiento de datos, que solo está disponible en la base de datos. Para más información, consulte Microsoft Defender para SQL, Auditoría, Enmascaramiento dinámico de datos y Cifrado de datos transparente.

Microsoft Defender para SQL

La característica Microsoft Defender para SQL detecta amenazas a medida que se producen y proporciona alertas de seguridad sobre actividades anómalas. Los usuarios pueden explorar los eventos sospechosos con la característica de autoría y determinar si el evento pretendía acceder a los datos de la base de datos, infringir su seguridad o aprovechar sus vulnerabilidades. Los usuarios también obtienen una visión general de la seguridad que incluye una evaluación de las vulnerabilidades y la herramienta de detección y clasificación de datos.

Nota:

Un ejemplo de amenaza es la inyección de código SQL, un proceso mediante el cual los atacantes insertan SQL malintencionado en los datos de entrada de la aplicación. Después, una aplicación puede ejecutar el código SQL malintencionado sin saberlo y permitir el acceso de los atacantes para infringir la seguridad o modificar los datos de la base de datos.

Para habilitar Microsoft Defender para SQL:

  1. En Azure Portal, seleccione Bases de datos SQL en el menú de la izquierda y seleccione la base de datos en la página Bases de datos SQL.

  2. En la página Información general, seleccione el vínculo Nombre de servidor. Se abrirá la página del servidor.

  3. En la página SQL Server, busque la sección Seguridad y seleccione Defender para la nube.

    1. Seleccione Activado en Microsoft Defender para SQL para habilitar la característica. Elija una cuenta de almacenamiento para guardar los resultados de la evaluación de vulnerabilidad. Después, seleccione Guardar.

      Navigation pane

      También puede configurar mensajes de correo electrónico para recibir las alertas de seguridad, los detalles de almacenamiento y los tipos de detección de amenazas.

  4. Vuelva a la página Bases de datos SQL de la base de datos y seleccione Defender para la nube en la sección Seguridad. Aquí encontrará varios indicadores de seguridad disponibles para la base de datos.

    Threat status

Si se detectan actividades anómalas, recibirá un correo electrónico con información sobre el evento. Por ejemplo, la naturaleza de la actividad, la base de datos, el servidor, la hora del evento, las posibles causas y las acciones recomendadas para investigar y mitigar la posible amenaza. Si se recibe dicho correo electrónico, seleccione el vínculo Registro de auditoría de SQL Azure para abrir Azure Portal y mostrar los registros de auditorías pertinentes para el momento del evento.

Threat detection email

Auditoría

La característica de auditoría realiza un seguimiento de los eventos de base de datos y escribe los eventos en un registro de auditoría en un almacenamiento de Azure, registros de Azure Monitor o en un centro de eventos. La auditoría ayuda a mantener el cumplimiento de las normativas y conocer la actividad de las bases de datos, así como las discrepancias y anomalías que pueden indicar la existencia de posibles infracciones de la seguridad.

Para habilitar la auditoría:

  1. En Azure Portal, seleccione Bases de datos SQL en el menú de la izquierda y seleccione la base de datos en la página Bases de datos SQL.

  2. En la sección Seguridad, seleccione Auditoría.

  3. En las opciones de Auditoría, establezca los valores siguientes:

    1. Establezca Auditoría en ACTIVADA.

    2. En Destino del registro de auditoría, seleccione alguna de las opciones siguientes:

      • Almacenamiento, una cuenta de Azure Storage donde se guardan los registros de eventos, que se pueden descargar como archivos .xel.

        Sugerencia

        Use la misma cuenta de almacenamiento para todas las bases de datos auditadas con el fin de obtener el máximo partido de las plantillas de informes de auditorías.

      • Log Analytics, que almacena automáticamente los eventos para realizar consultas o un análisis más profundo.

        Nota:

        Se requiere un área de trabajo de Log Analytics para admitir características avanzadas, como análisis, reglas de alerta personalizadas y exportaciones de Excel o Power BI. Sin un área de trabajo, solo está disponible el editor de consultas.

      • Centro de eventos, que permite enrutar los eventos para usarlos en otras aplicaciones.

    3. Seleccione Guardar.

      Audit settings

  4. Ahora puede seleccionar Ver registros de auditoría para ver los datos de eventos de base de datos.

    Audit records

Importante

Consulte Auditoría de base de datos SQL para saber cómo personalizar aún más los eventos de auditoría con PowerShell o la API REST.

Enmascaramiento de datos dinámicos

La función de enmascaramiento de datos ocultará automáticamente los datos confidenciales de la base de datos.

Para habilitar el enmascaramiento de datos:

  1. En Azure Portal, seleccione Bases de datos SQL en el menú de la izquierda y seleccione la base de datos en la página Bases de datos SQL.

  2. En la sección Seguridad, seleccione Enmascaramiento dinámico de datos.

  3. En la opción Enmascaramiento dinámico de datos, seleccione Agregar máscara para agregar una regla de enmascaramiento. Azure rellenará automáticamente los esquemas de base de datos disponibles, las tablas y las columnas para elegir.

    Mask settings

  4. Seleccione Guardar. Ahora se enmascara la información seleccionada para mantener la privacidad.

    Mask example

Cifrado de datos transparente

La característica de cifrado cifra automáticamente los datos en reposo y no requiere cambios en las aplicaciones que acceden a la base de datos cifrada. En las bases de datos nuevas, el cifrado está activado de forma predeterminada. También puede cifrar los datos con SSMS y la característica Always encrypted.

Para habilitar o comprobar el cifrado:

  1. En Azure Portal, seleccione Bases de datos SQL en el menú de la izquierda y seleccione la base de datos en la página Bases de datos SQL.

  2. En la sección Seguridad, seleccione Cifrado de datos transparente.

  3. Si es necesario, establezca Cifrado de datos en ACTIVADO. Seleccione Guardar.

    Transparent Data Encryption

Nota

Para ver el estado de cifrado, conéctese a la base de datos mediante SSMS y consulte la columna encryption_state de la vista sys.dm_database_encryption_keys. El estado 3 indica que la base de datos está cifrada.

Nota

Algunos elementos considerados contenido del cliente, como nombres de tablas, nombres de objetos y nombres de índices, se pueden transmitir en archivos de registro para soporte técnico y solución de problemas por parte de Microsoft.

Pasos siguientes

En este tutorial, ha aprendido a mejorar la seguridad de una base de datos con unos sencillos pasos. Ha aprendido a:

  • Crear reglas de firewall de nivel de servidor y de base de datos.
  • Configurar un administrador de Azure Active Directory (Azure AD).
  • Administrar el acceso de usuario con la autenticación de SQL, la autenticación de Azure AD y cadenas de conexión seguras.
  • Habilitar características de seguridad, como Microsoft Defender para SQL, la auditoría, el enmascaramiento de datos y el cifrado.

En el siguiente tutorial aprenderá a implementar una distribución geográfica.