> 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

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

## Ámbito

Esto aborda cómo conceder/negar acceso a ciertos runbooks en un tenant de Azure. 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).

## Descripción general

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

Como en las [Personalizaciones de Runbook](/es/automatizacion/runbooks/runbook-customization.md), definir estos permisos se hace 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éntase libre de 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 se ven en Azure Automation Account, 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 `prefijo rjgit-` indica 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`

### Entra ID Groups

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

## Estructura y ejemplo JSON

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 pueden omitirse.

Se permite añadir comentarios usando el prefijo "//".

### EnabledRunbookPatterns

Esta sección contiene una lista de runbooks autorizados para ser usados. Si se omite esta sección, todos los runbooks están habilitados/autorizados 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 de cliente (locales) relacionados con usuarios

  `user_*`

Esto omite implícitamente muchos runbooks basados en grupos y todos los basados en org. Téngalo en cuenta.

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

### DisabledRunbookPatterns

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

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

#### Ejemplo

Reutilizaremos la `EnabledRunbookPatterns` sección anterior.

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

```
{
  "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 los administradores de RealmJoin tendrán 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, creemos un rol de soporte para dispositivos `DeviceAdmin` y un rol de soporte de usuario `UserAdmin`.

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

Añadamos comentarios ("//") junto al ID de objeto 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": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1.er grupo AAD de soporte de dispositivos
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2.º grupo AAD de soporte de dispositivos - otro equipo
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // Grupo AAD de soporte de usuarios
      ],
      "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 del dispositivo en Entra ID. Esto permite ceñirse a un modelo de grupos puramente basado en usuarios.

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

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 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 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 asistente de soporte.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1.er grupo AAD de soporte de dispositivos
        "5555c0af-c217-41e9-b790-3043788f1234", // 2.º grupo AAD de soporte de dispositivos - otro equipo
        "4444c0af-c217-41e9-b790-3043788f4444"  // Equipo de soporte VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // Grupo AAD de soporte de usuarios
        "4444c0af-c217-41e9-b790-3043788f4444"  // Equipo de soporte VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // Usuarios VIP - ¡Trátelos con cuidado!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Soporte VIP
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Soporte VIP
        ]
      }
    }
  }
}
```

#### **Ejemplo: restringir al personal de soporte de EE. UU. para administrar 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 imponer esta restricción:

* Cree una regla de permiso que explícitamente **deniegue** a los asistentes de EE. UU. la capacidad de ejecutar runbooks en **todos los usuarios**.
* Añada una regla de excepción que específicamente **permita** la ejecución de runbooks solo para **usuarios de EE. UU.**.

Esto garantiza que los asistentes 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. Debe asignarse un grupo Entra de ejecutores de Runbook en el Portal de RealmJoin
   1. Ajustes > Permisos > Permisos de ejecutor de Runbook
   2. El grupo Entra de asistentes de EE. UU. debe ser miembro del grupo de ejecutores de Runbook para permitir la operación general de Runbook en el Portal de RealmJoin.
2. Añadiendo un nuevo rol en Ajustes > Permisos de Runbook
   1. En la sección Roles añada el rol USSupporters con su grupo Entra (ID de objeto del grupo)
   2. Añada AllowedRunbookPatterns para los USSupporters
3. Modifique los TargetEntityGroups
   1. El grupo All-Users debe restringir el rol USSupporters con un valor vacío (aquí no se añade ningún ID de objeto de grupo Entra). ¡Esto es una denegación implícita!
   2. El grupo US Users debe restringir el rol USSupporters al ID de objeto del grupo Entra de los asistentes de EE. UU.

<figure><img src="/files/fb99016a18cd960e182cad151187e762aa2fa993" alt=""><figcaption><p>Restringir al personal de soporte de EE. UU. para que administre solo usuarios de EE. UU.</p></figcaption></figure>

Debajo está el ejemplo completo para este escenario:

```json
{
  // Permiso del portal:
  // Rol de ejecutor de Runbook: asistentes de EE. UU.

  // Membresías de grupos:
  // 3e1e7540-7f0c-483c-b9bf-500342e2467c: Todos los usuarios
  // c603278c-cc36-4661-bb7a-eecb7ab079f9: asistentes de EE. UU.
  // 0f76d01e-cc6b-4553-bf1d-e4ccedd9c824: usuarios de EE. UU.

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

  "Roles": {
    "USSupporters": {
      "Groups": [
        "c603278c-cc36-4661-bb7a-eecb7ab079f9" // asistentes de EE. UU.
      ],
      "AllowedRunbookPatterns": [ // runbooks permitidos para este rol - asistentes de EE. UU.
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // Todos los usuarios
      "RestrictRoles": {
        "USSupporters": [
          // en general, no permitir runbooks para ningún asistente de EE. UU.
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // Usuarios de EE. UU.
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // asistentes de EE. UU.
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

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

El siguiente ejemplo describe el comportamiento predeterminado si no se definen SchedulingEnabledRunbookPatterns:

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

### SchedulingDisabledRunbookPatterns

Esta sección contiene una lista de runbooks que serán incluidos en la lista negra para que se marquen como "programables". Portal de RealmJoin no permitirá asignar/gestionar programaciones para estos runbooks. Vea [Programación de runbooks](/es/automatizacion/runbooks/scheduling.md).

Un runbook presente tanto en SchedulingEnabledRunbookPatterns como en SchedulingDisabledRunbookPatterns **no** será programable.

De forma predeterminada no se incluyen 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 dynamically by asking a question.

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

```
GET https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-permissions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
