diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index 2523fd80b..7a588745e 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -36,15 +36,41 @@ Ten en cuenta que si se permite cualquier autenticación SQL, se necesita indica - Como siempre, se utiliza una clave gestionada por Azure de forma predeterminada, pero también se podría utilizar una clave de cifrado gestionada por el cliente (CMEK). **Identidades Gestionadas:** -- Es posible asignar MIs gestionadas por el sistema y por el usuario. +- Es posible asignar identidades gestionadas del sistema y del usuario. - Se utilizan para acceder a la clave de cifrado (si se utiliza un CMEK) y otros servicios desde las bases de datos. -- Si se asignan más de un UMI, es posible indicar cuál se utilizará por defecto. -- Es posible configurar una identidad de cliente federada para acceso entre inquilinos. +- Para algunos ejemplos de los servicios de Azure que se pueden acceder desde la base de datos, consulta [esta página de la documentación](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) +- Si se asigna más de una UMI, es posible indicar la predeterminada a utilizar. +- Es posible configurar una identidad de cliente federada para el acceso entre inquilinos. +Algunos comandos para acceder a información dentro de un almacenamiento blob desde una base de datos SQL: +```sql +-- Create a credential for the managed identity +CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential] +WITH IDENTITY = 'Managed Identity'; +GO + +-- Create an external data source pointing to the blob storage to access +CREATE EXTERNAL DATA SOURCE ManagedIdentity +WITH ( +TYPE = BLOB_STORAGE, +LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer', +CREDENTIAL = ManagedIdentityCredential +); +GO + +-- Read a file from ths storage and return it +SELECT * +FROM OPENROWSET( +BULK 'message.txt', +DATA_SOURCE = 'ManagedIdentity', +SINGLE_CLOB +) AS DataFile; +GO +``` **Microsoft Defender:** -- Útil para "mitigar vulnerabilidades potenciales de la base de datos y detectar actividades anómalas". -- Hablaremos sobre Defender en su propia lección (se puede habilitar en varios otros servicios de Azure). +- Útil para “mitigar posibles vulnerabilidades de la base de datos y detectar actividades anómalas” +- Hablaremos sobre Defender en su propia lección (se puede habilitar en varios otros servicios de Azure) **Copias de seguridad:** - La frecuencia de las copias de seguridad se gestiona en las políticas de retención. @@ -56,9 +82,9 @@ Ten en cuenta que si se permite cualquier autenticación SQL, se necesita indica **Azure SQL Database** es una **plataforma de base de datos completamente gestionada como servicio (PaaS)** que proporciona soluciones de bases de datos relacionales escalables y seguras. Está construida sobre las últimas tecnologías de SQL Server y elimina la necesidad de gestión de infraestructura, lo que la convierte en una opción popular para aplicaciones basadas en la nube. -Para crear una base de datos SQL, es necesario indicar el servidor SQL donde se alojará. +Para crear una base de datos SQL es necesario indicar el servidor SQL donde se alojará. -### Características de Seguridad de la Base de Datos SQL +### Características de seguridad de SQL Database - **Siempre Actualizado**: Se ejecuta en la última versión estable de SQL Server y recibe nuevas características y parches automáticamente. - **Características de seguridad heredadas de SQL Server:** @@ -75,25 +101,25 @@ Una base de datos SQL podría ser parte de un **pool elástico**. Los pools elá #### Seguridad a Nivel de Columna (Enmascaramiento) y Seguridad a Nivel de Fila en Azure SQL -El enmascaramiento de datos **dinámico de Azure SQL** es una característica que ayuda a **proteger información sensible ocultándola** de usuarios no autorizados. En lugar de alterar los datos reales, enmascara dinámicamente los datos mostrados, asegurando que detalles sensibles como números de tarjetas de crédito estén ocultos. +El enmascaramiento de datos **dinámico de Azure SQL** es una característica que ayuda a **proteger información sensible ocultándola** de usuarios no autorizados. En lugar de alterar los datos reales, enmascara dinámicamente los datos mostrados, asegurando que detalles sensibles como números de tarjetas de crédito estén oscurecidos. -El **Enmascaramiento de Datos Dinámico** afecta a todos los usuarios excepto a aquellos que están desmascarados (se necesita indicar a estos usuarios) y a los administradores. Tiene la opción de configuración que especifica qué usuarios de SQL están exentos del enmascaramiento de datos dinámico, con **administradores siempre excluidos**. +El **Enmascaramiento de Datos Dinámico** afecta a todos los usuarios excepto a los que están desmascarados (estos usuarios deben ser indicados) y a los administradores. Tiene la opción de configuración que especifica qué usuarios SQL están exentos del enmascaramiento de datos dinámico, con **administradores siempre excluidos**. -La **Seguridad a Nivel de Fila (RLS) de Azure SQL** es una característica que **controla qué filas un usuario puede ver o modificar**, asegurando que cada usuario solo vea los datos relevantes para él. Al crear políticas de seguridad con predicados de filtro o bloqueo, las organizaciones pueden hacer cumplir un acceso detallado a nivel de base de datos. +La **Seguridad a Nivel de Fila (RLS) de Azure SQL** es una característica que **controla qué filas un usuario puede ver o modificar**, asegurando que cada usuario solo vea los datos relevantes para ellos. Al crear políticas de seguridad con predicados de filtro o bloqueo, las organizaciones pueden hacer cumplir un acceso detallado a nivel de base de datos. ### Azure SQL Managed Instance -**Azure SQL Managed Instances** son para despliegues a gran escala, de toda la instancia de SQL Server. Proporciona casi un 100% de compatibilidad con el último motor de base de datos SQL Server en las instalaciones (Edición Empresarial), que proporciona una implementación nativa de red virtual (VNet) que aborda preocupaciones comunes de seguridad, y un modelo de negocio favorable para los clientes de SQL Server en las instalaciones. +**Azure SQL Managed Instances** son para implementaciones a gran escala, de toda la instancia de SQL Server. Proporciona casi un 100% de compatibilidad con el último motor de base de datos SQL Server en las instalaciones (Edición Empresarial), que ofrece una implementación nativa de red virtual (VNet) que aborda preocupaciones comunes de seguridad, y un modelo de negocio favorable para los clientes de SQL Server en las instalaciones. ### Azure SQL Virtual Machines **Azure SQL Virtual Machines** permite **controlar el sistema operativo** y la instancia de SQL Server, ya que se generará una VM en el servicio de VM que ejecuta el servidor SQL. -Cuando se crea una máquina virtual SQL, es posible **seleccionar todas las configuraciones de la VM** (como se muestra en la lección de VM) que alojará el servidor SQL. -- Esto significa que la VM accederá a algunas VNet(s), podría tener **Identidades Gestionadas adjuntas** a ella, podría tener comparticiones de archivos montadas… haciendo que un **pivotar desde SQL** a la VM sea muy interesante. +Cuando se crea una Máquina Virtual SQL, es posible **seleccionar todas las configuraciones de la VM** (como se muestra en la lección de VM) que alojará el servidor SQL. +- Esto significa que la VM accederá a algunas VNet(s), podría tener **Identidades Gestionadas adjuntas** a ella, podría tener recursos compartidos montados… haciendo que un **pivotar desde SQL** a la VM sea muy interesante. - Además, es posible configurar un id de aplicación y un secreto para **permitir que SQL acceda a un vault de claves específico**, que podría contener información sensible. -También es posible configurar cosas como **actualizaciones automáticas de SQL**, **copias de seguridad automáticas**, **autenticación de Entra ID** y la mayoría de las características de los otros servicios de SQL. +También es posible configurar cosas como **actualizaciones automáticas de SQL**, **copias de seguridad automáticas**, **autenticación de Entra ID** y la mayoría de las características de los otros servicios SQL. ## Enumeración @@ -304,7 +330,7 @@ sqlcmd -S .database.windows.net -U -P