> 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/automatizacao/connecting-azure-automation.md).

# Ligar o Azure Automation

Ligue uma Azure Automation Account ao RealmJoin Portal com o módulo RealmJoin PowerShell, para que o RealmJoin possa implementar, executar e monitorizar runbooks no seu tenant.

## Visão geral

Para permitir que o RealmJoin Portal disponibilize [runbooks](/pt/automatizacao/runbooks.md) para automatizar tarefas diárias, você deve conectar uma [Azure Automation](https://learn.microsoft.com/en-us/azure/automation/overview) Conta. Ela atua como o host dos seus runbooks e fornece as [permissões](/pt/automatizacao/connecting-azure-automation/azure-ad-roles-and-permissions.md) de que os runbooks precisam para funcionar no seu ambiente.

A Automation Account é configurada com o [módulo RealmJoin PowerShell](/pt/implementacao/onboarding-realmjoin-portal/advanced-setup.md). O Portal gera um comando pronto para copiar — não há nenhum registo de aplicação a criar nem segredo de cliente para gerir.

{% hint style="info" %}
Os runbooks já estão configurados para o seu tenant com o legado **RealmJoin Runbook Management** registo de aplicação? Então veja [Mudança para a aplicação gerida da RealmJoin](/pt/automatizacao/connecting-azure-automation/managed-app-migration.md). Mantém a sua Automation Account e os seus runbooks e remove o segredo de cliente por tenant.
{% endhint %}

## Considerações

Da Automation Account [Managed Identity](https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview) requer extensas [permissões](/pt/automatizacao/connecting-azure-automation/azure-ad-roles-and-permissions.md) no seu ambiente, como a capacidade de modificar objetos de grupo ou de utilizador no Entra ID ou gerir caixas de correio no Exchange Online. Limite o acesso administrativo a esta conta para evitar o uso indevido destes privilégios.

Ao usar uma Automation Account existente, note que o RealmJoin Portal cria, atualiza e remove automaticamente runbooks provenientes do [repositório online partilhado de runbooks](https://github.com/realmjoin/realmjoin-runbooks). Esta funcionalidade pode não ser suportada numa Automation Account existente. Se não tiver a certeza, recomendamos criar uma Azure Automation Account dedicada para os runbooks RealmJoin — o que o comando de configuração faz por si.

## O que a configuração implementa

A execução do comando de configuração cria:

* O **RealmJoin Azure Resources** service principal no seu tenant Entra ID (se ainda não existir)
* Uma **Automation Account** com uma managed identity atribuída pelo sistema, na região do resource group — ou a sua Automation Account existente, se indicar uma
* **Contributor** para o service principal RealmJoin, com âmbito dessa Automation Account, para que o RealmJoin possa sincronizar e iniciar runbooks
* O **permissões de aplicação** para a managed identity incluída no módulo — Microsoft Graph, Office 365 Exchange Online, Windows Defender ATP e SharePoint Online

O RealmJoin autentica-se no Azure com a sua própria aplicação multi-tenant. Não é criado nenhum registo de aplicação nem segredo de cliente no seu tenant, e o RealmJoin não recebe permissões fora dessa Automation Account.

{% hint style="warning" %}
Da managed identity **funções de diretório do Entra ID** — Intune Administrator, Exchange Administrator, User Administrator e assim por diante — não são **não** atribuídas pelo comando de configuração. Ainda têm de ser concedidas separadamente, veja [Concessão de funções e permissões](/pt/automatizacao/connecting-azure-automation/azure-ad-roles-and-permissions.md#granting-roles-and-permissions). Sem elas, grande parte dos runbooks partilhados não funcionará.
{% endhint %}

## Pré-requisitos

### No RealmJoin Portal

* Uma função que concede acesso à área de Definições (`CanReadSettingsDetails`, veja [Permissões disponíveis](/pt/administracao-e-definicoes/permission/custom-roles/available-permissions.md)). A página de definições gera o comando de configuração, incluindo um token de integração de curta duração.

### No Azure

* Uma subscrição Azure e um **grupo de recursos existente** para implementar — o módulo não cria o resource group. Recomenda-se um resource group separado para a Automation Account.
* Opcionalmente, uma Automation Account existente. Se não indicar uma, será criada uma conta para si.

### Na máquina que executa o PowerShell

* **PowerShell 5.1** ou posterior (Windows PowerShell ou PowerShell 7)
* Acesso à [PowerShell Gallery](https://www.powershellgallery.com/packages/RealmJoin) para instalar o módulo RealmJoin
* O `Az.Accounts`, `Az.Resources` e `Az.Automation` módulos — o módulo RealmJoin instala-os automaticamente nas versões fixadas, para o utilizador atual

### Permissões da conta com que inicia sessão

* **Microsoft Entra ID:** permissão para criar service principals **e para conceder permissões de aplicação** — a configuração atribui funções de aplicação do Graph, Exchange, Defender e SharePoint à managed identity. Na prática, isto significa *Administrador global* ou *Administrador de funções privilegiadas*.
* **Subscrição Azure:** permissão para implementar no resource group **e** para criar atribuições de função nele — por exemplo *Proprietário*, ou *Contributor* combinado com *Administrador de acesso de utilizador* / *Administrador de controlo de acesso baseado em funções*.
* O início de sessão acontece através de `Connect-AzAccount`, que usa a **Azure PowerShell** aplicação própria da Microsoft. Os tenants que restringem o consentimento do utilizador podem ter de conceder primeiro consentimento de administrador a essa aplicação.

{% hint style="warning" %}
Execute o comando numa **sessão local recém-aberta de** PowerShell e evite **Azure Cloud Shell**. O módulo RealmJoin requer versões exatas dos `Az.*` módulos. Se já estiver carregada uma versão diferente na sessão — o que normalmente acontece no Cloud Shell — o módulo pára com um conflito de versões que só pode ser resolvido ao abrir uma nova sessão.
{% endhint %}

## Configuração

{% stepper %}
{% step %}

#### Prepare o resource group

No Azure Portal, crie ou escolha o resource group que deve conter a Automation Account. Anote o respetivo nome e o ID da subscrição em que se encontra.

Se quiser usar uma **existente** Automation Account, anote também o respetivo nome.
{% endstep %}

{% step %}

#### Copie o comando do RealmJoin Portal

No RealmJoin Portal, vá para **Definições → Runbooks** (<https://portal.realmjoin.com/settings/runbooks-configuration>).

A página indica que a configuração dos runbooks é gerida através do módulo RealmJoin PowerShell e mostra um bloco de comandos. Use o **Copiar** botão para o copiar.

```powershell
$latest = [version](Find-Module RealmJoin -Repository PSGallery -ErrorAction Stop).Version
if (-not (Get-Module -ListAvailable RealmJoin | Where-Object Version -ge $latest)) {
    Install-Module RealmJoin -Force -AllowClobber -ErrorAction Stop
}
Import-Module RealmJoin -Force
Set-RJAutomationAccount -Token "<Token>" 6>&1
```

{% hint style="info" %}
**Sobre `6>&1`:** estes comandos reportam o seu progresso no stream de informações do PowerShell. A `6>&1` redireção mostra essa saída na consola — sem ela não verá quaisquer mensagens de progresso.
{% endhint %}
{% endstep %}

{% step %}

#### Adicione os parâmetros de destino

`Set-RJAutomationAccount` precisa de saber onde implementar. Complete a última linha antes de o executar:

```powershell
Set-RJAutomationAccount -ResourceGroupName "rg-realmjoin" -SubscriptionId "<SubscriptionId>" -Token "<Token>" 6>&1
```

* `-ResourceGroupName` é obrigatório. Se o omitir, o PowerShell pedir-lho-á.
* `-SubscriptionId` é opcional — sem ele, é usada a subscrição do seu contexto atual do Azure, e será-lhe pedido que escolha se houver várias disponíveis.
* `-AutomationAccountName` é opcional. Passe-o para definir o nome de uma nova Automation Account ou para usar uma **existente** Automation Account; caso contrário, será criada uma nova com um nome gerado.

{% hint style="warning" %}
Apontar o comando para uma Automation Account existente também confirma as definições que o RealmJoin espera nela: uma managed identity atribuída pelo sistema, o SKU Basic e acesso de rede público. Verifique se isso corresponde aos seus requisitos antes de reutilizar uma conta.
{% endhint %}
{% endstep %}

{% step %}

#### Execute o comando

Cole o bloco numa nova sessão do PowerShell e execute-o. O token é válido durante cerca de uma hora — se tiver expirado, volte a carregar a página de definições e copie novamente o comando.

Será solicitado que inicie sessão com `Connect-AzAccount`. Se a sua conta tiver acesso a vários tenants ou subscrições, o módulo pede-lhe para escolher.

A implementação decorre em três passos — service principal, Automation Account, permissões — e comunica cada recurso à medida que é criado. Uma única execução demora normalmente alguns minutos.

{% hint style="info" %}
Quer ver primeiro o que aconteceria? Acrescente `-WhatIf` para uma pré-visualização What-If do Azure Resource Manager. Note que iniciar sessão e instalar os `Az` módulos continua a acontecer, porque a pré-visualização precisa de ambos.
{% endhint %}

{% hint style="info" %}
**Terminar sessão depois:** o início de sessão no Azure mantém-se ativo depois de o comando terminar. Quando terminar, execute `Disconnect-AzAccount` para terminar sessão na sessão existente.
{% endhint %}
{% endstep %}

{% step %}

#### Atribua as funções do Entra ID à managed identity

A configuração concede à managed identity as suas permissões de aplicação, mas não as suas funções de diretório do Entra ID. Atribua-as agora — veja [Concessão de funções e permissões](/pt/automatizacao/connecting-azure-automation/azure-ad-roles-and-permissions.md#granting-roles-and-permissions) para a lista atual e um script que o faz.

O object ID da managed identity é mostrado no Azure Portal na Automation Account, em Definições da conta > Identidade.

<figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F4ecZSM3NW9PWJJlaNmR4%2Fimage.png?alt=media&amp;token=e5d5b56b-50f3-4f35-a41b-7cb4230dd3f3" alt=""><figcaption><p>Identidade gerida da Automation Account</p></figcaption></figure>
{% endstep %}

{% step %}

#### Verifique no Portal e inicie a primeira sincronização

Volte a **Definições → Runbooks** e selecione **Atualizar**. O RealmJoin deteta a nova configuração e inicia a importação inicial dos runbooks. Mantenha a página aberta até a sincronização terminar.

A subscrição, o resource group, o nome da Automation Account e a localização são agora apresentados apenas para leitura em **ligação ao Azure** — passam a ser mantidos pelo módulo PowerShell a partir de agora.
{% endstep %}
{% endstepper %}

## Definições que gere no Portal

Duas definições continuam editáveis em **Definições → Runbooks** após a configuração:

* **Branch** — o branch do [repositório partilhado de runbooks](https://github.com/realmjoin/realmjoin-runbooks) que pretende seguir. A configuração define isto para `production`, que é a escolha certa a menos que tenha um motivo para divergir.
* **Ativar sincronização do Hybrid Runbook Worker** e o grupo de workers a usar, veja [Hybrid Runbook Worker](/pt/automatizacao/runbooks/hybrid-runbook-worker.md). O grupo tem de estar registado na Automation Account antes de poder ser selecionado aqui.

Guardar qualquer um deles desencadeia uma sincronização dos runbooks.

Se mais tarde encontrar problemas de configuração ou de permissões, o **Mostrar cmdlet** botão em ligação ao Azure traz novamente o comando — voltar a executá-lo é seguro e apenas aplica o que está em falta.

## Configuração legada (registo de aplicação por tenant)

{% hint style="warning" %}
A configuração abaixo cria um **RealmJoin Runbook Management** registo de aplicação com um segredo de cliente no seu tenant. Está documentada apenas para referência em tenants que foram configurados desta forma no passado. Não a use para novas configurações — siga a [Configuração](#setup) acima, ou [mudar uma configuração existente para a aplicação gerida](/pt/automatizacao/connecting-azure-automation/managed-app-migration.md).
{% endhint %}

<details>

<summary>Mostrar a configuração legada</summary>

Neste caminho, a Automation Account foi criada manualmente no Azure Portal, as suas permissões foram atribuídas com dois scripts externos e o RealmJoin autenticava-se com um registo de aplicação por tenant e um segredo de cliente.

**Parte 1 — Criar uma Azure Automation Account**

1. Navegue até ao seu [Azure Portal > Automation Accounts](https://portal.azure.com/#create/Microsoft.AutomationAccount) e crie uma nova Automation Account.
2. No separador Basics, escolha a sua Subscription, Resource Group, Automation Account Name e Region.
3. No separador Advanced, garanta que System Assigned Managed Identity está ativado.
4. Selecione Review + Create e crie a sua Automation Account.
5. Navegue até ao resource group que contém a Automation Account e, no separador IAM, atribua à Automation Account a função Contributor.

![Criação da Automation Account](https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FqjBLc2zH3XCCqfAViEsU%2Fimage.png?alt=media\&token=257816e0-eb8a-478c-973f-fb288324d8c8)

![Ativar a managed identity atribuída pelo sistema](https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FM9N3OxNzrzQXFxSaKIpP%2Fimage.png?alt=media\&token=1e7c4d5b-d604-415b-89e0-4816a7f04a26)

**Parte 2 — Atribuir permissões à Automation Account**

As permissões da managed identity não podem ser concedidas através do Azure Portal. O [approle-and-directoryrole-granter](https://github.com/Workplace-Foundation/approle-and-directoryrole-granter) scripts atribuem tanto as permissões de aplicação como as funções do Entra ID a partir dos ficheiros JSON publicados no [repositório de runbooks](https://github.com/realmjoin/realmjoin-runbooks/tree/production/docs/other/json):

```powershell
. .\\GrantAppPermToEntApp.ps1 -enterpriseAppObjId "<ManagedIdentityObjectId>" -permissionsTemplate .\\AllRealmJoinRunbooks_collected_permissions.json
. .\\AssignAzureADRoleToEntApp.ps1 -objectId "<ManagedIdentityObjectId>" -rolesTemplate .\\AllRealmJoinRunbooks_collected_rbacroles.json
```

**Parte 3 — Criar o service principal para o RealmJoin**

No Portal, em Definições > Runbooks, o Tenant ID, Subscription ID e Resource Group foram introduzidos primeiro; a página depois mostrou um excerto de Azure CLI para executar, que criou o **RealmJoin Runbook Management** registo de aplicação com direitos de Contributor no resource group:

```
az provider register --namespace Microsoft.Automation
az ad sp create-for-rbac -n "RealmJoin Runbook Management" --role contributor --scopes /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroup>
```

**Parte 4 — Concluir o assistente**

De volta ao Portal, o `appId` e `password` dessa saída foram introduzidos juntamente com o nome da Automation Account, a branch do repositório partilhado de runbooks (`production`) e a localização da Automation Account. Guardar iniciou a importação inicial dos runbooks.

![Ligação da Automation Account no RealmJoin Portal](https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FA0X3M2c9d13pxVt87Pf8%2Fimage.png?alt=media\&token=8e2f2b18-c3b1-4704-8cc8-eb4d43297dd1)

</details>


---

# 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/pt/automatizacao/connecting-azure-automation.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.
