Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-20 00:39:31 +00:00
parent 998be89c35
commit fa1e8fddf6
9 changed files with 240 additions and 140 deletions

View File

@@ -31,13 +31,23 @@ az mysql flexible-server update \
--name <server_name> \
--admin-password <password_to_update>
```
Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado, para habilitarlo:
Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado. Para habilitarlo:
```bash
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Con estos permisos puedes restaurar un servidor MySQL desde una copia de seguridad:
```bash
az mysql flexible-server restore \
--resource-group <resource_group_name> \
--name <restore_server_name> \
--source-server <server_name> \
--yes
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
Con este permiso, puedes configurar administradores de Azure Active Directory (AD) para un Servidor Flexible de MySQL. Esto se puede explotar configurando a uno mismo o a otra cuenta como el administrador de AD, otorgando control administrativo total sobre el servidor MySQL. Es importante que el servidor flexible tenga identidades administradas asignadas a un usuario para poder utilizarlo.
Con este permiso, puedes configurar administradores de Azure Active Directory (AD) para un Servidor Flexible de MySQL. Esto se puede explotar configurando a uno mismo u otra cuenta como el administrador de AD, otorgando control administrativo total sobre el servidor MySQL. Es importante que el servidor flexible tenga identidades administradas asignadas a un usuario para usar.
```bash
az mysql flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -31,13 +31,59 @@ az postgres flexible-server update \
--name <server_name> \
--admin-password <password_to_update>
```
Además, es necesario tener el acceso público habilitado si deseas acceder desde un punto final no privado. Para habilitarlo:
Además, con los permisos puedes habilitar la identidad asignada, y operar con la identidad administrada adjunta al servidor. Aquí puedes encontrar todas las extensiones que el servidor flexible de Azure PostgreSQL soporta [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Para poder usar estas extensiones, algunos parámetros del servidor (azure.extensions) necesitan ser cambiados. Por ejemplo, aquí con una identidad administrada que puede acceder a Azure Storage:
Primero cambiamos los parámetros y nos aseguramos de que la identidad asignada esté habilitada:
```bash
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
```
```sql
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
```
Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado. Para habilitarlo:
```bash
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Con estos permisos puedes restaurar un servidor desde una copia de seguridad con:
```bash
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
Con este permiso, puedes configurar administradores de Azure Active Directory (AD) para un Servidor Flexible de PostgreSQL. Esto se puede explotar configurando a uno mismo o a otra cuenta como el administrador de AD, otorgando control administrativo total sobre el servidor de PostgreSQL. La actualización de un principal existente aún no es compatible, por lo que si hay uno creado, debes eliminarlo primero.
Con este permiso, puedes configurar administradores de Azure Active Directory (AD) para un Servidor Flexible de PostgreSQL. Esto se puede explotar configurando a uno mismo u otra cuenta como el administrador de AD, otorgando control administrativo total sobre el servidor de PostgreSQL. La actualización de un principal existente aún no es compatible, por lo que si hay uno creado, debes eliminarlo primero.
Es importante que el servidor flexible tenga identidades administradas asignadas a un usuario para usar.
```bash

View File

@@ -44,6 +44,11 @@ az sql server update \
```
```sql
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
@@ -62,7 +67,7 @@ GO
```
### `Microsoft.Sql/servers/firewallRules/write`
Un atacante puede manipular las reglas del firewall en los servidores de Azure SQL para permitir el acceso no autorizado. Esto puede ser explotado para abrir el servidor a direcciones IP específicas o rangos completos de IP, incluidas IPs públicas, lo que permite el acceso a actores maliciosos. Esta actividad de post-explotación puede ser utilizada para eludir los controles de seguridad de red existentes, establecer persistencia o facilitar el movimiento lateral dentro del entorno al exponer recursos sensibles.
Un atacante puede manipular las reglas del firewall en los servidores de Azure SQL para permitir el acceso no autorizado. Esto puede ser explotado para abrir el servidor a direcciones IP específicas o rangos de IP completos, incluidas las IP públicas, lo que permite el acceso a actores maliciosos. Esta actividad de post-explotación puede ser utilizada para eludir los controles de seguridad de red existentes, establecer persistencia o facilitar el movimiento lateral dentro del entorno al exponer recursos sensibles.
```bash
# Create Firewall Rule
az sql server firewall-rule create \
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>
```
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Modifica (o desactiva) las políticas de enmascaramiento de datos en tus bases de datos SQL.
```bash
az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'
```
### Remove Row Level Security
Si inicias sesión como administrador, puedes eliminar las políticas del propio administrador y de otros usuarios.
```sql
DROP SECURITY POLICY [Name_of_policy];
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,13 +4,15 @@
## Azure CosmosDB
**Azure Cosmos DB** es una base de datos **NoSQL, relacional y vectorial completamente gestionada** que ofrece tiempos de respuesta de un solo dígito en milisegundos, escalabilidad automática y disponibilidad respaldada por SLA con seguridad de nivel empresarial. Permite un desarrollo de aplicaciones más rápido a través de la distribución de datos multi-región lista para usar, APIs de código abierto, SDKs para lenguajes populares y características de bases de datos de IA como soporte de vectores integrado e integración fluida con Azure AI.
**Azure Cosmos DB** es una **base de datos NoSQL, relacional y vectorial completamente gestionada** que ofrece tiempos de respuesta de un solo dígito en milisegundos, escalabilidad automática y disponibilidad respaldada por SLA con seguridad de nivel empresarial. Permite un desarrollo de aplicaciones más rápido a través de la distribución de datos multi-región lista para usar, APIs de código abierto, SDKs para lenguajes populares y características de bases de datos de IA como soporte de vectores integrado e integración fluida con Azure AI.
Azure Cosmos DB proporciona múltiples APIs de base de datos para modelar datos del mundo real utilizando documentos, modelos de datos relacionales, clave-valor, gráfico y de familia de columnas, siendo estas APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin y Table.
Un aspecto clave de CosmosDB es la Cuenta de Azure Cosmos. **Cuenta de Azure Cosmos**, actúa como el punto de entrada a las bases de datos. La cuenta determina configuraciones clave como la distribución global, los niveles de consistencia y la API específica que se utilizará, como NoSQL. A través de la cuenta, puedes configurar la replicación global para garantizar que los datos estén disponibles en múltiples regiones para un acceso de baja latencia. Además, puedes elegir un nivel de consistencia que equilibre el rendimiento y la precisión de los datos, con opciones que van desde Consistencia Fuerte hasta Consistencia Eventual.
Un aspecto clave de CosmosDB es la Cuenta de Azure Cosmos. **La Cuenta de Azure Cosmos** actúa como el punto de entrada a las bases de datos. La cuenta determina configuraciones clave como la distribución global, los niveles de consistencia y la API específica que se utilizará, como NoSQL. A través de la cuenta, puedes configurar la replicación global para garantizar que los datos estén disponibles en múltiples regiones para un acceso de baja latencia. Además, puedes elegir un nivel de consistencia que equilibre el rendimiento y la precisión de los datos, con opciones que van desde la consistencia Fuerte hasta la consistencia Eventual.
### NoSQL (sql)
Azure Cosmos DB admite **identidades asignadas por el usuario** e **identidades gestionadas asignadas por el sistema** que se crean automáticamente y están vinculadas al ciclo de vida del recurso, lo que permite una autenticación segura basada en tokens al conectarse a otros servicios, siempre que esos servicios tengan las asignaciones de rol apropiadas. Sin embargo, Cosmos DB no tiene un mecanismo incorporado para consultar directamente fuentes de datos externas como Azure Blob Storage. A diferencia de las características de tablas externas de SQL Server, Cosmos DB requiere que los datos se ingesten en sus contenedores utilizando herramientas externas como Azure Data Factory, la Herramienta de Migración de Datos o scripts personalizados antes de que puedan ser consultados con sus capacidades de consulta nativas.
### NoSQL
La API NoSQL de Azure Cosmos DB es una API basada en documentos que utiliza JSON como su formato de datos. Proporciona una sintaxis de consulta similar a SQL para consultar objetos JSON, lo que la hace adecuada para trabajar con datos estructurados y semi-estructurados. El punto final del servicio es:
```bash
https://<Account-Name>.documents.azure.com:443/
@@ -21,6 +23,12 @@ Dentro de una cuenta, puedes crear una o más bases de datos, que sirven como ag
#### Contenedores
La unidad central de almacenamiento de datos es el contenedor, que contiene documentos JSON y se indexa automáticamente para consultas eficientes. Los contenedores son escalables de manera elástica y se distribuyen a través de particiones, que son determinadas por una clave de partición definida por el usuario. La clave de partición es crítica para garantizar un rendimiento óptimo y una distribución uniforme de los datos. Por ejemplo, un contenedor podría almacenar datos de clientes, con "customerId" como la clave de partición.
#### Características clave
**Distribución global**: Habilitar o deshabilitar la Geo-Redundancia para la replicación entre regiones y Escrituras en múltiples regiones para mejorar la disponibilidad.
**Redes y seguridad**: entre puntos finales públicos (todos/seleccionar redes) o privados para conectividad. Conexiones seguras con cifrado TLS 1.2. Soporta CORS (Intercambio de Recursos de Origen Cruzado) para acceso controlado a recursos.
**Copia de seguridad y recuperación**: de políticas de copia de seguridad Periódicas, Continuas (7 días) o Continuas (30 días) con intervalos y retención configurables.
**Cifrado de datos**: Claves gestionadas por el servicio por defecto o claves gestionadas por el cliente (CMK) para cifrado (la selección de CMK es irreversible).
#### Enumeración
{{#tabs }}
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
## List the NoSQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List all SQL role assignments under an Azure Cosmos DB
## List all NoSQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
## List all NoSQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL stored procedures under an Azure Cosmos DB
## List the NoSQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
@@ -185,6 +193,17 @@ En MongoDB, puedes crear una o más bases de datos dentro de una instancia. Cada
#### Colecciones
La unidad central de almacenamiento de datos en MongoDB es la colección, que contiene documentos y está diseñada para consultas eficientes y un diseño de esquema flexible. Las colecciones son escalables de manera elástica y pueden soportar operaciones de alto rendimiento a través de múltiples nodos en una configuración distribuida.
#### Características clave del tipo de unidad de solicitud (RU)
**Distribución global**: Habilitar o deshabilitar la geo-redundancia para la replicación entre regiones y escrituras en múltiples regiones para mejorar la disponibilidad.
**Redes y seguridad**: entre puntos finales públicos (todos/seleccionar redes) o privados para conectividad. Conexiones seguras con cifrado TLS 1.2. Soporta CORS (Intercambio de Recursos de Origen Cruzado) para acceso controlado a recursos.
**Copia de seguridad y recuperación**: de políticas de copia de seguridad periódicas, continuas (7 días, gratis) o continuas (30 días, de pago) con intervalos y retención configurables.
**Cifrado de datos**: Claves gestionadas por el servicio por defecto o claves gestionadas por el cliente (CMK) para cifrado (la selección de CMK es irreversible).
#### Características clave del tipo de clúster vCore
**Distribución global**: Habilitar una réplica de lectura en otra región de Azure para alta disponibilidad y soporte de conmutación por error. Configurar el nombre de la réplica, la región y el almacenamiento por fragmento.
**Redes y seguridad**: Soporta acceso público con IPs públicas asignadas y acceso privado. Restringir conexiones utilizando reglas de firewall; por defecto, no se permiten IPs públicas.
**Conexiones cifradas**: Aplica cifrado TLS para la transmisión segura de datos.
#### Enumeración
{{#tabs }}

View File

@@ -8,22 +8,27 @@ Azure Logic Apps es un servicio basado en la nube proporcionado por Microsoft Az
Logic Apps proporciona un diseñador visual para crear flujos de trabajo con una **amplia gama de conectores preconstruidos**, lo que facilita la conexión e interacción con varios servicios, como Office 365, Dynamics CRM, Salesforce y muchos otros. También puedes crear conectores personalizados para tus necesidades específicas.
Al crear una Logic App, debes crear o vincular una cuenta de almacenamiento externa que almacene el estado del flujo de trabajo, el historial de ejecución y los artefactos. Este almacenamiento se puede configurar con ajustes de diagnóstico para monitoreo y se puede asegurar con restricciones de acceso a la red o integrarse en una red virtual para controlar el tráfico entrante y saliente.
### Identidades Administradas
Logic Apps tiene una **identidad administrada asignada por el sistema** vinculada a su ciclo de vida. Cuando está habilitada, recibe un ID de Objeto (principal) único que se puede usar con Azure RBAC para otorgar los permisos necesarios para acceder a otros servicios de Azure de manera segura. Esto elimina la necesidad de almacenar credenciales en el código porque la identidad se autentica a través de Microsoft Entra ID. Además, también puedes usar **identidades administradas asignadas por el usuario**, que se pueden compartir entre múltiples recursos. Estas identidades permiten que los flujos de trabajo y Logic Apps interactúen de manera segura con sistemas externos, asegurando que los controles de acceso y permisos necesarios se gestionen de manera centralizada a través del marco de seguridad de Azure.
### Ejemplos
- **Automatización de Pipelines de Datos**: Logic Apps puede automatizar **procesos de transferencia y transformación de datos** en combinación con Azure Data Factory. Esto es útil para crear pipelines de datos escalables y confiables que mueven y transforman datos entre varios almacenes de datos, como Azure SQL Database y Azure Blob Storage, ayudando en operaciones de análisis e inteligencia empresarial.
- **Integración con Azure Functions**: Logic Apps puede trabajar junto a Azure Functions para desarrollar **aplicaciones sofisticadas impulsadas por eventos que escalan según sea necesario** e integran sin problemas con otros servicios de Azure. Un caso de uso de ejemplo es usar un Logic App para activar una Azure Function en respuesta a ciertos eventos, como cambios en una cuenta de Azure Storage, permitiendo un procesamiento de datos dinámico.
- **Integración con Azure Functions**: Logic Apps puede trabajar junto con Azure Functions para desarrollar **aplicaciones sofisticadas impulsadas por eventos que escalan según sea necesario** e integrarse sin problemas con otros servicios de Azure. Un caso de uso de ejemplo es usar una Logic App para activar una Azure Function en respuesta a ciertos eventos, como cambios en una cuenta de almacenamiento de Azure, permitiendo un procesamiento de datos dinámico.
### Visualizar un LogicAPP
### Visualizar una LogicAPP
Es posible ver un LogicApp con gráficos:
Es posible ver una LogicApp con gráficos:
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
o verificar el código en la sección de "**vista de código de la aplicación lógica**".
o verificar el código en la sección de "**vista de código de la Logic app**".
### Protección SSRF
Incluso si encuentras la **Aplicación Lógica vulnerable a SSRF**, no podrás acceder a las credenciales de los metadatos ya que Logic Apps no lo permite.
Incluso si encuentras la **Logic App vulnerable a SSRF**, no podrás acceder a las credenciales desde los metadatos ya que Logic Apps no lo permite.
Por ejemplo, algo como esto no devolverá el token:
```bash
@@ -41,6 +46,10 @@ Hay varias opciones de alojamiento:
- **App Service Environment V3** recursos de computación dedicados con aislamiento completo y escalabilidad. También se integra con VNET para redes y utiliza un modelo de precios basado en instancias de App Service dentro del entorno. Esto es ideal para aplicaciones a escala empresarial que necesitan un alto aislamiento.
- **Híbrido** diseñado para procesamiento local y soporte multi-nube. Permite recursos de computación gestionados por el cliente con acceso a la red local y utiliza Kubernetes Event-Driven Autoscaling (KEDA).
### Flujos de trabajo
Los flujos de trabajo en Azure Logic Apps son los procesos automatizados centrales que orquestan acciones a través de varios servicios. Un flujo de trabajo comienza con un desencadenador—un evento o programación—y luego ejecuta una serie de acciones, como llamar a APIs, procesar datos o interactuar con otros servicios de Azure. Los flujos de trabajo se pueden definir visualmente utilizando un diseñador o a través de código (definiciones JSON) y se gestionan a través de comandos como az logic workflow create, az logic workflow show y az logic workflow update. También admiten la gestión de identidades (a través del subgrupo de identidad) para gestionar de manera segura los permisos y las integraciones con recursos externos.
### Enumeración
{{#tabs }}

View File

@@ -3,23 +3,23 @@
{{#include ../../../banners/hacktricks-training.md}}
## Azure MySQL
Azure Database for MySQL es un servicio de base de datos relacional completamente administrado basado en la Edición Comunitaria de MySQL, diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Tiene dos modelos de implementación diferentes:
Azure Database for MySQL es un servicio de base de datos relacional completamente administrado basado en la edición comunitaria de MySQL, diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Tiene dos modelos de implementación diferentes:
* **Servidor Único** (está en la ruta de retiro):
* **Servidor único** (está en la ruta de retiro):
- Optimizado para implementaciones de MySQL rentables y fáciles de administrar.
- Las características incluyen copias de seguridad automatizadas, alta disponibilidad y monitoreo básico.
- Ideal para aplicaciones con cargas de trabajo predecibles.
* **Servidor Flexible**:
* **Servidor flexible**:
- Proporciona más control sobre la gestión y configuración de la base de datos.
- Soporta alta disponibilidad (en la misma zona y redundante entre zonas).
- Las características incluyen escalado elástico, gestión de parches y optimización de cargas de trabajo.
- Presenta escalado elástico, gestión de parches y optimización de cargas de trabajo.
- Ofrece funcionalidad de detener/iniciar para ahorrar costos.
### Características Clave
* **Gestión del Servidor**: La función **ad-admin** permite gestionar administradores de Azure Active Directory (AAD) para servidores MySQL, proporcionando control sobre el acceso administrativo a través de credenciales de AAD, mientras que la función **identity** permite la asignación y gestión de Identidades Administradas de Azure, ofreciendo autenticación segura sin credenciales para acceder a recursos de Azure.
* **Gestión del Ciclo de Vida**: opciones para iniciar o detener un servidor, eliminar una instancia de servidor flexible, reiniciar un servidor para aplicar rápidamente cambios de configuración y esperar para asegurar que un servidor cumpla con condiciones específicas antes de proceder con scripts de automatización.
* **Seguridad y Redes**: puede gestionar reglas de firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario.
* **Protección de Datos y Copia de Seguridad**: incluye opciones para gestionar copias de seguridad de servidores flexibles para recuperación de datos, realizar restauraciones geográficas para recuperar un servidor en una región diferente, exportar copias de seguridad de servidores para uso externo (en Vista Previa) y restaurar un servidor desde una copia de seguridad a un punto específico en el tiempo.
### Características clave
* **Gestión del servidor**: La función **ad-admin** permite gestionar administradores de Azure Entra ID para servidores MySQL, proporcionando control sobre el acceso administrativo a través de credenciales de Entra ID. Mysql soporta Identidades Administradas por el Usuario, utilizadas para autenticar sin necesidad de credenciales, y pueden ser utilizadas por otros servicios.
* **Gestión del ciclo de vida**: opciones para iniciar o detener un servidor, eliminar una instancia de servidor flexible, reiniciar un servidor para aplicar rápidamente cambios de configuración, y esperar para asegurar que un servidor cumpla con condiciones específicas antes de proceder con scripts de automatización.
* **Seguridad y redes**: Asegura tu servidor restringiendo conexiones a través de reglas de firewall que solo permiten direcciones IP públicas específicas, o utilizando puntos finales privados que integran tu servidor en una red virtual. Todas las conexiones están protegidas con cifrado TLS 1.2. Las bases de datos, copias de seguridad y registros están cifrados en reposo por defecto utilizando claves gestionadas por el servicio o claves personalizadas.
* **Protección de datos y copias de seguridad**: incluye opciones para gestionar copias de seguridad de servidores flexibles para recuperación de datos, realizar restauraciones geográficas para recuperar un servidor en una región diferente, exportar copias de seguridad de servidores para uso externo (en vista previa), y restaurar un servidor desde una copia de seguridad a un punto específico en el tiempo.
### Enumeración
@@ -149,6 +149,4 @@ az mysql flexible-server deploy run \
* Buscar una forma de acceder con mysql flexible-server ad-admin para verificar que es un método de escalación de privilegios
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,9 +1,9 @@
# Az - Bases de Datos PostgreSQL
# Az - Bases de datos PostgreSQL
{{#include ../../../banners/hacktricks-training.md}}
## Azure PostgreSQL
**Azure Database for PostgreSQL** es un servicio de **base de datos relacional completamente gestionado basado en PostgreSQL** Community Edition. Está diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Similar a Azure MySQL, PostgreSQL ofrece dos modelos de implementación:
**Azure Database for PostgreSQL** es un servicio de **base de datos relacional completamente gestionado basado en la edición comunitaria de PostgreSQL**. Está diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Similar a Azure MySQL, PostgreSQL ofrece dos modelos de implementación:
* **Servidor Único** (en la ruta de retiro):
- Optimizado para implementaciones de PostgreSQL sencillas y rentables.
@@ -23,6 +23,7 @@
* **Copias de Seguridad Automáticas**: Copias de seguridad diarias integradas con períodos de retención configurables de hasta 35 días.
* **Acceso Basado en Roles**: Controla los permisos de usuario y el acceso administrativo a través de Azure Active Directory.
* **Seguridad y Redes**: puede gestionar las reglas del firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario.
* **Identidades Gestionadas**: permiten que su servidor se autentique de forma segura con otros servicios de Azure sin almacenar credenciales. Permite acceder a otros servicios que tendrían una identidad gestionada asignada por el sistema y ser accedidos por otros servicios con otras identidades que son identidades gestionadas asignadas por el usuario.
### Enumeración

View File

@@ -8,144 +8,92 @@ Azure SQL es una familia de productos gestionados, seguros e inteligentes que ut
Azure SQL consta de cuatro ofertas principales:
1. **Azure SQL Server**: Azure SQL Server es un servicio de base de datos relacional gestionado que simplifica el despliegue y la gestión de bases de datos SQL Server, con características de seguridad y rendimiento integradas.
2. **Azure SQL Database**: Este es un **servicio de base de datos totalmente gestionado**, que te permite alojar bases de datos individuales en la nube de Azure. Ofrece inteligencia incorporada que aprende tus patrones únicos de base de datos y proporciona recomendaciones personalizadas y ajuste automático.
3. **Azure SQL Managed Instance**: Esto es para despliegues a gran escala, de toda la instancia de SQL Server. Proporciona casi un 100% de compatibilidad con el 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.
4. **Azure SQL Server en Azure VMs**: Esto es Infraestructura como Servicio (IaaS) y es mejor para migraciones donde deseas **control sobre el sistema operativo y la instancia de SQL Server**, como si fuera un servidor que se ejecuta en las instalaciones.
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 gran 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.
### Azure SQL Server
### Características de Seguridad de SQL Server
Azure SQL Server es un sistema de gestión de bases de datos relacionales (RDBMS) que utiliza Transact-SQL para operaciones de datos y está diseñado para manejar sistemas a nivel empresarial. Ofrece características robustas para rendimiento, seguridad, escalabilidad e integración con varias aplicaciones de Microsoft. Las bases de datos de Azure SQL dependen de este servidor, ya que están construidas sobre estos servidores y es el punto de entrada para que los usuarios accedan a las bases de datos.
**Acceso a la red:**
#### Red
- Punto final público (se puede limitar el acceso a redes específicas).
- Puntos finales privados.
- 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).
**Conectividad de Red**: Elige si habilitar el acceso a través de un punto final público o un punto final privado. Si seleccionas Sin acceso, no se crean puntos finales hasta que se configure manualmente:
- Sin acceso: No se configuran puntos finales, bloqueando conexiones entrantes hasta que se configuren manualmente.
- Punto final público: Permite conexiones directas a través de Internet público, sujeto a reglas de firewall y otras configuraciones de seguridad.
- Punto final privado: Restringe la conectividad a una red privada.
**Métodos de Autenticación:**
**Política de Conexión**: Define cómo los clientes se comunican con el servidor de base de datos SQL:
- Predeterminado: Utiliza una política de redirección para todas las conexiones de clientes desde dentro de Azure (excepto aquellas que utilizan Puntos Finales Privados) y una política de proxy para conexiones desde fuera de Azure.
- Proxy: Rutea todas las conexiones de clientes a través de la puerta de enlace de Azure SQL Database.
- Redirigir: Los clientes se conectan directamente al nodo que aloja la base de datos.
- 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.
#### Métodos de Autenticación
Azure SQL admite varios métodos de autenticación para asegurar el acceso a la base de datos:
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.
- **Autenticación solo de Microsoft Entra**: Utiliza Microsoft Entra (anteriormente Azure AD) para la gestión de identidad centralizada y el inicio de sesión único.
- **Autenticación tanto de SQL como de Microsoft Entra**: Te permite usar la autenticación SQL tradicional junto con Microsoft Entra.
- **Autenticación SQL**: Se basa únicamente en nombres de usuario y contraseñas de SQL Server.
**Cifrado:**
#### Características de Seguridad
- 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:**
Los servidores SQL tienen **Identidades Gestionadas**. Las identidades gestionadas permiten que tu servidor se autentique de forma segura con otros servicios de Azure sin almacenar credenciales. Permite acceder a otros servicios que serían identidad gestionada asignada por el sistema y ser accedidos por otros servicios con otras identidades que son identidad gestionada asignada por el usuario. Algunos de los servicios a los que SQL puede acceder son Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB o Cosmos DB API para MongoDB, ODBC genérico, Operaciones en bloque y almacenamiento de objetos compatible con S3.
- Es posible asignar MIs gestionadas por el sistema y por el usuario.
- Se utilizan para acceder a la clave de cifrado (si se usa un CMEK) y otros servicios desde las bases de datos.
- Si se asignan más de un UMI, es posible indicar cuál usar como predeterminado.
- Es posible configurar una identidad de cliente federada para acceso entre inquilinos.
Otras características de seguridad que tiene el servidor SQL son:
**Microsoft Defender:**
- **Reglas de Firewall**: Las reglas de firewall controlan el acceso a tu servidor restringiendo o permitiendo el tráfico. Esta es una característica de las bases de datos en sí también.
- **Cifrado de Datos Transparente (TDE)**: TDE cifra tus bases de datos, copias de seguridad y registros en reposo para proteger tus datos incluso si el almacenamiento se ve comprometido. Se puede hacer con una clave gestionada por el servicio o una clave gestionada por el cliente.
- **Microsoft Defender para SQL**: Microsoft Defender para SQL se puede habilitar ofreciendo evaluaciones de vulnerabilidad y protección avanzada contra amenazas para un servidor.
- Ú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).
#### Modelos de Despliegue
**Copias de seguridad:**
- La frecuencia de las copias de seguridad se gestiona en las políticas de retención.
Azure SQL Database admite opciones de despliegue flexibles para satisfacer diversas necesidades:
**Bases de datos eliminadas:**
- Es posible restaurar bases de datos que han sido eliminadas de copias de seguridad existentes.
- **Base de Datos Única**:
- Una base de datos totalmente aislada con sus propios recursos dedicados.
- Ideal para microservicios o aplicaciones que requieren una única fuente de datos.
- **Grupo Elástico**:
- Permite que múltiples bases de datos compartan recursos dentro de un grupo.
- Eficiente en costos para aplicaciones con patrones de uso fluctuantes en múltiples bases de datos.
## Azure SQL Database
### 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 totalmente gestionada como servicio (PaaS)** que proporciona soluciones de base de datos relacional 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á.
#### Características Clave
### Características de Seguridad de la Base de Datos SQL
- **Siempre Actualizado**: Se ejecuta en la última versión estable de SQL Server y recibe nuevas características y parches automáticamente.
- **Capacidades de PaaS**: Alta disponibilidad, copias de seguridad y actualizaciones integradas.
- **Flexibilidad de Datos**: Admite datos relacionales y no relacionales (por ejemplo, gráficos, JSON, espaciales y XML).
- **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
-
- **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.
#### Red
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.
**Conectividad de Red**: Elige si habilitar el acceso a través de un punto final público o un punto final privado. Si seleccionas Sin acceso, no se crean puntos finales hasta que se configure manualmente:
- Sin acceso: No se configuran puntos finales, bloqueando conexiones entrantes hasta que se configuren manualmente.
- Punto final público: Permite conexiones directas a través de Internet público, sujeto a reglas de firewall y otras configuraciones de seguridad.
- Punto final privado: Restringe la conectividad a una red privada.
#### Seguridad a Nivel de Columna (Enmascaramiento) y Seguridad a Nivel de Fila en Azure SQL
**Política de Conexión**: Define cómo los clientes se comunican con el servidor de base de datos SQL:
- Predeterminado: Utiliza una política de redirección para todas las conexiones de clientes desde dentro de Azure (excepto aquellas que utilizan Puntos Finales Privados) y una política de proxy para conexiones desde fuera de Azure.
- Proxy: Rutea todas las conexiones de clientes a través de la puerta de enlace de Azure SQL Database.
- Redirigir: Los clientes se conectan directamente al nodo que aloja la base 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.
#### Características de Seguridad
El **Enmascaramiento de Datos Dinámico** afecta a todos los usuarios excepto a los 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**.
- **Microsoft Defender para SQL**: se puede habilitar ofreciendo evaluaciones de vulnerabilidad y protección avanzada contra amenazas.
- **Libro Mayor**: verifica criptográficamente la integridad de los datos, asegurando que cualquier manipulación sea detectada.
- **Identidad del Servidor**: utiliza identidades gestionadas asignadas por el sistema y por el usuario para habilitar el acceso centralizado.
- **Gestión de Claves de Cifrado de Datos Transparentes**: cifra bases de datos, copias de seguridad y registros en reposo sin requerir cambios en la aplicación. El cifrado se puede habilitar en cada base de datos, y si se configura a nivel de base de datos, estas configuraciones anulan la configuración a nivel de servidor.
- **Siempre Cifrado**: es un conjunto de características avanzadas de protección de datos que separa la propiedad de los datos de la gestión de los datos. Esto asegura que los administradores u operadores con altos privilegios no puedan acceder a datos sensibles.
#### Modelos de Compra / Niveles de Servicio
- **Basado en vCore**: Elige computación, memoria y almacenamiento de forma independiente. Para Propósito General, Crítico para Negocios (con alta resiliencia y rendimiento para aplicaciones OLTP), y escala hasta 128 TB de almacenamiento.
- **Basado en DTU**: Agrupa computación, memoria y E/S en niveles fijos. Recursos equilibrados para tareas comunes.
- Estándar: Recursos equilibrados para tareas comunes.
- Premium: Alto rendimiento para cargas de trabajo exigentes.
#### Rendimiento escalable y grupos
- **Bases de Datos Únicas**: Cada base de datos está aislada y tiene sus propios recursos dedicados de computación, memoria y almacenamiento. Los recursos se pueden escalar dinámicamente (hacia arriba o hacia abajo) sin tiempo de inactividad (1128 vCores, 32 GB4 TB de almacenamiento, y hasta 128 TB).
- **Grupos Elásticos**: Comparte recursos entre múltiples bases de datos en un grupo para maximizar la eficiencia y ahorrar costos. Los recursos también se pueden escalar dinámicamente para todo el grupo.
- **Flexibilidad de Nivel de Servicio**: Comienza pequeño con una base de datos única en el nivel de Propósito General. Mejora a niveles Críticos para Negocios o Hiperescalables a medida que crecen las necesidades.
- **Opciones de Escalado**: Escalado Dinámico o Alternativas de Autoscalado.
#### Monitoreo y Optimización Integrados
- **Consulta Almacén**: Realiza un seguimiento de problemas de rendimiento, identifica los principales consumidores de recursos y ofrece recomendaciones prácticas.
- **Ajuste Automático**: Optimiza proactivamente el rendimiento con características como indexación automática y correcciones de planes de consulta.
- **Integración de Telemetría**: Admite monitoreo a través de Azure Monitor, Event Hubs o Azure Storage para obtener información personalizada.
#### Recuperación ante Desastres y Disponibilidad
- **Copias de seguridad automáticas**: SQL Database realiza automáticamente copias de seguridad completas, diferenciales y de registros de transacciones de bases de datos.
- **Restauración a un Punto en el Tiempo**: Recupera bases de datos a cualquier estado anterior dentro del período de retención de copias de seguridad.
- **Geo-Redundancia**
- **Grupos de Conmutación por Error**: Simplifica la recuperación ante desastres agrupando bases de datos para la conmutación por error automática entre regiones.
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 granular a nivel de base de datos.
### Azure SQL Managed Instance
**Azure SQL Managed Instance** es un motor de base de datos como servicio (PaaS) que ofrece casi un 100% de compatibilidad con SQL Server y maneja automáticamente la mayoría de las tareas de gestión (por ejemplo, actualización, parches, copias de seguridad, monitoreo). Proporciona una solución en la nube para migrar bases de datos de SQL Server en las instalaciones con cambios mínimos.
#### Niveles de Servicio
- **Propósito General**: Opción rentable para aplicaciones con requisitos estándar de E/S y latencia.
- **Crítico para Negocios**: Opción de alto rendimiento con baja latencia de E/S para cargas de trabajo críticas.
#### Características Avanzadas de Seguridad
* **Protección contra Amenazas**: Protección Avanzada contra Amenazas que alerta sobre actividades sospechosas y ataques de inyección SQL. Auditoría para rastrear y registrar eventos de base de datos para cumplimiento.
* **Control de Acceso**: Autenticación de Microsoft Entra para gestión de identidad centralizada. Seguridad a Nivel de Fila y Enmascaramiento de Datos Dinámico para control de acceso granular.
* **Copias de Seguridad**: Copias de seguridad automatizadas y manuales con capacidad de restauración a un punto en el tiempo.
**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 de seguridad comunes, y un modelo de negocio favorable para los clientes de SQL Server en las instalaciones.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** es mejor para migraciones donde deseas **control sobre el sistema operativo y la instancia de SQL Server**, como si fuera un servidor que se ejecuta en las instalaciones. Puede tener diferentes tamaños de máquina y una amplia selección de versiones y ediciones de SQL Server.
**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.
#### Características Clave
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.
- 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.
**Copia de Seguridad Automatizada**: Programa copias de seguridad para bases de datos SQL.
**Patching Automático**: Automatiza la instalación de actualizaciones de Windows y SQL Server durante una ventana de mantenimiento.
**Integración con Azure Key Vault**: Configura automáticamente Key Vault para máquinas virtuales de SQL Server.
**Integración con Defender for Cloud**: Ver recomendaciones de Defender para SQL en el portal.
**Flexibilidad de Versión/Edición**: Cambia la versión o metadatos de edición de SQL Server sin redeplegar la máquina virtual.
#### Características de Seguridad
**Microsoft Defender para SQL**: Información y alertas de seguridad.
**Integración con Azure Key Vault**: Almacenamiento seguro de credenciales y claves de cifrado.
**Microsoft Entra (Azure AD)**: Autenticación y control de acceso.
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.
## Enumeración
@@ -216,6 +164,30 @@ az sql midb show --resource-group <res-grp> --name <name>
# Lis all sql VM
az sql vm list
az sql vm show --resource-group <res-grp> --name <name>
# List schema by the database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
# Get tables of a database with the schema
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
# Get columns of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
# Get columns of a table
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
# Get DataMaskingPolicies of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
```
{{#endtab}}
@@ -260,6 +232,31 @@ 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:
```sql
--Enumerates the masked columns
SELECT
OBJECT_NAME(mc.object_id) AS TableName,
c.name AS ColumnName,
mc.masking_function AS MaskingFunction
FROM sys.masked_columns AS mc
JOIN sys.columns AS c
ON mc.object_id = c.object_id
AND mc.column_id = c.column_id
--Enumerates Row level policies
SELECT
sp.name AS PolicyName,
sp.is_enabled,
sp.create_date,
sp.modify_date,
OBJECT_NAME(sp.object_id) AS TableName,
sp2.predicate_definition AS PredicateDefinition
FROM sys.security_policies AS sp
JOIN sys.security_predicates AS sp2
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):