# Configurações do Runtime

Aqui você configura **segurança, autenticação e acesso** do app em execução.

Para identidade visual, deploy e GitHub, use [Configurações do Projeto](/br/documentacao/configuracoes-do-projeto.md).

{% hint style="warning" %}
Os padrões abaixo são de **maior rigor possível**.\
Eles aumentam fricção e exigem processo de suporte bem definido.
{% endhint %}

### Visão geral (o que você controla aqui)

Você costuma configurar:

* **SSO (SAML/OIDC) + Entra ID**
* **Perfis de acesso (RBAC)** e **permissões**
* **Usuários**
* **Políticas de segurança** (senha, 2FA, sessão, lockout, IP allowlist)
* **Auditoria e trilhas**
* **Servidor de e-mail** (convites, reset, alertas)
* **Logs** e **criptografia**
* **Governança** (LGPD/GDPR)

### Autenticação (SSO: SAML/OIDC + Entra ID)

Recomendação de maior rigor:

* **SSO obrigatório** para todos os usuários.
* **Desabilitar login local** (senha) quando SSO estiver estável.
* **Enforced MFA no IdP** (ex: Entra ID Conditional Access).
* **Restringir por domínio** (somente e-mails corporativos aprovados).

Checklist de implantação:

* Defina o provedor: **SAML** ou **OIDC**.
* Configure URLs, issuer/client, certificados e claims.
* Mapeie claim para **e-mail** (identidade) e **grupos** (autorização).
* Valide cenário de **logout** e expiração de sessão.

{% hint style="danger" %}
Ative SSO primeiro em um ambiente de teste.\
Uma configuração errada pode impedir login de todo mundo.
{% endhint %}

Se travar login ou callback: [SSO e login](/br/solucao-de-problemas/sso-e-login.md).

### Usuários e perfis (RBAC)

#### Perfis de acesso

Use perfis para agrupar permissões por função.

Campos mínimos:

* **Nome**
* **Descrição**

Boas práticas (alto rigor):

* Crie perfis pequenos e explícitos (ex: `Financeiro: Leitura`, `Financeiro: Operação`).
* Evite perfis “Administrador” para uso diário.
* Use um perfil **Break-glass admin** (emergência) com governança.

#### Usuários

Campos mínimos:

* **Nome**
* **E-mail**
* **Perfis de acesso**

Boas práticas (alto rigor):

* Bloqueie cadastro “self-service” se existir.
* Use convite por e-mail com expiração curta.
* Remova acesso por desligamento (offboarding) no mesmo dia.

### Permissões (alto rigor)

Padrão recomendado:

* **Deny-by-default** (tudo negado, libera por necessidade).
* Permissões por:
  * módulo
  * componente/entidade
  * ação (ver/criar/editar/excluir/exportar)

{% hint style="info" %}
Separe “ver dados” de “exportar dados”.\
Export é um dos maiores vetores de vazamento.
{% endhint %}

### Auditoria e trilhas

Ative auditoria para eventos de segurança e dados sensíveis.

Campos mínimos de trilha:

* **User**
* **Action**
* **Resource**
* **Date/Time**
* **IP**
* **Status**

Eventos mínimos (alto rigor):

* login/logout
* falhas de login e lockouts
* reset/troca de senha
* mudanças em SSO e políticas de segurança
* mudanças de perfil/permissões
* exportação de dados

Retenção recomendada:

* **365 dias** (mínimo)
* **2–7 anos** se houver requisito regulatório

### Servidor de e-mail

Use para:

* convites
* reset de senha (se login local estiver habilitado)
* alertas de segurança (ex: lockout, novo dispositivo)

Recomendação (alto rigor):

* Use domínio corporativo e SPF/DKIM/DMARC.
* Evite provedores sem reputação e sem logs.

### Políticas de segurança (alto rigor)

#### Password policy (quando login local existir)

Valores recomendados:

* **Minimum Length**: `14` (preferível `16`)
* **Require uppercase**: `on`
* **Require lowercase**: `on`
* **Require numbers**: `on`
* **Require special characters**: `on`
* **Prevent reuse**: `24`
* **Expiration**: `90` dias (se sua política exigir)

{% hint style="warning" %}
Expiração de senha aumenta chamadas de suporte.\
Se você usa SSO + MFA forte, prefira expiração no IdP.
{% endhint %}

#### Two-Factor Authentication (2FA)

Valores recomendados:

* **Enabled**: `on`
* **Mandatory for all**: `on`
* **Available methods**:
  * **TOTP/Authenticator** (preferido)
  * E-mail apenas como fallback (se permitido)

#### Session management

Valores recomendados:

* **Inactivity timeout**: `15` minutos
* **Session timeout absoluto**: `8` horas
* **Max concurrent sessions**: `1`
* **Allow "Remember Me"**: `off`

{% hint style="info" %}
Sessão única reduz risco de sequestro de sessão.\
Ela também reduz “compartilhamento de conta”.
{% endhint %}

#### Login attempts (lockout)

Valores recomendados:

* **Max attempts**: `5`
* **Lockout duration**: `30` minutos

Recomendação extra (se suportado):

* Lockout progressivo (ex: 5 falhas = 30 min, 10 falhas = 24 h).

#### IP allowlist (permitir só redes aprovadas)

Valores recomendados:

* **Enabled**: `on` (em produção)
* Cadastre redes e IPs corporativos.

Exemplos:

* `192.168.1.0/24`
* `10.0.0.0/8`
* `203.0.113.10/32`

{% hint style="danger" %}
IP allowlist é fácil de errar.\
Mantenha um caminho de emergência (VPN + IP fixo + conta break-glass).
{% endhint %}

### Logs

Recomendação (alto rigor):

* Logs de segurança separados de logs de aplicação.
* Nunca logar: senhas, tokens, secrets, dados sensíveis.
* Alerta para eventos críticos (ex: muitas falhas de login, mudança de permissão).

### Criptografia (em trânsito e em repouso)

Recomendação (alto rigor):

* **Em trânsito**: TLS 1.2+ obrigatório.
* **Em repouso**:
  * banco com encryption at rest
  * anexos/arquivos com encryption at rest

### LGPD/GDPR e governança de dados

Pontos mínimos para operar com rigor:

* Controle de acesso por função (RBAC) e princípio do menor privilégio.
* Trilhas para acesso e exportação de dados pessoais.
* Política de retenção por tipo de dado.
* Processo para:
  * atender solicitações do titular (quando aplicável)
  * remoção/anonimização (quando aplicável)


---

# Agent Instructions: 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:

```
GET https://docs.madrix.dev/br/documentacao/configuracoes-do-runtime.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
