# Permissões do Runbook

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

## Âmbito

Isto aborda como conceder/negar acesso a determinados runbooks em um Tenant do Azure. Se você está procurando respostas sobre quais permissões da API MS Graph são necessárias para executar uma determinada ação como um runbook, por favor, dê uma olhada em nossos [requisitos](/pt/automacao/connecting-azure-automation/azure-ad-roles-and-permissions.md).

## Overview

"Runbook Permissions" definem a visibilidade dos runbooks para determinados usuários. Alguns runbooks também podem ser bloqueados/ocultados globalmente.

Assim como as [Runbook Customizations](/pt/automacao/runbooks/runbook-customization.md), definir essas permissões é feito fornecendo uma configuração em formato JSON como administrador do RealmJoin no portal web do RealmJoin em <https://portal.realmjoin.com/settings/runbooks-permissions> .

### Sobre este guia

Faremos uma breve descrição da sintaxe e depois construiremos um exemplo completo passo a passo. Sinta-se à vontade para ir diretamente ao exemplo completo e começar a partir de [lá](#targetentitygroups).

## Sintaxe da configuração

### Nomes dos runbooks

Os runbooks são referenciados pelos seus nomes, como vistos na Azure Automation Account, por exemplo `rjgit-group_general_remove-group`.

Curingas ('\*') podem ser usados para corresponder a vários runbooks. Vários curingas podem ser usados na mesma string, por exemplo `rjgit-*_security_*`. Isso corresponderia a todos os seguintes exemplos:

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

O prefixo `rjgit-` indica runbooks importados do nosso repositório público no GitHub. Runbooks específicos de cliente não têm prefixo, por exemplo `user_userinfo_custom-runbook`

### Entra ID Groups

Os grupos Entra ID serão referenciados usando seu Object ID, como `91688d11-9a34-42cd-8d1e-ce617d6c1234`. Atualmente, apenas grupos de segurança podem ser usados.

## Estrutura e exemplo JSON

Construiremos um exemplo completo de configuração passo a passo.

Uma configuração JSON consiste em várias seções, mas todas as seções são opcionais e podem ser omitidas.

É permitido adicionar comentários usando o prefixo "//".

### EnabledRunbookPatterns

Esta seção contém uma lista de runbooks permitidos para uso. Se esta seção for omitida, todos os runbooks ficam ativados/permitidos por padrão.

Se você definir esta seção, então apenas os runbooks mencionados nela poderão ser usados por qualquer função / suporte e administrador.

#### Exemplo

* Permitir apenas determinados runbooks individuais informando o nome completo deles

  `rjgit-group_general_remove-group`
* Permitir todos os runbooks relacionados a dispositivos do nosso repositório compartilhado

  `rjgit-device_*`
* Permitir todos os runbooks compartilhados de usuários

  `rjgit-user_*`
* Permitir todos os runbooks específicos do cliente (locais), relacionados a usuários

  `user_*`

Isso implicitamente exclui muitos runbooks baseados em grupos e todos os runbooks baseados em org. Esteja ciente.

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

### DisabledRunbookPatterns

Uma lista de runbooks globalmente desativados / proibidos. Se esta seção for omitida ou estiver vazia, todos os runbooks ativados (fornecidos via [EnabledRunbookPatterns](#enabledrunbookpatterns)) podem ser usados.

As entradas nesta seção têm prioridade sobre as entradas em [EnabledRunbookPatterns ](#enabledrunbookpatterns)- os runbooks ficarão ocultos/não poderão ser usados por ninguém neste Tenant.

#### Exemplo

Reutilizaremos a `EnabledRunbookPatterns` seção de antes.

* Desativar todos os runbooks compartilhados (`rjgit-`) no `security` categoria.

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

### Funções

Nesta seção, você pode atribuir uma lista de runbooks a um grupo Entra ID. Isso permite definir múltiplas funções de suporte/operador no seu Tenant.

Se esta seção for omitida, todo o suporte e administradores do RealmJoin terão acesso a todos os runbooks fornecidos nas seções anteriores.

{% hint style="warning" %}
Se ativado, todos os usuários que não pertencerem a uma função não verão nenhum runbook.
{% endhint %}

#### Exemplo

Continuando com o que temos, vamos criar uma função de suporte a dispositivos `DeviceAdmin` e uma função de suporte a usuários `UserAdmin`.

Aplicaremos essas funções a vários grupos Entra ID e, para cada função, daremos uma lista de runbooks permitidos. Esteja ciente - isso restringirá a função de suporte a usuários a apenas um pequeno conjunto de runbooks.

Vamos adicionar comentários ("//") ao lado do object id do grupo que ajudam o leitor fornecendo os nomes dos grupos 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º grupo AAD de suporte a dispositivos
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2º grupo AAD de suporte a dispositivos - outra equipe
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // Grupo AAD de suporte a usuários
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  }
}
```

Agora a `UserAdmin` função pode:

* atribuir licenças a todos os usuários no seu Tenant
* modificar os endereços de e-mail de todos os usuários no seu Tenant

O `DeviceAdmin` a função pode

* apagar qualquer dispositivo no seu Tenant

### TargetEntityGroups

Talvez você tenha alguns usuários VIP cruciais. Não deve ser possível que qualquer membro do suporte apague o dispositivo de um VIP ou modifique o endereço de e-mail de um VIP. Podemos usar "targeting" para restringir funções em usuários críticos a equipes dedicadas.

"Devices" serão direcionados pelo seu usuário principal/atribuído, mas não pelo objeto do dispositivo no Entra ID. Isso permite manter um modelo de grupo puramente baseado em usuário.

Assumimos que existem grupos Entra ID que contêm usuários VIP críticos. Usando esta seção, podemos delimitar cuidadosamente algumas funções e runbooks mais críticos para esses grupos Entra ID específicos (targets).

Obviamente, se você omitir esta seção, todos os usuários/grupos/dispositivos no seu Tenant serão tratados como iguais.

Se você definir TargetEntityGroups, isso não deve ter impacto em nenhum outro grupo não mencionado na seção.

#### Exemplo completo

Suponha o grupo `0000c0af-c217-41e9-b790-3043788f0000` é o nosso grupo de usuários VIP.

Introduzimos um novo grupo Entra ID `4444c0af-c217-41e9-b790-3043788f4444` contendo a equipe de suporte que foi aprovada para administrar usuários VIP. Essa equipe de suporte também deve ter todas as outras permissões básicas de suporte, então os adicionaremos às funções existentes.

"Restringir" uma função não concederá novas funções a um suporte.

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1º grupo AAD de suporte a dispositivos
        "5555c0af-c217-41e9-b790-3043788f1234", // 2º grupo AAD de suporte a dispositivos - outra equipe
        "4444c0af-c217-41e9-b790-3043788f4444"  // Equipe de suporte VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // Grupo AAD de suporte a usuários
        "4444c0af-c217-41e9-b790-3043788f4444"  // Equipe de suporte VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // Usuários VIP - Manuseie com cuidado!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Suporte VIP
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Suporte VIP
        ]
      }
    }
  }
}
```

#### **Exemplo: Restringindo a equipe de suporte dos EUA para gerenciar apenas usuários dos EUA**

Neste cenário, temos uma equipe de suporte baseada nos EUA que deve gerenciar apenas usuários localizados nos EUA. Para impor essa restrição:

* Crie uma regra de permissão que explicitamente **nega** aos apoiadores dos EUA a capacidade de executar Runbooks em **todos os usuários**.
* Adicione uma regra de exceção que especificamente **permite** a execução de Runbooks apenas para **usuários dos EUA**.

Isso garante que os apoiadores dos EUA tenham permissões estritamente limitadas ao público-alvo pretendido (usuários dos EUA) e impede interações acidentais com usuários fora desse escopo.

**Implementação**

1. Um grupo Entra para executores de Runbook deve ser atribuído no Portal Realm Join
   1. Settings > Permissions > Runbook Runner Permissions
   2. O grupo Entra de apoiadores dos EUA deve ser membro do grupo Runbook Runners para permitir a operação geral de Runbook no Portal RealmJoin.
2. Adicionando uma nova função em Settings > Runbook Permissions
   1. Na seção Roles, adicione a função USSupporters com seu grupo Entra (group object ID)
   2. Adicione AllowedRunbookPatterns para os USSupporters
3. Modifique o TargetEntityGroups
   1. O grupo All-Users deve restringir a função USSupporters com um valor vazio (nenhum object ID de grupo Entra é adicionado aqui). Isso é uma negação implícita!
   2. O grupo US Users deve restringir a função USSupporters ao object ID do grupo Entra dos US Supporters

<figure><img src="/files/7fdbf654093beb11ad1c8eeb45357011619ffa00" alt=""><figcaption><p>Restringindo a equipe de suporte dos EUA para gerenciar apenas usuários dos EUA</p></figcaption></figure>

Abaixo, o exemplo completo para este cenário:

```json
{
  // Permissão do portal:
  // Função do executador de runbook: US Supporters

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

  "EnabledRunbookPatterns": [ // Ativação geral de runbooks de e-mail e segurança
    "rjgit-*_mail_*",
    "rjgit-*security*"
  ],
  "DisabledRunbookPatterns": [
    "*password*"
  ],

  "Roles": {
    "USSupporters": {
      "Groups": [
        "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
      ],
      "AllowedRunbookPatterns": [ // Runbooks permitidos para esta função - US Supporters
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // All-Users
      "RestrictRoles": {
        "USSupporters": [
          // em geral, não permita Runbooks para quaisquer US Supporters
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // US Users
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

Esta seção contém uma lista de runbooks que serão marcados como "schedulable". O RealmJoin Port permitirá atribuir / gerenciar agendamentos para esses runbooks. Veja [Agendamento de Runbook](/pt/automacao/runbooks/scheduling.md).

O exemplo a seguir descreve o comportamento padrão se SchedulingEnabledRunbookPatterns não estiver definido:

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

### SchedulingDisabledRunbookPatterns

Esta seção contém uma lista de runbooks que serão colocados em lista de bloqueio para não serem marcados como "schedulable". O RealmJoin Port não permitirá atribuir / gerenciar agendamentos para esses runbooks. Veja [Agendamento de Runbook](/pt/automacao/runbooks/scheduling.md).

Um runbook presente em SchedulingEnabledRunbookPatterns e SchedulingDisabledRunbookPatterns **irá** será schedulable.

Por padrão, nenhum runbook está na lista de bloqueio. O exemplo a seguir apenas demonstra a sintaxe:

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


---

# Agent Instructions: 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/pt/automacao/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.
