# Exigences

## Modules PowerShell

{% hint style="info" %}
La section Modules PowerShell est mise à jour automatiquement en fonction du [dépôt public](https://github.com/realmjoin/realmjoin-runbooks).
{% endhint %}

Les runbooks partagés disponibles sur [GitHub](https://github.com/realmjoin/realmjoin-runbooks) utilisent/attendent les modules Windows PowerShell suivants :

| Module                           | Version minimale dans les 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                              |

Le portail RealmJoin importera et installera automatiquement ces modules s’ils sont référencés depuis un runbook. Cette importation respectera également les versions minimales spécifiées pour les modules.

## Autorisations

{% hint style="info" %}
La section Autorisations est mise à jour automatiquement en fonction du [dépôt public](https://github.com/realmjoin/realmjoin-runbooks).
{% endhint %}

Les runbooks partagés de RealmJoin utilisent l’ [identité gérée attribuée par le système](https://learn.microsoft.com/en-us/azure/automation/enable-managed-identity-for-automation) pour interagir avec Entra ID, l’API MS Graph, etc.

La liste suivante de rôles et d’autorisations vous permettra d’utiliser tous les runbooks actuellement disponibles dans notre dépôt partagé.

Il n’est pas recommandé de réduire ces rôles/autorisations, car les runbooks sont testés uniquement avec cet ensemble d’autorisations. Si vous réduisez l’ensemble des rôles/autorisations, certains runbooks cesseront de fonctionner.

### Rôles Entra ID

Veuillez attribuer les rôles Entra ID suivants à l’identité gérée

* Développeur d’application
* Cloud Device Administrator
* Administrateur Exchange
* Administrateur Teams
* Administrateur d’utilisateurs

### Autorisations de l’API Graph

Veuillez accorder les autorisations suivantes de l’API Graph à l’identité gérée

* `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`

### Autorisations d’autres API d’applications

Veuillez accorder les autorisations suivantes de l’API Office 365 Exchange Online à l’identité gérée

* `Exchange.ManageAsApp`

Veuillez accorder les autorisations suivantes de l’API WindowsDefenderATP à l’identité gérée

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

Veuillez accorder les autorisations suivantes de l’API SharePoint à l’identité gérée

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

### Attribution des rôles et des autorisations

L’attribution d’autorisations aux identités gérées ne peut actuellement pas être effectuée à l’aide du portail Azure. Nous recommandons d’utiliser MS Graph / des scripts PowerShell pour cela.

Vous pouvez trouver un exemple de ce processus [ici](https://github.com/Workplace-Foundation/approle-and-directoryrole-granter).

### Autorisations des ressources Azure

Veuillez accorder au moins l’accès « Contributor » à l’abonnement ou au groupe de ressources hébergeant le compte Azure Automation pour les runbooks

Certains runbooks utiliseront un compte de stockage Azure pour stocker des rapports ou des sauvegardes. Veuillez accorder au moins l’accès « Contributor » à l’abonnement ou au groupe de ressources correspondant. La plupart des runbooks peuvent ensuite créer eux-mêmes les ressources dans le groupe de ressources.

## Méthodes d’authentification

### Identités gérées

Azure Automation prend en charge [Identités gérées](https://docs.microsoft.com/en-us/azure/automation/enable-managed-identity-for-automation) (attribuée par le système) comme moyen principal d’authentification. Cela remplace les comptes RunAs obsolètes.

Les runbooks RealmJoin prennent actuellement en charge les comptes RunAs si aucune identité gérée n’est configurée.

{% hint style="warning" %}
Si une identité gérée et un compte RunAs sont configurés en même temps, les runbooks du dépôt partagé de RealmJoin privilégieront automatiquement l’utilisation de l’identité gérée lors de l’utilisation des versions plus récentes de notre `RealmJoin.RunbookHelper` module à partir de la version v0.8.0.

Les anciennes versions du module ne pouvaient pas exploiter pleinement les identités gérées et privilégiaient le compte RunAs.

Veuillez vous assurer d’accorder les autorisations nécessaires à l’identité gérée ou de la désactiver complètement afin d’utiliser uniquement le compte RunAs.
{% endhint %}

### Secret client

Certains runbooks privés peuvent nécessiter une authentification de type ClientID/Secret. Il n’existe actuellement aucun runbook partagé nécessitant un ClientID et un Secret.

Si nécessaire, un ClientID et un Secret peuvent être stockés dans les informations d’identification gérées nommées « realmjoin-automation-cred » dans le compte Azure Automation.

Actuellement, le « realmjoin-automation-cred » dans le compte d’automatisation est créé par défaut par le RJ-Wizard, mais il est rempli avec des valeurs aléatoires - il faudrait le remplir avec les valeurs correctes.
