> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/fr/automatisation/runbooks/runbook-permissions.md).

# Autorisations des runbooks

Comment accorder/refuser l’accès à certains runbooks.

{% embed url="<https://www.youtube.com/watch?v=bLi_k_Yzhyw>" %}

## Périmètre

Cela explique comment autoriser/refuser l’accès à certains runbooks dans un tenant Azure. Si vous cherchez des réponses concernant les autorisations MS Graph API nécessaires pour exécuter une certaine action en tant que runbook, veuillez consulter notre [prérequis](/fr/automatisation/connecting-azure-automation/azure-ad-roles-and-permissions.md).

## Aperçu

« Runbook Permissions » définit la visibilité des runbooks pour certains utilisateurs. Certains runbooks peuvent également être bloqués/masqués globalement.

Comme le [Personnalisations du runbook](/fr/automatisation/runbooks/runbook-customization.md), la définition de ces autorisations se fait en fournissant une configuration au format JSON en tant qu’administrateur RealmJoin dans le portail web RealmJoin à <https://portal.realmjoin.com/settings/runbooks-permissions> .

### À propos de ce guide

Nous donnerons une brève description de la syntaxe, puis construirons un exemple complet pas à pas. N’hésitez pas à aller directement à l’exemple complet et à commencer à partir de [là](#targetentitygroups).

## Syntaxe de configuration

### Noms des runbooks

Les runbooks sont référencés par leurs noms tels qu’ils apparaissent dans le compte Azure Automation, par ex. `rjgit-group_general_remove-group`.

Des caractères génériques ('\*') peuvent être utilisés pour faire correspondre plusieurs runbooks. Plusieurs caractères génériques peuvent être utilisés dans la même chaîne, par ex. `rjgit-*_security_*`. Cela correspondrait à tous les exemples suivants :

* `rjgit-org_security_list-inactive-users`
* `rjgit-device_security_enable-or-disable-device`

Le préfixe `rjgit-` désigne les runbooks importés de notre dépôt GitHub public. Les runbooks spécifiques aux clients n’ont pas de préfixe, par ex. `user_userinfo_custom-runbook`

### Entra ID Groups

Les groupes Entra ID seront référencés à l’aide de leur ID d’objet, comme `91688d11-9a34-42cd-8d1e-ce617d6c1234`. Actuellement, seuls les groupes de sécurité peuvent être utilisés.

## Structure JSON et exemple

Nous construirons un exemple de configuration complet pas à pas.

Une configuration JSON se compose de plusieurs sections, mais toutes sont facultatives et peuvent être omises.

Il est permis d’ajouter des commentaires en utilisant le préfixe "//".

### EnabledRunbookPatterns

Cette section contient une liste de runbooks autorisés à être utilisés. Si cette section est omise, tous les runbooks sont activés/autorisés par défaut.

Si vous définissez cette section, alors seuls les runbooks mentionnés dans cette section seront utilisables par n’importe quel rôle / support et administrateur.

#### Exemple

* Autorisez uniquement certains runbooks individuels en indiquant leur nom complet

  `rjgit-group_general_remove-group`
* Autorisez tous les runbooks liés aux appareils de notre dépôt partagé

  `rjgit-device_*`
* Autorisez tous les runbooks partagés pour les utilisateurs

  `rjgit-user_*`
* Autorisez tous les runbooks liés aux utilisateurs, spécifiques au client (locaux)

  `user_*`

Cela exclut implicitement de nombreux runbooks basés sur des groupes et tous ceux basés sur des orgs. Attention.

```
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ]
}
```

### DisabledRunbookPatterns

Une liste de runbooks qui sont globalement désactivés / interdits. Si cette section est omise ou vide, tous les runbooks activés (fournis via [EnabledRunbookPatterns](#enabledrunbookpatterns)) peuvent être utilisés.

Les entrées de cette section ont la priorité sur celles de [EnabledRunbookPatterns ](#enabledrunbookpatterns)- les runbooks seront masqués / ne seront utilisables par personne dans ce tenant.

#### Exemple

Nous réutiliserons la `EnabledRunbookPatterns` section précédente.

* Désactiver tous les runbooks partagés (`rjgit-`) dans la `sécurité` catégorie.

```
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ]
}
```

### Rôles

Dans cette section, vous pouvez attribuer une liste de runbooks à un groupe Entra ID. Cela permet de définir plusieurs rôles de support/opérateur dans votre tenant.

Si cette section est omise, tout le support RealmJoin et tous les administrateurs ont accès à tous les runbooks indiqués dans les sections précédentes.

{% hint style="warning" %}
Si activé, tous les utilisateurs n’appartenant à aucun rôle ne verront aucun runbook.
{% endhint %}

#### Exemple

En poursuivant avec ce que nous avons, créons un rôle de support des appareils `DeviceAdmin` et un rôle de support utilisateur `UserAdmin`.

Nous appliquerons ces rôles à plusieurs groupes Entra ID et pour chaque rôle, nous donnerons une liste de runbooks autorisés. Attention : cela limitera le rôle de support utilisateur à un très petit ensemble de runbooks.

Ajoutons des commentaires ("//") à côté de l’ID d’objet du groupe, afin d’aider le lecteur en indiquant les noms des groupes Entra ID.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1er groupe Entra ID de support des appareils
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2e groupe Entra ID de support des appareils - autre équipe
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // Groupe de support utilisateur Entra ID
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  }
}
```

Désormais, le `UserAdmin` rôle peut :

* attribuer des licences à tous les utilisateurs de votre tenant
* modifier les adresses e-mail de tous les utilisateurs de votre tenant

Le `DeviceAdmin` Le rôle peut

* effacer n’importe quel appareil de votre tenant

### TargetEntityGroups

Vous avez peut-être des utilisateurs VIP cruciaux. Il ne devrait pas être possible pour n’importe quel membre du support d’effacer l’appareil d’un VIP ou de modifier l’adresse e-mail d’un VIP. Nous pouvons utiliser le « ciblage » pour restreindre les rôles sur les utilisateurs critiques à des équipes dédiées.

Les « Devices » seront ciblés par leur utilisateur principal/attribué, mais pas par l’objet appareil dans Entra ID. Cela permet de rester sur un modèle purement basé sur les utilisateurs.

Nous supposons que des groupes Entra ID existent et contiennent des utilisateurs VIP critiques. En utilisant cette section, nous pouvons délimiter avec soin certains rôles et runbooks plus critiques pour ces groupes Entra ID spécifiques (cibles).

Évidemment, si vous omettez cette section, tous les utilisateurs/groupes/appareils de votre tenant sont traités de manière égale.

Si vous définissez TargetEntityGroups, cela ne devrait avoir aucun impact sur tout autre groupe non mentionné dans la section.

#### Exemple complet

Supposons le groupe `0000c0af-c217-41e9-b790-3043788f0000` est notre groupe d’utilisateurs VIP.

Nous introduisons un nouveau groupe Entra ID `4444c0af-c217-41e9-b790-3043788f4444` contenant le personnel de support qui a été approuvé pour administrer les utilisateurs VIP. Ce personnel de support devrait également disposer de tous les autres droits de support de base, nous allons donc l’ajouter aux rôles existants.

« Restreindre » un rôle n’accordera pas de nouveaux rôles à un support.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1er groupe Entra ID de support des appareils
        "5555c0af-c217-41e9-b790-3043788f1234", // 2e groupe Entra ID de support des appareils - autre équipe
        "4444c0af-c217-41e9-b790-3043788f4444"  // Équipe de support VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // Groupe de support utilisateur Entra ID
        "4444c0af-c217-41e9-b790-3043788f4444"  // Équipe de support VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // Utilisateurs VIP - à manipuler avec précaution !
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Support VIP
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Support VIP
        ]
      }
    }
  }
}
```

#### **Exemple : restreindre le personnel de support américain à la gestion des seuls utilisateurs américains**

Dans ce scénario, nous avons du personnel de support basé aux États-Unis qui ne devrait gérer que les utilisateurs situés aux États-Unis. Pour appliquer cette restriction :

* Créez une règle d’autorisation qui **refuse** aux supports américains la possibilité d’exécuter des runbooks sur **tous les utilisateurs**.
* Ajoutez une règle d’exception qui **autorise** l’exécution de runbooks uniquement pour **les utilisateurs américains**.

Cela garantit que les supports américains disposent de permissions strictement limitées à leur public cible prévu (les utilisateurs américains) et empêche les interactions accidentelles avec des utilisateurs en dehors de ce périmètre.

**Mise en œuvre**

1. Un groupe Entra ID Runbook Runners doit être attribué dans le portail RealmJoin
   1. Paramètres > Autorisations > Autorisations du Runbook Runner
   2. Le groupe Entra ID des supports américains doit être membre du groupe Runbook Runners pour autoriser l’exécution générale des runbooks dans le portail RealmJoin.
2. Ajout d’un nouveau rôle sous Paramètres > Autorisations des runbooks
   1. Dans la section Rôles, ajoutez le rôle USSupporters avec son groupe Entra (ID d’objet du groupe)
   2. Ajoutez AllowedRunbookPatterns pour USSupporters
3. Modifiez TargetEntityGroups
   1. Le groupe Tous les utilisateurs doit restreindre le rôle USSupporters avec une valeur vide (aucun ID d’objet de groupe Entra n’est ajouté ici). Il s’agit d’un refus implicite !
   2. Le groupe Utilisateurs américains doit restreindre le rôle USSupporters à l’ID d’objet du groupe Entra ID des supports américains

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FZ56Ipx6VuZDjIeZO2MTC%2Fimage.png?alt=media&amp;token=e3f5fe54-0d17-46f0-a106-f51d548bde64" alt=""><figcaption><p>Restreindre le personnel de support américain à ne gérer que les utilisateurs américains</p></figcaption></figure>

Voici l’exemple complet pour ce scénario :

```json
{
  // Autorisation du portail :
  // Rôle du Runbook Runner : supports américains

  // Appartenances aux groupes :
  // 3e1e7540-7f0c-483c-b9bf-500342e2467c: Tous les utilisateurs
  // c603278c-cc36-4661-bb7a-eecb7ab079f9: Supports américains
  // 0f76d01e-cc6b-4553-bf1d-e4ccedd9c824: Utilisateurs américains

  "EnabledRunbookPatterns": [ // Activation générale des runbooks de messagerie et de sécurité
    "rjgit-*_mail_*",
    "rjgit-*security*"
  ],
  "DisabledRunbookPatterns": [
    "*password*"
  ],

  "Roles": {
    "USSupporters": {
      "Groups": [
        "c603278c-cc36-4661-bb7a-eecb7ab079f9" // Supports américains
      ],
      "AllowedRunbookPatterns": [ // runbooks autorisés pour ce rôle - supports américains
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // Tous les utilisateurs
      "RestrictRoles": {
        "USSupporters": [
          // en général, ne pas autoriser de runbooks pour les supports américains
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // Utilisateurs américains
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // Supports américains
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

Cette section contient une liste de runbooks qui seront marqués comme « planifiables ». Le portail RealmJoin permettra d’attribuer / gérer des planifications pour ces runbooks. Voir [Planification des runbooks](/fr/automatisation/runbooks/scheduling.md).

L’exemple suivant décrit le comportement par défaut si SchedulingEnabledRunbookPatterns n’est pas défini :

```json
{
  "SchedulingEnabledRunbookPatterns": [
    "*_scheduled"
  ]
}
```

### SchedulingDisabledRunbookPatterns

Cette section contient une liste de runbooks qui seront mis sur liste noire pour ne pas être marqués comme « planifiables ». Le portail RealmJoin ne permettra pas d’attribuer / gérer des planifications pour ces runbooks. Voir [Planification des runbooks](/fr/automatisation/runbooks/scheduling.md).

Un runbook présent à la fois dans SchedulingEnabledRunbookPatterns et SchedulingDisabledRunbookPatterns **renverrait** sera planifiable.

Par défaut, aucun runbook n’est mis sur liste noire. L’exemple suivant montre simplement la syntaxe :

```json
{
  "SchedulingDisabledRunbookPatterns": [
    "rjgit-user_*"
  ]
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.realmjoin.com/fr/automatisation/runbooks/runbook-permissions.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
