Ejercicio: administración de la seguridad

Completado

Una vez que la instancia de Azure SQL Database está protegida en los niveles de red, autenticación y protección de datos, el último paso es entender cómo va a administrar la seguridad de forma continuada. La administración de la seguridad incluye la auditoría, la supervisión y la clasificación de datos.

Auditoría

La auditoría puede ayudarle a mantener el cumplimiento de normativas y conocer la actividad de las bases de datos, así como las discrepancias y anomalías que pueden indicar la existencia de potenciales infracciones de la seguridad. En esta actividad, configurará la auditoría en el nivel de servidor, aunque también está disponible en el nivel de base de datos.

Como alternativa a la auditoría de SQL Server, en Azure SQL Database existe Auditoría de Azure SQL. Cuenta con la tecnología de auditoría de SQL Server y, como este, admite acciones y grupos de acciones de auditoría. La característica de auditoría realiza un seguimiento de los eventos de base de datos y de servidor y escribe eventos en un registro de auditoría en Azure Storage, Log Analytics o en Azure Event Hubs. Si apunta a una cuenta de Azure Blob Storage, puede almacenar y analizar los resultados en los archivos de XEvents. Con Log Analytics, desbloquee la capacidad de consultar los registros con el lenguaje de consulta de Kusto (KQL) y aproveche los paneles de auditoría de Log Analytics.

Configuración de la auditoría

En un ejercicio anterior para implementar SQL Database, configuró la auditoría en el nivel de servidor, pero también está disponible en el nivel de base de datos. En un ejercicio futuro, verá cómo acceder y usar los archivos enviados a Azure Blob Storage, KQL y los paneles de Log Analytics.

Complete los pasos siguientes para configurar un área de trabajo de Log Analytics:

  1. En la barra de búsqueda de Azure Portal, escriba Log Analytics y, a continuación, seleccione Áreas de trabajo de Log Analytics en los resultados. Aparecerá el panel Áreas de trabajo de Log Analytics.

  2. Seleccione Crear. Aparecerá el menú Crear un área de trabajo de Log Analytics.

  3. En la pestaña Aspectos básicos, escriba los valores siguientes para cada opción.

    Configuración Value
    Detalles del proyecto
    Suscripción Suscripción de Concierge
    Grupo de recursos En la lista desplegable, seleccione [Grupo de recursos de espacio aislado].
    Detalles de instancia
    Nombre Escriba azuresql-la
    Region Seleccione la ubicación más cercana en la lista siguiente.

    El espacio aislado gratuito permite crear recursos en un subconjunto de las regiones globales de Azure. Seleccione una región de la lista siguiente al crear los recursos:

    • Oeste de EE. UU. 2
    • Centro-sur de EE. UU.
    • Centro de EE. UU.
    • Este de EE. UU.
    • Oeste de Europa
    • Sudeste de Asia
    • Japón Oriental
    • Sur de Brasil
    • Sudeste de Australia
    • Centro de la India
  4. Seleccione Revisar y crear, espere hasta que se hayan validado las entradas y, a continuación, seleccione Crear. Espere hasta que se implemente el recurso.

  5. Haga clic en Go to resource (Ir al recurso). Aparece el panel Información general del área de trabajo de Log Analytics.

  6. En Azure Portal, vaya a la base de datos AdventureWorks.

  7. En el apartado Seguridad del menú, seleccione Auditoría. Revise las opciones

    Puede aplicar la auditoría en el nivel de servidor, con lo que se aplica a todas las bases de datos del servidor lógico de Azure SQL Database. Si también aplica la auditoría en el nivel de base de datos (cosa que hará en esta unidad), ambas auditorías se producen en paralelo, una no invalida la otra.

  8. Seleccione el botón de alternancia para Habilitar auditoría de Azure SQL.

  9. Seleccione la casilla Almacenamiento y, después, complete los campos obligatorios:

    • En la lista desplegable Suscripción, seleccione la Suscripción de Concierge.
    • En la lista desplegable Cuenta de almacenamiento, seleccione la cuenta que empieza por sql seguida de una cadena aleatoria de letras y números.
    • En Tipo de autenticación de almacenamiento deje la opción predeterminada Claves de acceso de almacenamiento.

    La cuenta de almacenamiento de sql se usa para recopilar archivos de registro XEvent, que se guardan como una colección de archivos de blobs dentro de un contenedor denominado sqldbauditlogs. En una actividad posterior, revisará el contenedor para obtener información sobre en qué se diferencian los archivos de registro de los análisis de registros.

    Sugerencia

    Si no ve ninguna cuenta de almacenamiento, cree una. Es posible que deba actualizar la página después de un par de minutos antes de que se muestre.

    Si va a auditar el entorno de producción, plantéese tener una cuenta de almacenamiento independiente para los registros de auditoría.

  10. Seleccione Propiedades avanzadas para expandir la sección y establecer los elementos de configuración siguientes:

    • En Retención (días), escriba 7.
    • En Clave de acceso de almacenamiento, seleccione Principal.

    Nota:

    Si no ve la opción Propiedades avanzadas, seleccione Guardar en la barra de comandos y, a continuación, repita las instrucciones de configuración de esta página.

  11. Seleccione la casilla Análisis de registros y, a continuación, complete los campos obligatorios:

    • En Suscripción, seleccione Suscripción de Concierge en la lista desplegable.
    • En Log Analytics, seleccione el área de trabajo de Log Analytics que ha creado anteriormente en este ejercicio (asuresql-la).
  12. Seleccione Guardar.

    La configuración puede tardar unos minutos en procesarse.

Ahora ha habilitado la auditoría para una cuenta de almacenamiento y un área de trabajo de Azure Log Analytics. Más adelante, profundizará en las funcionalidades de auditoría de Azure SQL. Aprenderá a analizar los registros de auditoría para ver todos los cambios que ha realizado en el módulo, así como otros casos de uso interesantes.

Libro de contabilidad para Azure SQL Database

La característica de libro de contabilidad proporciona pruebas criptográficas con indicios de manipulación de funcionalidades de integridad de datos en la base de datos. Esta prueba puede ayudar a simplificar el proceso de auditoría.

El libro de contabilidad ayuda a proteger los datos frente a cualquier atacante o usuario con privilegios elevados, incluidos los administradores de bases de datos, los administradores del sistema y los de la nube. Al igual que con un libro de contabilidad tradicional, la característica permite conservar los datos históricos. Cuando la transacción de una tabla de libro de contabilidad modifique los datos, se aplicará al evento un hash SHA-256 criptográficamente mediante una estructura de datos de árbol Merkle que crea un hash raíz que representa todas las filas de la transacción. Después, también se aplica un hash SHA-256 a las transacciones procesadas por la base de datos mediante una estructura de datos en árbol de Merkle. El resultado es un hash raíz que forma un bloque. A continuación, se aplica un hash SHA-256 mediante el hash raíz del bloque junto con el hash raíz del bloque anterior como entrada a la función hash. Eso forma una cadena de bloques. Si se actualiza una fila en la base de datos, su valor anterior se conserva y protege en una tabla de historial. El libro de contabilidad proporciona una crónica de todos los cambios realizados en la base de datos a lo largo del tiempo.

La funcionalidad del libro de contabilidad se introduce en las tablas de dos formas:

  • Tablas de libro de contabilidad actualizables, que permiten actualizar y eliminar filas en las tablas
  • Tablas de libro de contabilidad de solo anexión, que solo permiten inserciones en las tablas

Tanto las tablas de libro de contabilidad actualizables como las tablas de libro de contabilidad de solo anexión proporcionan funcionalidades de evidencia de alteración y análisis forense digital.

Ejercicio con el libro de contabilidad para Azure SQL Database

En el ejercicio para crear la base de datos de Azure SQL, agregamos una base de datos denominada myLedgerDatabase y creamos una tabla denominada Account.Balance. En este ejercicio, vamos a insertar datos, realizar actualizaciones en los datos y consultar la tabla de historial y las vistas del libro de contabilidad para ver el seguimiento que tiene lugar y la relación entre las tablas.

  1. Abra SSMS y conéctese al servidor lógico de Azure SQL Database.

  2. Haga clic con el botón derecho en la base de datos myLedgerDatabase y, luego, seleccione Nueva consulta.

  3. Inserte el nombre Nick Jones como un nuevo cliente con un saldo de apertura de 50 USD.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Inserte los nombres John Smith, Joe Smith y Mary Michaels como nuevos clientes con saldos de apertura de 500 USD, 30 USD y 200 USD, respectivamente.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Consulte la tabla actualizable del libro de contabilidad [Account].[Balance], y especifique las columnas GENERATED ALWAYS agregadas a la tabla. Seleccione Ejecutar para ejecutar esta consulta.

    SELECT [CustomerID]
       ,[LastName]
       ,[FirstName]
       ,[Balance]
       ,[ledger_start_transaction_id]
       ,[ledger_end_transaction_id]
       ,[ledger_start_sequence_number]
       ,[ledger_end_sequence_number]
     FROM [Account].[Balance];  
    

    En la ventana de resultados, primero verá los valores que insertaron los comandos de T-SQL, junto con los metadatos del sistema que se usan con fines de linaje de datos.

    • La columna ledger_start_transaction_id indica el identificador de transacción único asociado a la transacción que insertó los datos. Como John, Joe y Mary se insertaron mediante la misma transacción, comparten el mismo identificador de transacción.
    • La columna ledger_start_sequence_number indica el orden mediante el cual la transacción insertó los valores.
  6. Actualice el saldo de Nick de50 a 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Vea la vista de libro de contabilidad [Account].[Balance], junto con la vista del sistema de libro de contabilidad de transacciones para identificar a los usuarios que realizaron los cambios. Seleccione Ejecutar para ejecutar la consulta.

     SELECT
     t.[commit_time] AS [CommitTime] 
     , t.[principal_name] AS [UserName]
     , l.[CustomerID]
     , l.[LastName]
     , l.[FirstName]
     , l.[Balance]
     , l.[ledger_operation_type_desc] AS Operation
     FROM [Account].[Balance_Ledger] l
     JOIN sys.database_ledger_transactions t
     ON t.transaction_id = l.ledger_transaction_id
     ORDER BY t.commit_time DESC;
    

    El saldo de la cuenta de Nick se ha actualizado correctamente a 100 en la tabla actualizable del libro de contabilidad.
    La vista del libro de contabilidad muestra que la actualización de la tabla del libro de contabilidad es una DELETE de la fila original con 50. El saldo con la operación INSERT correspondiente de una nueva fila con 100 muestra el nuevo saldo de Nick.

Supervisión

La supervisión y la administración de la seguridad constan de dos aspectos:

  • Nivel de Azure
  • Nivel de la base de datos o el servidor

En Azure, puede aplicar herramientas como registros de actividad y la auditoría de control de acceso basado en roles.

En Azure SQL Database, puede configurar la auditoría de Azure SQL y aplicar vistas de administración dinámicas, métricas y alertas para supervisar los eventos relacionados con la seguridad. Por ejemplo, sys.event_log le permitirá realizar un seguimiento del número de conexiones correctas y con errores, así como del número de conexiones bloqueadas por el firewall.

Microsoft recomienda configurar Microsoft Defender for Cloud, incluida la configuración de alertas para Protección avanzada contra amenazas. Estos elementos de seguridad se describen en la sección y el ejercicio siguientes. Por último, puede usar Microsoft Defender for Cloud para supervisar, administrar y recibir recomendaciones en todos los recursos de su espacio de Azure.

Clasificación y detección de datos

El servicio Clasificación y detección de datos conforma un nuevo paradigma de protección de la información en Azure SQL Database. El objetivo de este servicio es proteger los datos y no solo la base de datos. Este paradigma incluye:

  • La detección y recomendaciones para datos potencialmente confidenciales que se deben clasificar
  • La capacidad de agregar etiquetas de forma persistente a las columnas mediante el uso de atributos de metadatos
  • La capacidad de auditar y consultar el acceso a datos confidenciales

Azure SQL ofrece tanto la directiva de SQL Information Protection como la directiva de Microsoft Information Protection en la clasificación de datos y puede elegir cualquiera de estas directivas en función de sus necesidades.

La vista de portal solo está disponible para Azure SQL, pero SQL Server admite una funcionalidad similar a través de un asistente en SQL Server Management Studio.

Para más información, vea Clasificación y detección de datos.

Microsoft Defender for Cloud

Microsoft Defender for Cloud es un paquete unificado de capacidades avanzadas de seguridad de SQL. Proporciona una ubicación única para habilitar y administrar dos funcionalidades principales:

  • Evaluación de vulnerabilidad
  • Advanced Threat Protection

Evaluación de vulnerabilidad

En el nivel más alto, la evaluación de vulnerabilidad de SQL es un servicio de análisis que proporciona visibilidad del estado de seguridad y pasos procesables para solucionar cualquier problema potencial. Cuando configure análisis periódicos, estará habilitando el servicio para que examine las bases de datos cada siete días y busque vulnerabilidades. Después, puede enviar esos informes a los administradores, propietarios de suscripciones o cualquier otra persona que deba recibir notificaciones de los cambios. Para que este servicio funcione, tiene que especificar una cuenta de almacenamiento donde se almacenarán los resultados.

Advanced Threat Protection

Advanced Threat Protection le permite detectar amenazas potenciales y responder a ellas cuando se producen al recibir alertas de seguridad ante actividades anómalas. Advanced Threat Protection aplica las tecnologías avanzadas de supervisión y aprendizaje automático para detectar si se ha producido alguna de las siguientes amenazas:

  • Inyección de código SQL
  • Vulnerabilidad por inyección de código SQL
  • Filtración de datos
  • Acción insegura
  • Intento por fuerza bruta
  • Inicio de sesión anómalo de cliente

En los dos ejercicios siguientes, profundizará en las capacidades y escenarios que Microsoft Defender for Cloud y Azure SQL en general habilitan y protegen.

Seguridad de filas

La característica Seguridad de nivel de fila permite utilizar la pertenencia a un grupo o el contexto de ejecución para controlar el acceso a las filas de una tabla de base de datos.

La Seguridad de nivel de fila (RLS) ayuda a implementar restricciones en el acceso a las filas de datos. Por ejemplo, puede asegurarse de que los trabajadores accedan únicamente a aquellas filas de datos que sean pertinentes para su departamento. Otro ejemplo es restringir el acceso de los clientes solo a los datos pertinentes para la empresa.

La lógica de la restricción de acceso está ubicada en el nivel de base de datos en lugar de estar alejado de los datos en otro nivel de aplicación. El sistema de base de datos aplica las restricciones de acceso cada vez que se intenta acceder a los datos desde cualquier nivel. Esto hace que el sistema de seguridad resulte más sólido y confiable al reducir el área expuesta del sistema de seguridad.

RLS admite dos tipos de predicados de seguridad.

  • Los predicados de filtro filtran en modo silencioso las filas disponibles para leer operaciones (SELECT, UPDATE y DELETE)
  • Los predicados de bloqueo bloquean explícitamente las operaciones de escritura (AFTER INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE) que infringen el predicado

Prueba de conocimientos

1.

¿Cuáles de las siguientes son formas de supervisar los eventos relacionados con la seguridad en Azure SQL Database?