# Requisitos

## Módulos de PowerShell

{% hint style="info" %}
La sección de Módulos de PowerShell se actualiza automáticamente en función del [repositorio público](https://github.com/realmjoin/realmjoin-runbooks).
{% endhint %}

Los runbooks compartidos disponibles en [GitHub](https://github.com/realmjoin/realmjoin-runbooks) esperan/usan los siguientes módulos de Windows PowerShell:

| Módulo                           | Versión mínima en los runbooks |
| -------------------------------- | ------------------------------ |
| `Az.Accounts`                    | 5.3.2                          |
| `Az.Compute`                     | 5.1.1                          |
| `Az.DesktopVirtualization`       | 5.4.1                          |
| `Az.ManagementPartner`           | 0.7.5                          |
| `Az.Resources`                   | 9.0.1                          |
| `Az.Storage`                     | 9.6.0                          |
| `ExchangeOnlineManagement`       | 3.9.2                          |
| `Microsoft.Graph.Authentication` | 2.35.1                         |
| `MicrosoftTeams`                 | 7.6.0                          |
| `RealmJoin.RunbookHelper`        | 0.8.5                          |

RealmJoin Portal importará e instalará automáticamente estos módulos si se hace referencia a ellos desde un runbook. Esta importación también respetará las versiones mínimas especificadas para los módulos.

## Permisos

{% hint style="info" %}
La sección de Permisos se actualiza automáticamente en función del [repositorio público](https://github.com/realmjoin/realmjoin-runbooks).
{% endhint %}

Los runbooks compartidos de RealmJoin utilizan la [identidad administrada asignada por el sistema de Azure Automation](https://learn.microsoft.com/en-us/azure/automation/enable-managed-identity-for-automation) para interactuar con Entra ID, MS Graph API, etc.

La siguiente lista de roles y permisos le permitirá usar todos los runbooks actualmente disponibles en nuestro repositorio compartido.

No se recomienda reducir estos roles/permisos, ya que los runbooks se prueban solo con este conjunto de permisos. Si reduce el conjunto de roles/permisos, algunos runbooks dejarán de funcionar.

### Roles de Entra ID

Asigne los siguientes roles de Entra ID a la identidad administrada

* Application Developer
* Cloud Device Administrator
* Administrador de Exchange
* Administrador de Teams
* Administrador de usuarios

### Permisos de la API de Graph

Conceda los siguientes permisos de la API de Graph a la identidad administrada

* `Application.Read.All`
* `Application.ReadWrite.OwnedBy`
* `AuditLog.Read.All`
* `BitlockerKey.Read.All`
* `CloudPC.ReadWrite.All`
* `Device.ReadWrite.All`
* `DeviceLocalCredential.Read.All`
* `DeviceManagementApps.ReadWrite.All`
* `DeviceManagementConfiguration.ReadWrite.All`
* `DeviceManagementManagedDevices.PrivilegedOperations.All`
* `DeviceManagementManagedDevices.ReadWrite.All`
* `DeviceManagementServiceConfig.ReadWrite.All`
* `Directory.Read.All`
* `Group.Create`
* `Group.ReadWrite.All`
* `GroupMember.ReadWrite.All`
* `IdentityRiskyUser.ReadWrite.All`
* `InformationProtectionPolicy.Read.All`
* `Mail.Send`
* `Organization.Read.All`
* `Place.Read.All`
* `Policy.Read.All`
* `Reports.Read.All`
* `RoleAssignmentSchedule.Read.Directory`
* `RoleManagement.Read.All`
* `RoleManagement.Read.Directory`
* `Team.Create`
* `TeamSettings.ReadWrite.All`
* `User.ReadWrite.All`
* `UserAuthenticationMethod.ReadWrite.All`
* `WindowsUpdates.ReadWrite.All`

### Permisos de la API de otras aplicaciones

Conceda los siguientes permisos de la API de Exchange Online de Office 365 a la identidad administrada

* `Exchange.ManageAsApp`

Conceda los siguientes permisos de la API de WindowsDefenderATP a la identidad administrada

* `Machine.Read.All`
* `Machine.Isolate`
* `Machine.RestrictExecution`
* `Ti.ReadWrite.All`

Conceda los siguientes permisos de la API de SharePoint a la identidad administrada

* `User.Read.All`
* `Sites.Read.All`
* `Sites.FullControl.All`

### Concesión de roles y permisos

Actualmente no es posible conceder permisos a identidades administradas usando Azure Portal. Recomendamos usar scripting con MS Graph / PowerShell para ello.

Puede encontrar un ejemplo de este proceso [aquí](https://github.com/Workplace-Foundation/approle-and-directoryrole-granter).

### Permisos de recursos de Azure

Conceda al menos acceso de "Contribuidor" a la suscripción o grupo de recursos que aloja la cuenta de Azure Automation para los runbooks

Algunos runbooks usarán una cuenta de Azure Storage para almacenar informes o copias de seguridad. Conceda al menos acceso de "Contribuidor" a la suscripción o grupo de recursos correspondiente. La mayoría de los runbooks podrán entonces crear los recursos dentro del grupo de recursos por su cuenta.

## Métodos de autenticación

### Identidades administradas

Azure Automation admite [Identidades administradas](https://docs.microsoft.com/en-us/azure/automation/enable-managed-identity-for-automation) (asignada por el sistema) como la forma principal de autenticación. Esto reemplaza a las cuentas RunAs obsoletas.

Los runbooks de RealmJoin actualmente admiten cuentas RunAs si no hay configurada una identidad administrada.

{% hint style="warning" %}
Si una identidad administrada y una cuenta RunAs están configuradas al mismo tiempo, los runbooks del repositorio compartido de RealmJoin preferirán automáticamente usar la identidad administrada cuando se utilicen versiones más recientes de nuestro módulo de soporte `RealmJoin.RunbookHelper` que comienza con v0.8.0.

Las versiones anteriores del módulo no podían aprovechar completamente las identidades administradas y preferían la cuenta RunAs.

Asegúrese de conceder los permisos necesarios a la identidad administrada o deshabilitarla por completo para usar solo la cuenta RunAs.
{% endhint %}

### Secreto de cliente

Algunos runbooks privados pueden necesitar una autenticación de tipo ClientID/Secret. Actualmente no hay runbooks compartidos que requieran ClientID y Secret.

Si es necesario, un ClientID y un Secret pueden almacenarse en las credenciales administradas llamadas "realmjoin-automation-cred" en la cuenta de Azure Automation.

Actualmente, la "realmjoin-automation-cred" en la cuenta de automatización es creada por defecto por el RJ-Wizard, pero rellenada con valores aleatorios; habría que completarla con los valores correctos.
