# 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](https://docs.madrix.dev/br/documentacao/configuracoes-do-projeto).

{% 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](https://docs.madrix.dev/br/solucao-de-problemas/sso-e-login).

### 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)
