> 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 implantação de aplicações, o gerenciamento de utilizadores/grupos/dispositivos e a automação de processos em todo o seu tenant Entra ID — **sem servidores locais ou infraestrutura local**. Todos os serviços de backend são operados pela glueckkanja em **Microsoft Azure, alojado na Europa**.

RealmJoin abrange três áreas:

* **Gestão de aplicações** – empacotamento, implantação, um catálogo de autoatendimento e relatórios de software.
* **Gestão de utilizadores, grupos e dispositivos** – uma visão ú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 *o seu próprio* 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/>(Agente RealmJoin)"]

    subgraph RJ["Backend do RealmJoin - Azure (Europa)"]
        direction TB
        Portal["Portal RealmJoin"]
        CustApi["Customer-API"]
        ClientApi["Client-API"]
        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 Microsoft"]
        direction TB
        Graph["Entra ID / Intune / Defender<br/>(via Microsoft Graph)"]
        subgraph AzureRes["Os seus recursos Azure"]
            direction TB
            KV["Key Vault<br/>(palavras-passe 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 o menor privilégio| Graph
    Core --> KV
    Core --> Autom
    Core --> LA
```

RealmJoin liga-se ao seu tenant através de **aplicações Entra ID com privilégio mínimo** que consente durante a integração. Cada ação que o backend executa é filtrada pelo **modelo interno de controlo de acesso baseado em funções (RBAC)** , que avalia a associação a grupos e funções do Entra ID.

## Componentes do backend

O backend é um conjunto de serviços implantados independentemente e executados em Microsoft Azure:

| Componente                    | Finalidade                                                                                                         | Quem se conecta a ele                                                                                         |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| **Portal do RealmJoin**       | A interface web que os administradores usam para gerir aplicações, dispositivos, utilizadores, grupos e automação. | Administradores, através de início de sessão do Entra ID (OAuth 2.0 / OpenID Connect).                        |
| **Client-API**                | O endpoint com o qual o Agente RealmJoin opcional em cada dispositivo comunica.                                    | Dispositivos geridos, autenticados pela identidade do dispositivo (token Entra + certificado do dispositivo). |
| **Customer-API**              | 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 destes, 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 internos (como faturação e tarefas em segundo plano) não são acessíveis a partir da Internet.

## O Agente RealmJoin

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

* reporta o estado do dispositivo ao Client-API numa base 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 aplicações obrigatórias,
* entrega aplicações de forma eficiente usando um motor Chocolatey aprimorado mais **BranchCache** distribuição ponto a ponto,
* suporta **LAPS** (palavra-passe de administrador local) — as palavras-passe são geradas no dispositivo e armazenadas em **o seu próprio Azure Key Vault**.

```mermaid
sequenceDiagram
    participant Device as Agente RealmJoin
    participant API as Client-API
    participant CDN as CDN RealmJoin

    Device->>API: Reportar estado e solicitar configuração
    API-->>Device: Configuração assinada (aplicações e políticas)
    Device->>Device: Avaliação de segurança
    Device->>CDN: Transferir os pacotes atribuídos
    Note over 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** — não no backend do RealmJoin. O RealmJoin mantém a sua biblioteca de runbooks sincronizada com um repositório GitHub aberto e curado 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 utilizam permanecem inteiramente sob o seu controlo.

Ver [A 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 quer através de **Implementação RealmJoin** (via o Agente RealmJoin) ou como **Implementação Intune** (um pacote intunewin enviado para o seu tenant).

## Recursos no seu próprio ambiente

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

* **Azure Key Vault** – armazena as palavras-passe de administrador local 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 ao Entra ID, Intune e Defender via Microsoft Graph — usando apenas as permissões de menor privilégio que concede durante a integração. Consulte [Permissões necessárias do Portal](/pt/implementacao/required-permissions.md) para a lista completa.

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

* **Alojamento:** Todos os serviços de backend são executados em **Microsoft Azure**, principalmente em **West Europe** com backup em **North Europe**. **Os dados dos clientes não saem da Europa.**
* **Entrega:** O Portal e as APIs são acedidos diretamente via HTTPS. Os pacotes de aplicações e o conteúdo são entregues através do RealmJoin **CDN**, com o **Azure Front Door** na frente para distribuição global com balanceamento de carga.
* **Criptografia 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 identidade de dispositivo do Entra e um certificado de dispositivo; as APIs programáticas usam chaves por cliente.
* **Isolamento do Tenant:** Os dados de cada cliente são separados, e todos os caminhos de código do backend operam num 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 pontual da base de dados; a infraestrutura é totalmente definida como código (Terraform).

{% hint style="info" %}
Os endpoints acessíveis externamente são o **Portal, Client-API, Customer-API, CDN e Package Server**. Para a lista completa de hosts 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.
