> 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/pt/automacao/runbooks/runbook-permissions.md).

# Permissões de Runbook

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

## Âmbito

Isto aborda como conceder/negar acesso a determinados runbooks num tenant do Azure. Se estiver à procura de respostas sobre quais permissões da MS Graph API são necessárias para executar uma determinada ação como um runbook, consulte os nossos [requisitos](/pt/automacao/connecting-azure-automation/azure-ad-roles-and-permissions.md).

## Visão geral

"Runbook Permissions" define a visibilidade dos runbooks para determinados utilizadores. Alguns runbooks também podem ser bloqueados/ocultados globalmente.

Tal como as [Personalizações de Runbook](/pt/automacao/runbooks/runbook-customization.md), definir estas 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

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

## Sintaxe da configuração

### Nomes dos runbooks

Os runbooks são referenciados pelos seus nomes, como visto na Conta de Automatização do Azure, por exemplo `rjgit-group_general_remove-group`.

Podem ser usados wildcards ('\*') para corresponder a vários runbooks. Podem ser usados vários wildcards na mesma string, por exemplo `rjgit-*_security_*`. Isto abrangeria todos os seguintes exemplos:

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

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

### Entra ID Groups

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

## Estrutura JSON e exemplo

Vamos construir um exemplo completo de configuração, passo a passo.

Uma configuração JSON é composta por várias secções, mas todas as secções são opcionais e podem ser omitidas.

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

### EnabledRunbookPatterns

Esta secção contém uma lista de runbooks autorizados a ser usados. Se esta secção for omitida, todos os runbooks ficam ativados/autorizados por predefinição.

Se definir esta secção, então apenas os runbooks mencionados nesta secção poderão ser usados por qualquer função / suporte e administrador.

#### Exemplo

* Permitir apenas runbooks individuais e específicos, fornecendo o nome completo

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

  `rjgit-device_*`
* Permitir todos os runbooks partilhados de utilizador

  `rjgit-user_*`
* Permitir todos os runbooks específicos do cliente (locais), relacionados com utilizadores

  `user_*`

Isto, implicitamente, deixa de fora muitos runbooks baseados em grupos e todos os runbooks baseados em org. Tenha atenção.

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

### DisabledRunbookPatterns

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

As entradas nesta secção têm prioridade sobre as entradas em [EnabledRunbookPatterns ](#enabledrunbookpatterns)- os runbooks serão ocultados/não estarão disponíveis para ninguém neste tenant.

#### Exemplo

Vamos reutilizar a `EnabledRunbookPatterns` secção anterior.

* Desativar todos os runbooks partilhados (`rjgit-`) na `segurança` categoria.

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

### Funções

Nesta secção pode atribuir uma lista de runbooks a um grupo do Entra ID. Isto permite definir várias funções de suporte/operador no seu tenant.

Se esta secção for omitida, todo o suporte e administradores do RealmJoin têm acesso a todos os runbooks indicados nas secções anteriores.

{% hint style="warning" %}
Se estiver ativado, todos os utilizadores que não pertençam a uma função não verão quaisquer runbooks.
{% endhint %}

#### Exemplo

Continuando com o que temos, vamos criar uma função de suporte para dispositivos `DeviceAdmin` e uma função de suporte de utilizadores `UserAdmin`.

Aplicaremos essas funções a vários grupos do Entra ID e, para cada função, daremos uma lista de runbooks permitidos. Tenha atenção - isto restringirá a função de suporte de utilizadores apenas a um pequeno conjunto de runbooks.

Vamos adicionar comentários ("//") ao lado do ID de objeto do grupo que ajudem o leitor fornecendo os nomes do grupo do 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 equipa
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // Grupo AAD de Suporte de Utilizadores
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  }
}
```

Agora a `UserAdmin` função pode:

* atribuir licenças a todos os utilizadores no seu tenant
* modificar os endereços de e-mail de todos os utilizadores no seu tenant

O `DeviceAdmin` a função pode

* apagar qualquer dispositivo no seu tenant

### TargetEntityGroups

Talvez tenha alguns utilizadores VIP cruciais. Não deve ser possível para qualquer membro do suporte apagar o dispositivo de um VIP ou modificar o endereço de e-mail de um VIP. Podemos usar "direcionamento" para restringir funções em utilizadores críticos a equipas dedicadas.

"Devices" serão direcionados pelo respetivo utilizador principal/atribuído, e não pelo objeto do dispositivo no Entra ID. Isto permite manter um modelo de grupos puramente baseado em utilizadores.

Assumimos que existem grupos do Entra ID que contêm utilizadores VIP críticos. Usando esta secção, podemos delimitar cuidadosamente algumas funções e runbooks mais críticos para estes grupos específicos do Entra ID (alvos).

Obviamente, se omitir esta secção, todos os utilizadores/grupos/dispositivos no seu tenant são tratados de forma igual.

Se definir TargetEntityGroups, isso não deverá ter qualquer impacto em qualquer outro grupo não mencionado na secção.

#### Exemplo completo

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

Introduzimos um novo grupo do Entra ID `4444c0af-c217-41e9-b790-3043788f4444` que contém pessoal de suporte que foi aprovado para administrar utilizadores VIP. Este pessoal de suporte também deve ter todas as outras permissões básicas de suporte, por isso iremos adicioná-los às funções existentes.

"Restringir" uma função não concederá novas funções a um membro do 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 equipa
        "4444c0af-c217-41e9-b790-3043788f4444"  // Equipa de Suporte VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // Grupo AAD de Suporte de Utilizadores
        "4444c0af-c217-41e9-b790-3043788f4444"  // Equipa de Suporte VIP
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // Utilizadores VIP - Trate com cuidado!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Suporte VIP
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // Suporte VIP
        ]
      }
    }
  }
}
```

#### **Exemplo: Restringir o pessoal de suporte dos EUA para gerir apenas utilizadores dos EUA**

Neste cenário, temos pessoal de suporte baseado nos EUA que só deve gerir utilizadores localizados nos EUA. Para impor esta restrição:

* Crie uma regra de permissão que explicitamente **nega** aos suportes dos EUA a capacidade de executar runbooks em **todos os utilizadores**.
* Adicione uma regra de exceção que especificamente **permite** a execução de runbooks apenas para **utilizadores dos EUA**.

Isto garante que os suportes dos EUA têm permissões limitadas estritamente ao público-alvo pretendido (utilizadores dos EUA) e evita interações acidentais com utilizadores fora deste âmbito.

**Implementação**

1. Um grupo Entra para Runbook Runners deve ser atribuído no Portal do RealmJoin
   1. Definições > Permissões > Permissões de Runbook Runner
   2. O grupo Entra dos suportes dos EUA deve ser membro do grupo Runbook Runners para permitir a operação geral de runbooks no Portal do RealmJoin.
2. Adicionar uma nova função em Definições > Permissões de Runbook
   1. Na secção Funções adicione a função USSupporters com o respetivo grupo Entra (ID de objeto do grupo)
   2. Adicione AllowedRunbookPatterns para os USSupporters
3. Modifique os TargetEntityGroups
   1. O grupo All-Users deve restringir a função USSupporters com um valor vazio (nenhum ID de objeto de grupo Entra é adicionado aqui). Trata-se de uma negação implícita!
   2. O grupo US Users deve restringir a função USSupporters ao ID de objeto do grupo Entra dos suportes dos EUA

<figure><img src="/files/7fdbf654093beb11ad1c8eeb45357011619ffa00" alt=""><figcaption><p>Restringir o pessoal de suporte dos EUA a gerir apenas utilizadores dos EUA</p></figcaption></figure>

Abaixo, o exemplo completo para este cenário:

```json
{
  // Permissão do portal:
  // Função do Runbook Runner: US Supporters

  // Membros do grupo:
  // 3e1e7540-7f0c-483c-b9bf-500342e2467c: Todos os utilizadores
  // c603278c-cc36-4661-bb7a-eecb7ab079f9: Suportes dos EUA
  // 0f76d01e-cc6b-4553-bf1d-e4ccedd9c824: Utilizadores dos EUA

  "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" // Suportes dos EUA
      ],
      "AllowedRunbookPatterns": [ // runbooks permitidos para esta função - US Supporters
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // Todos os utilizadores
      "RestrictRoles": {
        "USSupporters": [
          // geralmente, não permita Runbooks para quaisquer US Supporters
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // Utilizadores dos EUA
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // Suportes dos EUA
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

Esta secção contém uma lista de runbooks que serão marcados como "agendáveis". O Portal do RealmJoin permitirá atribuir / gerir agendamentos para estes runbooks. Consulte [Agendamento de Runbooks](/pt/automacao/runbooks/scheduling.md).

O exemplo seguinte descreve o comportamento predefinido se SchedulingEnabledRunbookPatterns não estiver definido:

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

### SchedulingDisabledRunbookPatterns

Esta secção contém uma lista de runbooks que serão colocados na lista negra para não serem marcados como "agendáveis". O Portal do RealmJoin não permitirá atribuir / gerir agendamentos para estes runbooks. Consulte [Agendamento de Runbooks](/pt/automacao/runbooks/scheduling.md).

Um runbook presente tanto em SchedulingEnabledRunbookPatterns como em SchedulingDisabledRunbookPatterns **não** será agendável.

Por predefinição, nenhum runbook é colocado na lista negra. O exemplo seguinte apenas demonstra a sintaxe:

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