# Azure

## <mark style="color:red;">Entra ID</mark>

{% hint style="warning" %}

## Azure AD = Entra ID

{% endhint %}

[Microsoft Entra ID](https://www.microsoft.com/es-es/security/business/identity-access/microsoft-entra-id) es el servicio de gestión de acceso e identidades basado en la nube de Microsoft. Equivalente al Active Directory on-prem, pero basado en la nube. Por lo que, <mark style="color:blue;">es</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**uno de los muchos servicios dentro de Azure**</mark>**.**

En este servicio se:

* Almacena identidades de usuarios, dispositivos, grupos y aplicaciones.
* Implementa políticas de acceso condicional y MFA.
* Gestiona aplicaciones mediante *Enterprise Applications* y *App Registrations*.
* Utiliza protocolos OAuth2, OpenID Connect y SAML para autenticación y autorización.
* Expone una API llamada **Microsoft Graph** para interactuar con los recursos de identidades y Office 365.

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2FPklw8K6IJlYQ14PyS5ot%2Fimage.png?alt=media&#x26;token=9fb1331c-e7c5-41a6-99c9-ccaad4c9ac30" alt=""><figcaption><p><a href="https://www.microsoft.com/es-es/security/business/identity-access/microsoft-entra-id">https://www.microsoft.com/es-es/security/business/identity-access/microsoft-entra-id</a></p></figcaption></figure>

<table><thead><tr><th width="186.66192626953125">Término</th><th>Definición</th></tr></thead><tbody><tr><td><strong>Tenant</strong></td><td>Instancia de Azure que representa a una organización. Es el contenedor principal que agrupa usuarios, políticas y servicios.</td></tr><tr><td><strong>Microsoft Entra ID</strong></td><td>Cada Tenant tiene un directorio dedicado (Azure Active Directory) que se usa para gestionar identidades, accesos, grupos y políticas de seguridad para los recursos asociados.</td></tr><tr><td><strong>Subscriptions (Suscripciones)</strong></td><td>Se utilizan para pagar por los servicios consumidos en Azure. Una suscripción agrupa recursos bajo un modelo de facturación común y puede tener asignadas políticas de acceso y control independientes.</td></tr><tr><td><strong>Core domain (Dominio principal)</strong></td><td>Es el dominio principal asociado al Tenant. Puede ser personalizado (como empresa.com) o usar el formato por defecto .onmicrosoft.com. Es usado para identificar usuarios y servicios.</td></tr><tr><td><strong>Resources Groups (Grupos de recursos)</strong></td><td>Contenedor lógico que agrupa múltiples recursos relacionados para facilitar su administración, implementación y control de acceso. Todos los recursos de un grupo comparten el mismo ciclo de vida.</td></tr><tr><td><strong>Resources (Recursos)</strong></td><td>Son las instancias específicas de servicios desplegados en Azure, como máquinas virtuales, bases de datos, redes virtuales o cuentas de almacenamiento. Cada recurso pertenece a un grupo de recursos.</td></tr><tr><td><strong>Azure Resource Manager (ARM)</strong></td><td>API centralizada para gestionar recursos (máquinas virtuales, almacenamiento, etc.).</td></tr><tr><td><strong>Tokens de acceso</strong></td><td>Permiten interactuar con APIs de Azure para enumerar usuarios, recursos, roles, etc.</td></tr><tr><td>Conditional Access</td><td>Políticas que controlan el acceso a los recursos según condiciones como ubicación, plataforma, app cliente, etc.</td></tr></tbody></table>

### Managed Identity

Es una **identidad gestionada automáticamente por Azure** que se puede asignar a recursos como:

* Azure VMs
* App Services
* Function Apps
* Logic Apps
* Containers (AKS, ACI)

Estas identidades permiten que los recursos se **autenticquen con otros servicios de Azure** (como Key Vault, Azure SQL, Storage, etc.) **sin almacenar credenciales en código**.

**¿Cómo funciona?**

* Al crear una Managed Identity, Azure genera automáticamente un **objeto en Entra ID** (Azure AD) de tipo *service principal*.
* Este *service principal* puede recibir **roles y permisos RBAC**, exactamente igual que un usuario humano o una app registrada.
* Cuando el recurso necesita acceder a otro servicio, Azure le proporciona un **token de acceso Entra ID**.

#### &#x20;Tipos de Managed Identity

<table><thead><tr><th width="167.77777099609375">Tipo</th><th>Descripción</th></tr></thead><tbody><tr><td><strong>System-assigned</strong></td><td>Ligada a un recurso concreto (por ejemplo, una VM o app). Se destruye con el recurso. No se puede reutilizar.</td></tr><tr><td><strong>User-assigned</strong></td><td>Identidad independiente que se puede asignar a múltiples recursos. Se gestiona por separado.</td></tr></tbody></table>

## <mark style="color:red;">Azure Resource Manager (ARM)</mark>

Es el *backend* de gestión de infraestructura como servicio.

* Se accede a través de la API de **management.azure.com**.
* Permite controlar máquinas virtuales, redes, almacenamiento, Key Vaults, etc.
* El acceso se realiza mediante **tokens ARM**, que se obtienen tras autenticación con Entra ID.

## <mark style="color:red;">Recursos y Aplicaciones</mark>

Los recursos de Azure se dividen en 4 niveles:

**Grupos de administración > Suscripciones > Grupos de recursos > Recursos**

Estos recursos están agrupados bajo "Resource Groups" y organizados en suscripciones.

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2FuUQdoZYLgPQCvmo0TFMX%2Fimage.png?alt=media&#x26;token=a821934f-4f9c-42cd-81ed-5592950d06ec" alt="" width="345"><figcaption><p>Esquema de recursos</p></figcaption></figure>

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2FpNdOwVVKaEeSwcXiyDek%2Fimage.png?alt=media&#x26;token=f398e598-fb04-4a42-ba47-a793af6fe032" alt=""><figcaption></figcaption></figure>

### Recursos comunes

* **Máquinas virtuales (VMs)**: Infraestructura clave en ataques para pivoteo.
* **Cuentas  de almacenamiento**: Incluyen blobs, tablas, colas (objetivo común de exfiltración).
* **Key Vaults**: Contienen secretos, claves y certificados.
* **App Services / Function Apps**: Entornos de ejecución de código web o serverless.
* **Enterprise Applications.**

## <mark style="color:red;">Roles y Accesos</mark>

### Control de acceso basado en rol (RBAC)

<https://learn.microsoft.com/es-es/azure/role-based-access-control/overview>

> El control de acceso basado en rol (Azure RBAC) ayuda a administrar quién tiene acceso a los recursos de Azure, qué pueden hacer con esos recursos y a qué áreas puede acceder.

Consta de 3 elementos: Entidad de seguridad, definición de rol y ámbito

**Una entidad de seguridad** (usuario, grupo, servicio principal, identidad administrada) de azure puede tener un [**rol**](#user-content-fn-1)[^1] (<https://azure.permissions.cloud/builtinroles>) en determinados **ámbitos** (grupos de administración, suscripciones, grupos de recursos y recursos).

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2FpwRfyoBOSr2xDYyYwFQv%2Fimage.png?alt=media&#x26;token=669a63d3-a38a-4c49-99a7-573b47c07306" alt="" width="563"><figcaption><p>Esquema de asignación de roles en Azure</p></figcaption></figure>

Azure usa el modelo RBAC (Role-Based Access Control) en combinación con Entra ID:

* Roles como **Owner**, **Contributor**, **Reader**, o personalizados.
* Pueden aplicarse a nivel de recurso, grupo de recursos o suscripción.
* Los roles se visualizan mediante `Get-AzRoleAssignment` o `Get-MgDirectoryRole`.

### Control de acceso basado en atributos (ABAC)

<https://learn.microsoft.com/es-es/azure/role-based-access-control/conditions-overview>

> El control de acceso basado en atributos (ABAC) es un sistema de autorización que define el acceso en función de los atributos asociados a las entidades de seguridad, los recursos y el entorno de una solicitud de acceso.

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2FSGlBtMp63uXfMCowl0U3%2Fimage.png?alt=media&#x26;token=cc5d1c81-6b14-41c9-8138-3ce7cbfb9993" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2Fg79SX7Mey0WhpQ45Ih87%2Fimage.png?alt=media&#x26;token=3f861d6d-b65e-411f-bb37-b7221ddcc57f" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2FUhZpnBbylW3moqbaOOwM%2Fimage.png?alt=media&#x26;token=2a0057a0-766e-4e73-bb0c-ed70199bcb94" alt=""><figcaption></figcaption></figure>

### Permisos por defecto de un usuario normal

* Leer todos los usuarios, aplicaciones, dispositivos, roles, suscripciones o propiedades públicas.
* Invitar invitados.
* Crear grupos de seguridad.
* Leer membresía de grupos no ocultos.
* Añadir invitados a grupos propios.
* Crear nuevas aplicaciones.
* Añadir hasta 50 dispositivos en Azure.

## <mark style="color:red;">Autenticación y Tokens</mark>

Azure opera mediante el intercambio de *tokens de acceso*:

* **Graph API Token**: Para consultar datos de usuarios, grupos, apps.
* **ARM Token**: Para administrar recursos de infraestructura.
* Se obtienen mediante autenticación estándar o *Device Code Flow* para evadir MFA.

## <mark style="color:red;">Aplicaciones Registradas y Consents</mark>

Una aplicación puede obtener permisos para actuar en nombre del usuario u organización:

* **App Registrations**: Registradas por usuarios/administradores.
* **Enterprise Applications**: Aplicaciones configuradas para uso organizacional.
* Los consentimientos (consent grants) pueden ser a nivel usuario o tenant (admin consent).

## <mark style="color:red;">Conditional Access</mark>

Políticas que restringen el acceso según:

* Ubicación geográfica.
* Tipo de dispositivo.
* Aplicación cliente (navegador, PowerShell, etc.).
* Estado del dispositivo (compliant / joined).

Estas políticas se pueden evadir mediante técnicas como:

* Abuso del *Device Authorization Flow.*
* Uso de apps no bloqueadas (como MyApps).
* Manipulación del user-agent o ubicación con proxies y *FoxyProxy.*

[^1]: Se compone de un conjunto de permisos
