> 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/implementacao/architecture-overview.md).

# Visão Geral da Arquitetura

RealmJoin é um SaaS nativo da nuvem, multi-tenant e o **complemento de Ciclo de Vida e Gestão de Aplicações para Microsoft Intune**. Ele gere a implementação de aplicações, a gestão de utilizadores/grupos/dispositivos e a automação de processos em todo o seu tenant Entra ID — **sem servidores locais nem infraestrutura local**. Todos os serviços de backend são operados pela glueckkanja em **Microsoft Azure, alojado na Europa**.

O RealmJoin abrange três áreas:

* **Gestão de Aplicações** – empacotamento, implementação, um catálogo de autosserviço e relatórios de software.
* **Gestão de Utilizadores, Grupos e Dispositivos** – uma vista única e unificada que combina dados do Intune, Entra ID, Microsoft Defender, Windows Autopilot e registos de início de sessão.
* **Automação de Processos** – runbooks que são executados em *a sua própria* conta do Azure Automation.

## A visão geral

```mermaid
%%{init: {"flowchart": {"htmlLabels": false, "nodeSpacing": 55, "rankSpacing": 90}} }%%
flowchart LR
    Admin["Administradores"]
    Integr["As suas integrações"]
    Device["Dispositivos geridos<br/>(RealmJoin Agent)"]

    subgraph RJ["Backend do RealmJoin - Azure (Europa)"]
        direction TB
        Portal["Portal do RealmJoin"]
        CustApi["API do Cliente"]
        ClientApi["API do Cliente"]
        FD{{"Azure Front Door"}}
        CDN["CDN e Servidor de Pacotes"]
        Core[("Serviços de backend<br/>e bases de dados")]
    end

    subgraph Tenant["O seu Tenant da Microsoft"]
        direction TB
        Graph["Entra ID / Intune / Defender<br/>(via Microsoft Graph)"]
        subgraph AzureRes["Os seus recursos do Azure"]
            direction TB
            KV["Key Vault<br/>(palavras-passe do LAPS)"]
            Autom["Azure Automation<br/>(Runbooks)"]
            LA["Log Analytics<br/>(Registos)"]
        end
    end

    Admin --> Portal
    Integr --> CustApi
    Device --> ClientApi
    Device --> FD
    FD --> CDN

    Portal --> Core
    ClientApi --> Core
    CustApi --> Core

    Core -->|acesso com menor privilégio| Graph
    Core --> KV
    Core --> Autom
    Core --> LA
```

O RealmJoin liga-se ao seu Tenant através de **aplicações Entra ID com menor privilégio** às quais concede consentimento durante o onboarding. Cada ação que o backend executa é filtrada pelo **modelo interno de Role-Based Access Control (RBAC)** do RealmJoin, que avalia a pertença a grupos e funções do Entra ID.

## Componentes do backend

O backend é um conjunto de serviços implantados de forma independente, em execução no Microsoft Azure:

| Componente                    | Finalidade                                                                                                         | Quem se liga a ele                                                                                            |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| **Portal do RealmJoin**       | A interface web que os administradores usam para gerir aplicações, dispositivos, utilizadores, grupos e automação. | Administradores, via início de sessão com Entra ID (OAuth 2.0 / OpenID Connect).                              |
| **API do Cliente**            | O endpoint com que o opcional RealmJoin Agent em cada dispositivo comunica.                                        | Dispositivos geridos, autenticados pela identidade do dispositivo (token Entra + certificado do dispositivo). |
| **API do Cliente**            | Uma API programática para as suas próprias integrações e automação.                                                | Os seus sistemas e ferramentas, usando uma chave de API por cliente.                                          |
| **CDN e Servidor de Pacotes** | Entrega pacotes de aplicações e conteúdo aos dispositivos.                                                         | Dispositivos geridos.                                                                                         |

Por trás disto, o RealmJoin executa serviços de processamento em segundo plano e armazena dados em bases de dados e armazenamento geridos no Azure. Os serviços voltados para o interior (como faturação e tarefas em segundo plano) não são acessíveis a partir da Internet.

## O RealmJoin Agent

O RealmJoin Agent é um **opcional** componente do Windows. Quando instalado, ele:

* reporta o estado do dispositivo para a Client-API num calendário regular,
* obtém uma **assinada** configuração do dispositivo (atribuições de software e políticas),
* executa uma **avaliação de segurança** (encriptação, nível de patches, firewall, antivírus) antes de aplicar as aplicações obrigatórias,
* entrega aplicações de forma eficiente usando um motor Chocolatey melhorado mais **BranchCache** distribuição ponto a ponto,
* suporta **LAPS** (palavra-passe local de administrador) — as palavras-passe são geradas no dispositivo e armazenadas em **o seu próprio Azure Key Vault**.

```mermaid
sequenceDiagram
    participant Device as RealmJoin Agent
    participant API as Client-API
    participant CDN as CDN do RealmJoin

    Device->>API: Reporta o estado e solicita a configuração
    API-->>Device: Configuração assinada (aplicações e políticas)
    Device->>Device: Avaliação de segurança
    Device->>CDN: Descarrega os pacotes atribuídos
    Nota sobre Device: partilha de pacotes ponto a ponto via BranchCache
```

Para detalhes sobre a entrega de pacotes e BranchCache, consulte [Considerações de infraestrutura](/pt/implementacao/infrastructure.md).

## Automação de processos (runbooks)

Os runbooks são executados em **a sua própria conta do Azure Automation** — e não no backend do RealmJoin. O RealmJoin mantém a sua biblioteca de runbooks sincronizada com um repositório GitHub aberto e selecionado e gere e monitoriza a execução de tarefas a partir do Portal. Os runbooks atuam através da **identidade gerida**, pelo que as permissões que usam permanecem totalmente sob o seu controlo.

Veja [Ligar o Azure Automation](/pt/automacao/connecting-azure-automation.md) e [Runbooks](/pt/automacao/runbooks.md) para mais informações.

## Entrega de aplicações

Os pacotes são produzidos pelo pipeline de empacotamento do RealmJoin e entregues aos dispositivos através do RealmJoin **CDN** e **Servidor de Pacotes**, com armazenamento geo-replicado e BranchCache para distribuição eficiente na rede. As aplicações podem ser entregues através de **Implementação do RealmJoin** (via o Agent) ou como **Implementação do Intune** (um pacote intunewin enviado para o seu tenant).

## Recursos no seu próprio ambiente

Várias capacidades utilizam recursos no **seu próprio tenant Microsoft e subscrição do Azure**, pelo que os dados sensíveis permanecem sob o seu controlo:

* **Azure Key Vault** – armazena as palavras-passe locais de administrador LAPS geradas nos seus dispositivos.
* **Azure Automation** – executa os seus runbooks sob uma identidade gerida que controla.
* **Log Analytics** – armazena registos de auditoria e registos arquivados de runbooks.

O RealmJoin acede a estes — e a Entra ID, Intune e Defender via Microsoft Graph — usando apenas as permissões de menor privilégio que concede durante o onboarding. Veja [Permissões Necessárias do Portal](/pt/implementacao/required-permissions.md) para a lista completa.

## Segurança, alojamento e residência dos dados

* **Alojamento:** Todos os serviços de backend são executados em **Microsoft Azure**, principalmente na região de **West Europe** com cópia de segurança em **North Europe**. **Os dados dos clientes não saem da Europa.**
* **Entrega:** O Portal e as APIs são acedidos diretamente por HTTPS. Os pacotes de aplicações e o conteúdo são entregues através do RealmJoin **CDN**, com o apoio de **Azure Front Door** para distribuição global com balanceamento de carga.
* **Encriptação em trânsito:** Todas as ligações usam HTTPS/TLS.
* **Identidade:** O acesso de administrador usa Entra ID (OAuth 2.0 / OpenID Connect); os dispositivos autenticam-se com a respetiva identidade de dispositivo Entra e um certificado de dispositivo; as APIs programáticas usam chaves por cliente.
* **Isolamento do tenant:** Os dados de cada cliente estão separados e todos os caminhos de código do backend operam dentro de um contexto por tenant.
* **Menor privilégio:** As aplicações Entra do RealmJoin solicitam apenas as permissões necessárias para as funcionalidades que ativa, e todas as ações são regidas pelo modelo interno de RBAC do RealmJoin.
* **Resiliência:** Infraestrutura redundante com failover automatizado e recuperação de base de dados em qualquer ponto no tempo; a infraestrutura é totalmente definida como código (Terraform).

{% hint style="info" %}
Os endpoints acessíveis externamente são o **Portal, Client-API, API do Cliente, CDN e Servidor de Pacotes**. Para a lista completa de anfitriões a permitir na sua firewall, consulte [Considerações de infraestrutura](/pt/implementacao/infrastructure.md). Para mais detalhes sobre o tratamento de dados e a separação de tenants, consulte [Segurança e Privacidade](/pt/seguranca-e-privacidade/security-and-privacy.md).
{% endhint %}


---

# 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/implementacao/architecture-overview.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.
