# Ligação ao Azure Automation

## Vista geral

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

Para permitir que o RealmJoin Portal forneça [runbooks ](https://docs.realmjoin.com/pt/automacao/runbooks)para automatizar tarefas diárias, você deve conectar uma [Azure Automation](https://learn.microsoft.com/en-us/azure/automation/overview) Account. Esta Automation Account atuará como host para os seus runbooks e fornecerá as [permissões](https://docs.realmjoin.com/pt/automacao/connecting-azure-automation/azure-ad-roles-and-permissions) necessárias para que os runbooks funcionem no seu ambiente.

## Considerações&#x20;

O [Managed Identity](https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview) da Automation Account requer amplas [permissões ](https://docs.realmjoin.com/pt/automacao/connecting-azure-automation/azure-ad-roles-and-permissions)no seu ambiente, como a capacidade de modificar objetos de grupo ou usuário 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, observe que o RealmJoin Portal cria, atualiza e remove automaticamente os 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 tiver dúvidas, recomendamos criar uma Azure Automation Account dedicada para os RealmJoin Runbooks.

## Pré-requisitos

* Privilégios de Global Administrator
* Acesso ao PowerShell com o [Az](https://learn.microsoft.com/en-us/powershell/azure/?view=azps-15.3.0) módulo ou [AZ CLI](https://learn.microsoft.com/en-us/cli/azure/?view=azure-cli-latest)
* Permissões de Contributor numa subscrição do Azure
* [Requisitos do runbook](https://docs.realmjoin.com/pt/automacao/connecting-azure-automation/azure-ad-roles-and-permissions)

## Instruções

{% stepper %}
{% step %}

### Criar uma Azure Automation Account

1. Navegue até o seu [Azure Portal > Automation Accounts](https://portal.azure.com/#create/Microsoft.AutomationAccount)&#x20;
2. Criar uma nova Automation Account
3. No separador Basics, escolha a Subscription, Resource Group, Automation Account Name e Região desejados<br>

   <figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FqjBLc2zH3XCCqfAViEsU%2Fimage.png?alt=media&#x26;token=257816e0-eb8a-478c-973f-fb288324d8c8" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
É recomendável um Resource Group separado para a sua Automation Account
{% endhint %}

4. No separador Advanced, certifique-se de que o System Assigned Managed Identity está ativado

   <figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F6EYSjUouHCtzNE99DYM8%2Fimage.png?alt=media&#x26;token=000d1f85-9ed0-458f-ae68-48b94f2dbf15" alt=""><figcaption></figcaption></figure>

5. Selecione Review + Create e crie a sua Automation Account

6. Navegue até ao Resource Group que contém a sua Azure Automation Account

7. No separador IAM, atribua a Azure Automation Account como Contributor
   {% endstep %}

{% step %}

### Atribuir Permissões à Azure Automation Account

Os runbooks partilhados do RealmJoin usam a identidade gerida atribuída pelo sistema da Azure Automation para interagir com o Entra ID, MS Graph API, etc.

As permissões da Managed Identity não podem atualmente ser concedidas através do Azure Portal. Use o Microsoft Graph ou o PowerShell para atribuir estas permissões.

1. Descarregue os seguintes scripts do PowerShell e ficheiros JSON para a mesma pasta. \
   O script atribuirá o conjunto completo de permissões exigido pelo RealmJoin. As funções e permissões podem ser revistas na [Requisitos](https://docs.realmjoin.com/pt/automacao/connecting-azure-automation/azure-ad-roles-and-permissions) secção e ajustadas conforme necessário nos ficheiros JSON.

{% tabs %}
{% tab title="GrantAppPermToEntApp.ps1" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/GrantAppPermToEntApp.ps1>" %}
{% endtab %}

{% tab title="AssignAzureADRoleToEntApp.ps1" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/AssignAzureADRoleToEntApp.ps1>" %}
{% endtab %}

{% tab title="RJvNextPermissions.json" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/RealmJoinVnext/RJvNextPermissions.json>" %}
{% endtab %}

{% tab title="RJvNextRoles.json" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/RealmJoinVnext/RJvNextRoles.json>" %}
{% endtab %}
{% endtabs %}

2. Anote o Object ID da Managed Identity da Azure Automation Account em Account Settings > Identity

   <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&#x26;token=e5d5b56b-50f3-4f35-a41b-7cb4230dd3f3" alt=""><figcaption></figcaption></figure>

3. Abra uma janela do PowerShell.

4. Navegue até à pasta que contém os ficheiros descarregados

```
cd c:\temp\myfolder
```

5. Desbloqueie os scripts, se necessário\
   ![](https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F2N1nXyV1f6allriXQ9Pb%2Fimage.png?alt=media\&token=e6009cd7-ec76-4af5-aa5c-037a92f958c7)
6. Atribua permissões do MS Graph à sua Azure Automation Account usando GrantAppPermToEntApp.ps1, substituindo xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx pelo Object ID da sua Automation Account

```
. .\GrantAppPermToEntApp.ps1 -enterpriseAppObjId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -permissionsTemplate .\RJvNextPermissions.json
```

7. Atribua funções de Administrador do Entra ID à sua Azure Automation Account usando AssignAzureADRoleToEntApp.ps1, substituindo xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx pelo Object ID da sua Automation Account

```
. .\AssignAzureADRoleToEntApp.ps1 -objectId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -rolesTemplate .\RJvNextRoles.json
```

8. A Azure Automation Account deve agora ter as permissões corretas para executar Runbooks<br>
   {% endstep %}

{% step %}

### Configuração dos RealmJoin Runbooks - Parte 1

1. No RealmJoin Portal, vá para '[Settings -> Runbooks](https://portal.realmjoin.com/settings/runbooks-configuration)'.<br>

   <figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FsSQHQwy9pChGMyTtidTt%2Fimage.png?alt=media&#x26;token=7bcec1d0-fb94-4591-8012-011a62295674" alt=""><figcaption></figcaption></figure>
2. Preencha o Tenant ID, Subscription ID e o nome do Resource Group pertencentes à Azure Automation Account\
   O Tenant ID na [página de visão geral do Entra ID](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview)

   <figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F3MElTpxbL7jloR1y4i9U%2Fimage.png?alt=media&#x26;token=1b83cda8-7909-4739-a36d-7848c5d4f113" alt=""><figcaption></figcaption></figure>
3. Copie o script a vermelho abaixo *ResourceGroup.*\
   Este script cria um Service Principal no Entra ID com acesso à sua Automation Account, permitindo ao RealmJoin gerir, executar e monitorizar runbooks.\
   O script é atualizado com base nas entradas para Tenant ID, Subscription ID e Resource Group.<br>

   <figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FRoVmXCq53pQRPOdQQetg%2Fimage.png?alt=media&#x26;token=b53c79c3-cbac-4666-ad81-6d77ade1ad86" alt=""><figcaption></figcaption></figure>
4. Deixe o assistente aberto por enquanto. Voltaremos em breve na parte 2.
   {% endstep %}

{% step %}

### Conceder Acesso ao RealmJoin para a Azure Automation

{% hint style="info" %}
Pode usar [Azure CloudShell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview), por isso não precisa de instalar e autenticar uma cópia local do AZ CLI.
{% endhint %}

1. Execute o script copiado anteriormente no PowerShell.

   <figure><img src="https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FylKg4jH8YJ6Cfeh6xF4z%2Fimage.png?alt=media&#x26;token=bdc3a594-0348-44f4-86be-de172247de67" alt=""><figcaption></figcaption></figure>

2. Anote os valores de `appId` e `password`.\
   A App Registration "RealmJoin Runbook Management" será criada.<br>

   ![App Registrations no Azure Portal](https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FAfaE2Y9DISjOLNwwLnfs%2Fimage.png?alt=media\&token=8f0a83c6-34b0-4b82-87eb-279597cfc961)
   {% endstep %}

{% step %}

### Configuração dos RealmJoin Runbooks - Parte 2

1. No RealmJoin Portal, volte à janela/assistente aberto para '[Settings -> Runbooks](https://portal.realmjoin.com/settings/runbooks-configuration)'
2. Preencha os valores em falta para `appId` e `password` criado no passo anterior
3. Preencha o nome da Automation Account criada [anteriormente](#create-an-azure-automation-account)
4. Escolha a Branch do repositório de runbooks partilhado que pretende seguir. \
   Se tiver dúvidas, escolha `production` \
   Todas as branches de runbooks podem ser consultadas aqui: <https://github.com/realmjoin/realmjoin-runbooks>
5. Escolha a mesma localização da sua Azure Automation Account para garantir que os seus runbooks são executados na região correta [região do Azure](https://docs.microsoft.com/en-us/azure/availability-zones/az-overview)

![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)

6. Prima "Save" para iniciar a importação inicial dos runbooks. Deixe esta janela aberta até ver a mensagem "Sync completed".

![](https://686519968-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2Fjro6ZW5ITGp9UbnCiD08%2Fimage.png?alt=media\&token=3bf1d1e8-a1ce-4528-99a5-686c0377e8b5)
{% endstep %}
{% endstepper %}
