> 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/es/automatizacion/runbooks/runbook-permissions.md).

# Permisos de Runbook

Cómo conceder o denegar acceso a determinados runbooks.

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

## Alcance

Esto aborda cómo conceder/denegar acceso a ciertos runbooks en un Azure tenant. Si busca respuestas sobre qué permisos de la API de MS Graph se necesitan para ejecutar una determinada acción como runbook, consulte nuestras [requisitos](/es/automatizacion/connecting-azure-automation/azure-ad-roles-and-permissions.md).

## Resumen

"Runbook Permissions" define la visibilidad de los runbooks para determinados usuarios. Algunos runbooks también pueden bloquearse/ocultarse globalmente.

Al igual que la [Personalizaciones del runbook](/es/automatizacion/runbooks/runbook-customization.md)definición de estos permisos se realiza proporcionando una configuración en formato JSON como administrador de RealmJoin en el portal web de RealmJoin en <https://portal.realmjoin.com/settings/runbooks-permissions> .

### Acerca de esta guía

Daremos una breve descripción de la sintaxis y luego construiremos un ejemplo completo paso a paso. Si lo desea, puede ir directamente al ejemplo completo y empezar desde [allí](#targetentitygroups).

## Sintaxis de configuración

### Nombres de runbooks

Los runbooks se referencian por sus nombres tal como aparecen en la cuenta de Azure Automation, por ejemplo `rjgit-group_general_remove-group`.

Se pueden usar comodines ('\*') para hacer coincidir varios runbooks. Se pueden usar varios comodines en la misma cadena, por ejemplo `rjgit-*_security_*`. Esto coincidiría con todos los siguientes ejemplos:

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

El prefijo `rjgit-` denota runbooks que se importan desde nuestro repositorio público de GitHub. Los runbooks específicos de clientes no tienen prefijo, por ejemplo `user_userinfo_custom-runbook`

### Grupos de Entra ID

Los grupos de Entra ID se referenciarán usando su Object ID, como `91688d11-9a34-42cd-8d1e-ce617d6c1234`. Actualmente, solo se pueden usar grupos de seguridad.

## Estructura JSON y ejemplo

Construiremos un ejemplo completo de configuración paso a paso.

Una configuración JSON consta de varias secciones, pero todas las secciones son opcionales y se pueden omitir.

Está permitido añadir comentarios usando el prefijo "//".

### EnabledRunbookPatterns

Esta sección contiene una lista de runbooks permitidos para su uso. Si se omite esta sección, todos los runbooks están habilitados/permitidos de forma predeterminada.

Si define esta sección, entonces solo los runbooks mencionados en esta sección podrán ser utilizados por cualquier rol / soporte y administrador.

#### Ejemplo

* Permitir solo ciertos runbooks individuales dando su nombre completo

  `rjgit-group_general_remove-group`
* Permitir todos los runbooks relacionados con dispositivos de nuestro repositorio compartido

  `rjgit-device_*`
* Permitir todos los runbooks compartidos de usuario

  `rjgit-user_*`
* Permitir todos los runbooks específicos del cliente (locales) relacionados con usuarios

  `user_*`

Esto omite implícitamente muchos runbooks basados en grupos y todos los basados en org. Tenga cuidado.

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

### DisabledRunbookPatterns

Una lista de runbooks que están globalmente deshabilitados / prohibidos. Si esta sección se omite o está vacía, todos los runbooks habilitados (proporcionados mediante [EnabledRunbookPatterns](#enabledrunbookpatterns)) son utilizables.

Las entradas de esta sección tienen prioridad sobre las entradas de [EnabledRunbookPatterns ](#enabledrunbookpatterns)- los runbooks estarán ocultos/no serán utilizables para nadie en este tenant.

#### Ejemplo

Reutilizaremos la `EnabledRunbookPatterns` sección de antes.

* Deshabilitar todos los runbooks compartidos (`rjgit-`) en la `seguridad` categoría.

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

### Roles

En esta sección puede asignar una lista de runbooks a un grupo de Entra ID. Esto permite definir múltiples roles de soporte/operador en su tenant.

Si se omite esta sección, todo el soporte y administradores de RealmJoin tienen acceso a todos los runbooks dados en las secciones anteriores.

{% hint style="warning" %}
Si está habilitado, todos los usuarios que no pertenezcan a un rol no verán ningún runbook.
{% endhint %}

#### Ejemplo

Continuando con lo que tenemos, vamos a crear un rol de soporte de dispositivos `DeviceAdmin` y un rol de soporte de usuarios `UserAdmin`.

Aplicaremos esos roles a varios grupos de Entra ID y, para cada rol, daremos una lista de runbooks permitidos. Tenga cuidado: esto restringirá el rol de soporte de usuarios a solo un pequeño conjunto de runbooks.

Vamos a añadir comentarios ("//") junto al object id del grupo que ayuden al lector proporcionando los nombres de los grupos de Entra ID.

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

Ahora el `UserAdmin` rol puede:

* asignar licencias a todos los usuarios de su tenant
* modificar las direcciones de correo electrónico de todos los usuarios de su tenant

El `DeviceAdmin` rol puede

* borrar cualquier dispositivo de su tenant

### TargetEntityGroups

Quizás tenga algunos usuarios VIP cruciales. No debería ser posible que cualquier personal de soporte borre el dispositivo de un VIP o modifique la dirección de correo electrónico de un VIP. Podemos usar "targeting" para restringir roles sobre usuarios críticos a equipos dedicados.

"Devices" se dirigirán por su usuario principal/asignado, pero no por el objeto de dispositivo en Entra ID. Esto permite ceñirse a un modelo de grupo puramente basado en usuarios.

Asumimos que existen grupos de Entra ID que contienen usuarios VIP críticos. Usando esta sección, podemos delimitar cuidadosamente algunos roles y runbooks más críticos para estos grupos específicos de Entra ID (targets).

Obviamente, si omite esta sección, todos los usuarios/grupos/dispositivos de su tenant se tratan por igual.

Si define TargetEntityGroups, no debería tener ningún impacto en ningún otro grupo no mencionado en la sección.

#### Ejemplo completo

Suponga que el grupo `0000c0af-c217-41e9-b790-3043788f0000` es nuestro grupo de usuarios VIP.

Introducimos un nuevo grupo de Entra ID `4444c0af-c217-41e9-b790-3043788f4444` que contiene al personal de soporte que ha sido aprobado para administrar usuarios VIP. Este personal de soporte también debería tener todos los demás permisos básicos de soporte, así que los añadiremos a los roles existentes.

"Restringir" un rol no otorgará nuevos roles a un técnico de soporte.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Grupos": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1st Device Support AAD Group
        "5555c0af-c217-41e9-b790-3043788f1234", // 2nd Device Support AAD Group - other team
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP Support Crew
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Grupos": [
        "1234c0af-c217-41e9-b790-3043788f1234", // User Support AAD Group
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP Support Crew
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // VIP Users - Treat with care!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP Support
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP Support
        ]
      }
    }
  }
}
```

#### **Ejemplo: restringir al personal de soporte de EE. UU. para que gestione solo usuarios de EE. UU.**

En este escenario, tenemos personal de soporte con sede en EE. UU. que solo debería gestionar usuarios ubicados en EE. UU. Para aplicar esta restricción:

* Crear una regla de permisos que explícitamente **deniega** a los técnicos de soporte de EE. UU. la capacidad de ejecutar Runbooks sobre **todos los usuarios**.
* Añadir una regla de excepción que específicamente **permite** la ejecución de Runbooks solo para **usuarios de EE. UU.**.

Esto garantiza que los técnicos de soporte de EE. UU. tengan permisos limitados estrictamente a su público objetivo previsto (usuarios de EE. UU.) y evita interacciones accidentales con usuarios fuera de este ámbito.

**Implementación**

1. Se debe asignar un grupo Entra de Runbook Runners en Realm Join Portal
   1. Configuración > Permisos > Permisos de Runbook Runner
   2. El grupo Entra de US Supporters debe ser miembro del grupo Runbook Runners para permitir la operación general de Runbooks en el Portal de RealmJoin.
2. Añadir un nuevo rol en Configuración > Permisos de Runbook
   1. En la sección Roles añada el rol USSupporters con su grupo de Entra (object ID del grupo)
   2. Añadir AllowedRunbookPatterns para USSupporters
3. Modificar TargetEntityGroups
   1. El grupo All-Users debe Restrict el rol USSupporters con un valor vacío (no se añade aquí ningún object ID de grupo Entra). ¡Esto es una denegación implícita!
   2. El grupo US Users debe Restrict el rol USSupporters al object ID del grupo Entra de US Supporters

<figure><img src="https://3832142177-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>Restringir al personal de soporte de EE. UU. para gestionar solo usuarios de EE. UU.</p></figcaption></figure>

A continuación, el ejemplo completo para este escenario:

```json
{
  // Permiso del portal:
  // Rol de ejecutor de Runbook: US Supporters

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

  "EnabledRunbookPatterns": [ // habilitación general de Runbooks de correo y seguridad
    "rjgit-*_mail_*",
    "rjgit-*security*"
  ],
  "DisabledRunbookPatterns": [
    "*password*"
  ],

  "Roles": {
    "USSupporters": {
      "Grupos": [
        "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
      ],
      "AllowedRunbookPatterns": [ // Runbooks permitidos para este rol - US Supporters
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // All-Users
      "RestrictRoles": {
        "USSupporters": [
          // en general, no permitir Runbooks para ningún US Supporters
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // US Users
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

Esta sección contiene una lista de runbooks que se marcarán como "programables". RealmJoin Port permitirá asignar / administrar programaciones para estos runbooks. Consulte [Programación de Runbook](/es/automatizacion/runbooks/scheduling.md).

El siguiente ejemplo describe el comportamiento predeterminado si SchedulingEnabledRunbookPatterns no está definido:

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

### SchedulingDisabledRunbookPatterns

Esta sección contiene una lista de runbooks que serán puestos en lista negra para que no se marquen como "programables". RealmJoin Port no permitirá asignar / administrar programaciones para estos runbooks. Consulte [Programación de Runbook](/es/automatizacion/runbooks/scheduling.md).

Un runbook presente tanto en SchedulingEnabledRunbookPatterns como en SchedulingDisabledRunbookPatterns **devolvería** será programable.

Por defecto, no hay runbooks en la lista negra. El siguiente ejemplo solo demuestra la sintaxis:

```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/es/automatizacion/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.
