> 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 Azure Tenant. Se procura respostas sobre quais permissões da API MS Graph são necessárias para executar uma determinada ação como um runbook, consulte o nosso [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. Certos runbooks também podem ser bloqueados/ocultados globalmente.

Tal como a [Runbook Customizations](/pt/automacao/runbooks/runbook-customization.md)a definição destas permissões é feita 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

Vamos dar uma breve descrição da sintaxe e depois construir um exemplo completo passo a passo. Sinta-se à vontade para ir diretamente para o exemplo completo e começar por [aí](#targetentitygroups).

## Sintaxe da configuração

### Nomes dos runbooks

Os runbooks são referenciados pelos seus nomes, tal como aparecem no Azure Automation Account, 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 cadeia, por exemplo `rjgit-*_security_*`. Isto corresponderia a todos os seguintes exemplos:

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

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

### Entra ID Groups

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

## Estrutura e exemplo JSON

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 permitidos para utilização. Se esta secção for omitida, todos os runbooks ficam ativados/permitidos 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 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 de utilizador partilhados

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

  `user_*`

Isto deixa implicitamente de fora muitos runbooks baseados em grupos e todos os baseados em org. Tenha em 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 (indicados através de [EnabledRunbookPatterns](#enabledrunbookpatterns)) podem ser utilizados.

As entradas nesta secçã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

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

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

```
{
  "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 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 a dispositivos `DeviceAdmin` e uma função de suporte a utilizadores `UserAdmin`.

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

Vamos adicionar comentários ("//") ao lado do object id do grupo que ajudem 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", // 1st Device Support AAD Group
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2nd Device Support AAD Group - other team
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // User Support AAD Group
      ],
      "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

A `DeviceAdmin` função pode

* apagar qualquer dispositivo no seu tenant

### TargetEntityGroups

Talvez tenha alguns utilizadores 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 utilizadores críticos a equipas dedicadas.

Os "Dispositivos" serão alvo pelo seu utilizador principal/atribuído, mas não pelo objeto do dispositivo no Entra ID. Isto permite manter um modelo de grupos puramente baseado em utilizadores.

Assumimos que existem grupos 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 Entra ID específicos (targets).

Obviamente, se omitir esta secção, todos os utilizadores/grupos/dispositivos no seu tenant são tratados por 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 Entra ID `4444c0af-c217-41e9-b790-3043788f4444` que contém colaboradores de suporte que foram aprovados para administrar utilizadores VIP. Estes colaboradores de suporte também devem ter todas as outras permissões básicas de suporte, por isso vamos adicioná-los às funções existentes.

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

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "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": {
      "Groups": [
        "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 - Tratar com cuidado!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP Support
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP Support
        ]
      }
    }
  }
}
```

#### **Exemplo: restringir a equipa de suporte dos EUA para gerir apenas utilizadores dos EUA**

Neste cenário, temos pessoal de suporte sediado 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 Supporters 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 Supporters dos EUA têm permissões estritamente limitadas ao público-alvo pretendido (utilizadores dos EUA) e evita interações acidentais com utilizadores fora deste âmbito.

**Implementação**

1. Um grupo Entra de Runbook Runners deve ser atribuído no Portal RealmJoin
   1. Definições > Permissões > Runbook Runner Permissions
   2. O grupo Entra dos Supporters dos EUA deve ser membro do Grupo Runbook Runners para permitir a operação geral de runbooks no Portal RealmJoin.
2. Adicionar uma nova função em Definições > Runbook Permissions
   1. Na secção Roles, adicione a função USSupporters com o respetivo grupo Entra (ID do objeto do grupo)
   2. Adicione AllowedRunbookPatterns para os USSupporters
3. Modifique o TargetEntityGroups
   1. O grupo All-Users deve Restrict the Role USSupporters com um valor vazio (não é adicionado aqui qualquer ID de objeto de grupo Entra). Esta é uma negação implícita!
   2. O grupo US Users deve Restrict the Role USSupporters para o ID de objeto do grupo Entra dos US Supporters

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

Abaixo está o exemplo completo para este cenário:

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

  // Filiações de grupo:
  // 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 dos runbooks de correio 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": [
          // geralmente, não permitir runbooks para quaisquer US Supporters
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // US Users
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

Esta secção contém uma lista de runbooks que serão marcados como "agendáveis". O Portal RealmJoin permitirá atribuir/gerir horários 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 serem marcados como "agendáveis". O Portal RealmJoin não permitirá atribuir/gerir horários para estes runbooks. Consulte [Agendamento de runbooks](/pt/automacao/runbooks/scheduling.md).

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

Por predefinição, nenhum runbook está bloqueado. O exemplo seguinte demonstra apenas 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, and the optional `goal` query parameter:

```
GET https://docs.realmjoin.com/pt/automacao/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.
