> 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/de/automatisierung/runbooks/runbook-permissions.md).

# Runbook-Berechtigungen

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

## Umfang

Dies behandelt, wie der Zugriff auf bestimmte Runbooks in einem Azure-Tenant gewährt/verweigert wird. Wenn Sie nach Antworten dazu suchen, welche MS Graph API-Berechtigungen benötigt werden, um eine bestimmte Aktion als Runbook auszuführen, werfen Sie bitte einen Blick auf unsere [Anforderungen](/de/automatisierung/connecting-azure-automation/azure-ad-roles-and-permissions.md).

## Übersicht

„Runbook Permissions“ definieren die Sichtbarkeit von Runbooks für bestimmte Benutzer. Bestimmte Runbooks können außerdem global blockiert/ausgeblendet werden.

Wie bei den [Runbook Customizations](/de/automatisierung/runbooks/runbook-customization.md)wird das Definieren dieser Berechtigungen durchgeführt, indem Sie als RealmJoin-Admin im Webportal von RealmJoin eine JSON-formatierte Konfiguration unter <https://portal.realmjoin.com/settings/runbooks-permissions> .

### Über diesen Leitfaden

Wir geben eine kurze Beschreibung der Syntax und erstellen dann Schritt für Schritt ein vollständiges Beispiel. Sie können direkt zum vollständigen Beispiel springen und von dort aus beginnen [dort](#targetentitygroups).

## Konfigurationssyntax

### Runbook-Namen

Runbooks werden über ihre Namen referenziert, wie sie im Azure Automation Account zu sehen sind, z. B. `rjgit-group_general_remove-group`.

Platzhalter ('\*') können verwendet werden, um mehrere Runbooks zu treffen. Mehrere Platzhalter können im selben String verwendet werden, z. B. `rjgit-*_security_*`. Dies würde alle der folgenden Beispiele abdecken:

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

Das Präfix `rjgit-` kennzeichnet Runbooks, die aus unserem öffentlichen GitHub-Repository importiert werden. Kundenspezifische Runbooks haben kein Präfix, z. B. `user_userinfo_custom-runbook`

### Entra ID Groups

Entra ID Groups werden über ihre Object ID referenziert, wie `91688d11-9a34-42cd-8d1e-ce617d6c1234`. Derzeit können nur Sicherheitsgruppen verwendet werden.

## JSON-Struktur und Beispiel

Wir werden ein vollständiges Konfigurationsbeispiel Schritt für Schritt aufbauen.

Eine JSON-Konfiguration besteht aus mehreren Abschnitten, aber alle Abschnitte sind optional und können weggelassen werden.

Es ist erlaubt, Kommentare mit dem Präfix "//" hinzuzufügen.

### EnabledRunbookPatterns

Dieser Abschnitt enthält eine Liste von Runbooks, die verwendet werden dürfen. Wenn dieser Abschnitt weggelassen wird, sind standardmäßig alle Runbooks aktiviert/zugelassen.

Wenn Sie diesen Abschnitt definieren, sind nur Runbooks nutzbar, die in diesem Abschnitt erwähnt werden, für jede Rolle / Support und Admin.

#### Beispiel

* Nur bestimmte einzelne Runbooks zulassen, indem Sie ihren vollständigen Namen angeben

  `rjgit-group_general_remove-group`
* Alle gerätebezogenen Runbooks aus unserem gemeinsamen Repository zulassen

  `rjgit-device_*`
* Alle gemeinsamen User-Runbooks zulassen

  `rjgit-user_*`
* Alle kundenspezifischen (lokalen), benutzerbezogenen Runbooks zulassen

  `user_*`

Dies schließt implizit viele Gruppen- und alle org-basierten Runbooks aus. Bitte beachten.

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

### DisabledRunbookPatterns

Eine Liste von Runbooks, die global deaktiviert / verboten sind. Wenn dieser Abschnitt weggelassen wird oder leer ist, sind alle aktivierten Runbooks (bereitgestellt über [EnabledRunbookPatterns](#enabledrunbookpatterns)) nutzbar.

Einträge in diesem Abschnitt haben Vorrang vor Einträgen in [EnabledRunbookPatterns ](#enabledrunbookpatterns)- die Runbooks werden für niemanden in diesem Tenant ausgeblendet/nicht nutzbar sein.

#### Beispiel

Wir werden den `EnabledRunbookPatterns` Abschnitt von vorhin wiederverwenden.

* Alle gemeinsamen (`rjgit-`) Runbooks in der `Sicherheits` Kategorie deaktivieren.

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

### Rollen

In diesem Abschnitt können Sie einer Entra ID Groups eine Liste von Runbooks zuweisen. Dies ermöglicht die Definition mehrerer Support-/Operator-Rollen in Ihrem Tenant.

Wenn dieser Abschnitt weggelassen wird, haben alle RealmJoin-Supporter und Administratoren Zugriff auf alle in den vorherigen Abschnitten angegebenen Runbooks.

{% hint style="warning" %}
Wenn aktiviert, sehen alle Benutzer, die keiner Rolle angehören, keine Runbooks.
{% endhint %}

#### Beispiel

Aufbauend auf dem, was wir bereits haben, erstellen wir nun eine Device-Support-Rolle `DeviceAdmin` und eine User-Support-Rolle `UserAdmin`.

Wir werden diese Rollen mehreren Entra ID Groups zuweisen und für jede Rolle eine Liste erlaubter Runbooks angeben. Bitte beachten Sie – dies wird die User-Support-Rolle auf nur eine kleine Menge an Runbooks beschränken.

Lassen Sie uns Kommentare ("//") neben der Object ID der Gruppe hinzufügen, die dem Leser helfen, indem sie die Entra ID Groups-Namen angeben.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1. Device-Support AAD-Gruppe
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2. Device-Support AAD-Gruppe - anderes Team
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // User-Support AAD-Gruppe
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  }
}
```

Nun kann die `UserAdmin` Rolle:

* Lizenzen allen Benutzern in Ihrem Tenant zuweisen
* E-Mail-Adressen aller Benutzer in Ihrem Tenant ändern

Die `DeviceAdmin` Rolle kann

* jedes Gerät in Ihrem Tenant löschen

### TargetEntityGroups

Vielleicht haben Sie einige wichtige VIP-Benutzer. Es sollte nicht möglich sein, dass irgendein Support-Mitarbeiter das Gerät eines VIP löscht oder die E-Mail-Adresse eines VIP ändert. Wir können „Targeting“ verwenden, um Rollen für kritische Benutzer auf dedizierte Teams zu beschränken.

„Devices“ werden über ihren primären/zugewiesenen Benutzer angesprochen, nicht über das Geräteobjekt in Entra ID. Dadurch kann man bei einem rein benutzerbasierten Gruppenmodell bleiben.

Wir nehmen an, dass Entra ID Groups existieren, die kritische VIP-Benutzer enthalten. Mit diesem Abschnitt können wir einige noch kritischere Rollen und Runbooks sorgfältig auf diese spezifischen Entra ID Groups (Targets) eingrenzen.

Selbstverständlich werden, wenn Sie diesen Abschnitt weglassen, alle Benutzer/Gruppen/Devices in Ihrem Tenant gleich behandelt.

Wenn Sie TargetEntityGroups definieren, sollte dies keine Auswirkungen auf andere in diesem Abschnitt nicht erwähnte Gruppen haben.

#### Vollständiges Beispiel

Nehmen wir die Gruppe `0000c0af-c217-41e9-b790-3043788f0000` als unsere Gruppe der VIP-Benutzer an.

Wir führen eine neue Entra ID Group ein `4444c0af-c217-41e9-b790-3043788f4444` mit Support-Mitarbeitern, die autorisiert wurden, VIP-Benutzer zu verwalten. Diese Support-Mitarbeiter sollten auch alle anderen grundlegenden Support-Berechtigungen haben, daher fügen wir sie den bestehenden Rollen hinzu.

Das „Beschränken“ einer Rolle gewährt einem Supporter keine neuen Rollen.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1. Device-Support AAD-Gruppe
        "5555c0af-c217-41e9-b790-3043788f1234", // 2. Device-Support AAD-Gruppe - anderes Team
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP-Support-Team
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // User-Support AAD-Gruppe
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP-Support-Team
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // VIP-Benutzer - Mit Vorsicht behandeln!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP-Support
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP-Support
        ]
      }
    }
  }
}
```

#### **Beispiel: US-Support-Mitarbeiter darauf beschränken, nur US-Benutzer zu verwalten**

In diesem Szenario haben wir Support-Mitarbeiter mit Sitz in den USA, die nur Benutzer verwalten sollen, die sich in den USA befinden. Um diese Beschränkung durchzusetzen:

* Erstellen Sie eine Berechtigungsregel, die explizit **verweigert** US-Supportern die Möglichkeit, Runbooks auszuführen auf **allen Benutzern**.
* Fügen Sie eine Ausnahmeregel hinzu, die spezifisch **erlaubt** die Ausführung von Runbooks nur für **US-Benutzer**.

Dies stellt sicher, dass US-Supporter Berechtigungen haben, die strikt auf ihre vorgesehene Zielgruppe (US-Benutzer) beschränkt sind, und verhindert versehentliche Interaktionen mit Benutzern außerhalb dieses Bereichs.

**Implementierung**

1. Eine Entra-Gruppe für Runbook-Runner muss im Realm Join Portal zugewiesen werden
   1. Einstellungen > Berechtigungen > Runbook Runner Permissions
   2. Die Entra-Gruppe der US-Supporter muss Mitglied der Runbook Runners Group sein, um die allgemeine Runbook-Ausführung im RealmJoin Portal zu ermöglichen.
2. Hinzufügen einer neuen Rolle unter Einstellungen > Runbook Permissions
   1. Fügen Sie im Abschnitt Rollen die Rolle USSupporters mit ihrer Entra-Gruppe (Gruppen-Object ID) hinzu
   2. Fügen Sie AllowedRunbookPatterns für die USSupporters hinzu
3. Ändern Sie die TargetEntityGroups
   1. Die All-Users-Gruppe muss die Rolle USSupporters mit einem leeren Wert beschränken (hier wird keine Entra-Gruppen-Object ID hinzugefügt). Dies ist eine implizite Verweigerung!
   2. Die US-Users-Gruppe muss die Rolle USSupporters auf die Object ID der Entra-Gruppe der US-Supporter beschränken

<figure><img src="/files/6eb7fad72207e0326a2737a0082beed068c6d5b3" alt=""><figcaption><p>US-Support-Mitarbeiter darauf beschränken, nur US-Benutzer zu verwalten</p></figcaption></figure>

Nachfolgend das vollständige Beispiel für dieses Szenario:

```json
{
  // Portal-Berechtigung:
  // Runbook-Runner-Rolle: US Supporters

  // Gruppenmitgliedschaften:
  // 3e1e7540-7f0c-483c-b9bf-500342e2467c: All-Users
  // c603278c-cc36-4661-bb7a-eecb7ab079f9: US Supporters
  // 0f76d01e-cc6b-4553-bf1d-e4ccedd9c824: US Users

  "EnabledRunbookPatterns": [ // Allgemeine Aktivierung von Mail- und Sicherheits-Runbooks
    "rjgit-*_mail_*",
    "rjgit-*security*"
  ],
  "DisabledRunbookPatterns": [
    "*password*"
  ],

  "Roles": {
    "USSupporters": {
      "Groups": [
        "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
      ],
      "AllowedRunbookPatterns": [ // erlaubte Runbooks für diese Rolle - US Supporters
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // All-Users
      "RestrictRoles": {
        "USSupporters": [
          // im Allgemeinen keine Runbooks für irgendeinen US Supporter zulassen
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // US Users
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

Dieser Abschnitt enthält eine Liste von Runbooks, die als „planbar“ markiert werden. RealmJoin Port erlaubt das Zuweisen / Verwalten von Zeitplänen für diese Runbooks. Siehe [Runbook-Planung](/de/automatisierung/runbooks/scheduling.md).

Das folgende Beispiel beschreibt das Standardverhalten, wenn SchedulingEnabledRunbookPatterns nicht definiert ist:

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

### SchedulingDisabledRunbookPatterns

Dieser Abschnitt enthält eine Liste von Runbooks, die auf die schwarze Liste gesetzt werden, sodass sie nicht als „planbar“ markiert werden. RealmJoin Port erlaubt nicht das Zuweisen / Verwalten von Zeitplänen für diese Runbooks. Siehe [Runbook-Planung](/de/automatisierung/runbooks/scheduling.md).

Ein Runbook, das sowohl in SchedulingEnabledRunbookPatterns als auch in SchedulingDisabledRunbookPatterns vorhanden ist, wird **zu** planbar sein.

Standardmäßig sind keine Runbooks auf der schwarzen Liste. Das folgende Beispiel demonstriert nur die Syntax:

```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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.realmjoin.com/de/automatisierung/runbooks/runbook-permissions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
