Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-sql.

This commit is contained in:
Translator
2026-07-13 14:07:12 +00:00
parent 93f15fca82
commit 9c2def60aa
@@ -4,45 +4,47 @@
## Azure SQL
Azure SQL es una familia de productos gestionados, seguros e inteligentes que utilizan el **motor de base de datos SQL Server en la nube de Azure**. Esto significa que no tienes que preocuparte por la administración física de tus servidores, y puedes concentrarte en gestionar tus datos.
Azure SQL es una familia de productos administrados, seguros e inteligentes que usan el **motor de base de datos SQL Server en la nube de Azure**. Esto significa que no tienes que preocuparte por la administración física de tus servidores, y puedes centrarte en gestionar tus datos.
Azure SQL consta de cuatro ofertas principales:
1. **Azure SQL Server**: Se necesita un servidor para el **despliegue y gestión** de bases de datos SQL Server.
2. **Azure SQL Database**: Este es un **servicio de base de datos completamente gestionado**, que te permite alojar bases de datos individuales en la nube de Azure.
3. **Azure SQL Managed Instance**: Esto es para despliegues a mayor escala, de toda la instancia de SQL Server.
4. **Azure SQL Server en Azure VMs**: Esto es mejor para arquitecturas donde deseas **control sobre el sistema operativo** y la instancia de SQL Server.
1. **Azure SQL Server**: Se necesita un servidor para la **implementación y administración** de bases de datos SQL Server.
2. **Azure SQL Database**: Este es un **servicio de base de datos totalmente administrado**, que te permite alojar bases de datos individuales en la nube de Azure.
3. **Azure SQL Managed Instance**: Esto es para implementaciones a mayor escala, de toda la instancia de SQL Server.
4. **Azure SQL Server on Azure VMs**: Esto es mejor para arquitecturas en las que quieres **control sobre el sistema operativo **y la instancia de SQL Server.
### Características de Seguridad de SQL Server
### SQL Server Security Features
**Acceso a la red:**
**Network access:**
- Punto final público (se puede limitar el acceso a redes específicas).
- Puntos finales privados.
- Public endpoint (can limit access to specific networks).
- Private endpoints.
- También es posible restringir conexiones basadas en nombres de dominio.
- También es posible permitir que los servicios de Azure accedan a él (como usar el editor de consultas en el portal o permitir que una VM de Azure se conecte).
- También es posible permitir que Azure services accedan a él (como usar el Query editor en el portal o permitir que una Azure VM se conecte).
- Si un SQL Server tiene *Allow Azure services and resources to access this server* configurado en "Enabled", Azure creará automáticamente una hidden firewall rule que permite que todo el tráfico de red originado desde Azure se conecte al SQL Server — incluyendo recursos de cualquier tenant.
- Esto significa que si obtienes credenciales válidas de SQL, puedes conectarte al victim Azure SQL Server desde una Azure VM dentro de tu propio tenant controlado por el attacker. [The MS docs explains this](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
**Métodos de Autenticación:**
**Authentication Methods:**
- Autenticación **solo de Microsoft Entra**: Necesitas indicar los principios de Entra que tendrán acceso al servicio.
- Autenticación **tanto de SQL como de Microsoft Entra**: Autenticación SQL tradicional con nombre de usuario y contraseña junto con Microsoft Entra.
- Autenticación **solo de SQL**: Solo permite el acceso a través de usuarios de base de datos.
- Microsoft **Entra-only** authentication: Necesitas indicar los Entra principals que tendrán acceso al service.
- **Both SQL and Microsoft Entra** authentication: Autenticación SQL tradicional con username y password junto con Microsoft Entra.
- **Only SQL** authentication: Solo permitir acceso mediante database users.
Ten en cuenta que si se permite cualquier autenticación SQL, se necesita indicar un usuario administrador (nombre de usuario + contraseña) y si se selecciona la autenticación de Entra ID, también es necesario indicar al menos un principio con acceso de administrador.
Ten en cuenta que si se permite cualquier SQL auth, se necesita indicar un admin user (username + password) y si se selecciona Entra ID auth, también es necesario indicar al menos un principal con admin access.
**Cifrado:**
**Encryption:**
- Se llama “Cifrado de datos transparente” y cifra bases de datos, copias de seguridad y registros en reposo.
- Como siempre, se utiliza una clave gestionada por Azure de forma predeterminada, pero también se podría usar una clave de cifrado gestionada por el cliente (CMEK).
**Identidades Gestionadas:**
- Se llama “Transparent data encryption” y cifra databases, backups y logs at rest.
- Como siempre, por defecto se usa una Azure managed key, pero también podría usarse una customer managed encryption key (CMEK).
**Managed Identities:**
- Es posible asignar identidades gestionadas por el sistema y por el usuario.
- Se utilizan para acceder a la clave de cifrado (si se utiliza un CMEK) y otros servicios desde las bases de datos.
- 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 acceso entre inquilinos.
- Es posible asignar system y user managed MIs.
- Se usa para acceder a la encryption key (si se usa una CMEK) y a otros servicios desde las databases.
- Para algunos ejemplos de los Azure services a los que se puede acceder desde la database, consulta [this page of the docs](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 default one to use.
- Es posible configurar una federated client identity para cross-tenant access.
Algunos comandos para acceder a información dentro de un blob storage desde una base de datos SQL:
Some commands to access info inside a blob storage from a SQL database:
```sql
-- Create a credential for the managed identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
@@ -70,58 +72,59 @@ GO
**Microsoft Defender:**
- Ú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)
- Hablaremos de Defender en su propia lección (se puede habilitar en varios otros servicios de Azure)
**Backups:**
- La frecuencia de las copias de seguridad se gestiona en las políticas de retención.
- La frecuencia de backup se gestiona en las políticas de retención.
**Bases de datos eliminadas:**
- Es posible restaurar bases de datos que han sido eliminadas de copias de seguridad existentes.
**Deleted databases:**
- Es posible restaurar DBs que han sido borradas desde backups existentes.
## Azure SQL Database
**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.
**Azure SQL Database** es una **plataforma de base de datos completamente gestionada como servicio (PaaS)** que proporciona soluciones de base de datos relacional escalables y seguras. Está basada en las últimas tecnologías de SQL Server y elimina la necesidad de gestionar infraestructura, lo que la convierte en una opción popular para aplicaciones basadas en cloud.
Para crear una base de datos SQL es necesario indicar el servidor SQL donde se alojará.
Para crear una SQL database es necesario indicar el SQL server donde se alojará.
### Características de Seguridad de la Base de Datos SQL
### SQL Database Security Features
- **Siempre Actualizado**: Funciona 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:**
- Autenticación (SQL y/o Entra ID)
- Identidades gestionadas asignadas
- Restricciones de red
- Cifrado
- Copias de seguridad
- **Always Up-to-Date**: Se ejecuta sobre la última versión estable de SQL Server y recibe nuevas features y patches automáticamente.
- **Inherited SQL Server security features:**
- Authentication (SQL and/or Entra ID)
- Assigned Managed Identities
- Network restrictions
- Encryption
- Backups
-
- **Redundancia de datos:** Las opciones son local, zona, Geo o redundante Geo-Zona.
- **Libro mayor:** Verifica criptográficamente la integridad de los datos, asegurando que cualquier manipulación sea detectada. Útil para organizaciones financieras, médicas y cualquier organización que gestione datos sensibles.
- **Data redundancy:** Las opciones son local, zone, Geo o Geo-Zone redundant.
- **Ledger:** Verifica criptográficamente la integridad de los datos, asegurando que cualquier manipulación sea detectada. Útil para organizaciones financieras, médicas y cualquier organización que gestione datos sensibles.
Una base de datos SQL podría ser parte de un **pool elástico**. Los pools elásticos son una solución rentable para gestionar múltiples bases de datos compartiendo recursos de computación (eDTUs) y almacenamiento configurables entre ellas, con precios basados únicamente en los recursos asignados en lugar del número de bases de datos.
#### Seguridad a Nivel de Columna (Enmascaramiento) y Seguridad a Nivel de Fila en Azure SQL
Una SQL database podría formar parte de un **elastic Pool**. Los elastic pools son una solución rentable para gestionar múltiples bases de datos compartiendo recursos configurables de compute (eDTUs) y storage entre ellas, con precios basados únicamente en los recursos asignados y no en el número de bases de datos.
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.
#### Azure SQL Column Level Security (Masking) & Row Level Security
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**.
**Azure SQL's dynamic** data masking es una feature que ayuda a **proteger información sensible ocultándola** a usuarios no autorizados. En lugar de alterar los datos reales, enmascara dinámicamente los datos mostrados, asegurando que detalles sensibles como números de tarjeta de crédito queden ocultos.
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.
**Dynamic Data Masking** afecta a todos los usuarios excepto a los que están unmasked (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 dynamic data masking, con **administrators siempre excluidos**.
### Instancia Administrada de Azure SQL
**Azure SQL Row Level Security (RLS)** es una feature que **controla qué filas puede ver o modificar un usuario**, asegurando que cada usuario solo vea los datos relevantes para él. Mediante la creación de security policies con filter o block predicates, las organizaciones pueden aplicar acceso granular a nivel de database.
**Las Instancias Administradas de Azure SQL** son para implementaciones de mayor 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 de seguridad comunes, y un modelo de negocio favorable para los clientes de SQL Server en las instalaciones.
### Azure SQL Managed Instance
### Máquinas Virtuales de Azure SQL
**Azure SQL Managed Instances** son para despliegues a mayor escala, para toda la instancia de SQL Server. Proporciona una compatibilidad cercana al 100% con la última SQL Server on-premises (Enterprise Edition) Database Engine, lo que ofrece una implementación nativa en virtual network (VNet) que aborda preocupaciones comunes de seguridad, y un modelo de negocio favorable para clientes de SQL Server on-premises.
**Las Máquinas Virtuales de Azure SQL** permiten **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.
### Azure SQL Virtual Machines
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 el SQL** a la VM sea muy interesante.
- Además, es posible configurar un id de aplicación y un secreto para **permitir que el SQL acceda a un vault de claves específico**, que podría contener información sensible.
**Azure SQL Virtual Machines** permite **controlar el operating system** y la instancia de SQL Server, ya que se creará una VM en el servicio de VM ejecutando el SQL server.
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.
Cuando se crea una SQL Virtual Machine es posible **seleccionar todos los settings de la VM** (como se muestra en la lección de VM) que alojará el SQL server.
- Esto significa que la VM accederá a alguna(s) VNet(s), podría tener **Managed Identities attached** a ella, podría tener file shares montados… lo que hace que el **pivoting from the SQL** a la VM sea súper interesante.
- Además, es posible configurar un app id y secret para **permitir que el SQL acceda a un specific key vault**, que podría contener información sensible.
## Enumeración
También es posible configurar cosas como **automatic SQL updates**, **automatic backups**, **Entra ID authentication** y la mayoría de las features de los otros servicios de SQL.
## Enumeration
{{#tabs}}
{{#tab name="az cli"}}
@@ -258,7 +261,7 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
Además, si deseas enumerar el Dynamic Data Masking y las políticas de Row Level dentro de la base de datos, puedes consultar:
Además, si quieres enumerar las políticas de Dynamic Data Masking y Row Level dentro de la base de datos, puedes consultar:
```sql
--Enumerates the masked columns
SELECT
@@ -285,7 +288,7 @@ ON sp.object_id = sp2.object_id;
```
### Conectar y ejecutar consultas SQL
Podrías encontrar una cadena de conexión (que contiene credenciales) del ejemplo [enumerando un Az WebApp](az-app-services.md):
Podrías encontrar una cadena de conexión (que contiene credenciales) a partir de un ejemplo de [enumerating an Az WebApp](az-app-services.md):
```bash
function invoke-sql{
param($query)
@@ -315,19 +318,19 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
- [https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview?view=azuresql)
- [https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/sql-server-on-azure-vm-iaas-what-is-overview?view=azuresql)
## Escalación de Privilegios
## Escalada de Privilegios
{{#ref}}
../az-privilege-escalation/az-sql-privesc.md
{{#endref}}
## Post Explotación
## Post Exploitation
{{#ref}}
../az-post-exploitation/az-sql-post-exploitation.md
{{#endref}}
### Persistencia
### Persistence
{{#ref}}
../az-persistence/az-sql-persistence.md