> For the complete documentation index, see [llms.txt](https://wiki.datadike.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.datadike.com/product-docs/product-guide/configuracoes/rmm/policies.md).

# Policies

Policies são o coração do MDM: um objeto JSON que declara *como o dispositivo deve se comportar*. Ao criar/editar via portal, o backend chama `enterprises.policies.patch` na Android Management API; o Android Device Policy no aparelho recebe a atualização em segundos e aplica.

## Como funcionam no fundo

* Cada organização tem N policies criadas no portal, cada uma armazenada de forma isolada
* Cada policy é sincronizada com o Google Android Enterprise no ato da criação
* Um dispositivo aponta para uma policy — quando essa policy é editada, a mudança propaga automaticamente para TODOS os dispositivos que a utilizam
* A atribuição de uma policy a um device é feita no fluxo de enrollment (via QR code) ou depois, no painel do Sysadmin

## Templates prontos

Ao clicar em **Criar** no painel de Policies, aparecem **6 cards de templates**. Cada card aplica um preset de defaults ao formulário. Você pode usar como está ou ajustar.

| Template                       | Cenário                                  | Campos configurados                                                                                                                                                                                                              |
| ------------------------------ | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Blank policy**               | Configuração custom do zero              | Nenhum — todos os defaults                                                                                                                                                                                                       |
| **Corporate Locked Down**      | Baseline enterprise clássico             | <ul><li>Criptografia com senha</li><li>Location enforced</li><li>Untrusted apps bloqueados</li><li>Play Protect ENFORCED</li><li>System update WINDOWED</li><li>App auto-update WIFI\_ONLY</li><li>maxTimeToLock 5 min</li></ul> |
| **Kiosk (Single App)**         | PDV, coletor, totem                      | <ul><li>stayOnPluggedModes: AC + USB + WIRELESS</li><li>keyguardDisabledFeatures: ALL\_FEATURES</li><li>Play Store WHITELIST</li><li>Untrusted apps bloqueados</li><li>System update POSTPONE</li></ul>                          |
| **BYOD (dispositivo pessoal)** | Traga seu próprio                        | <ul><li>Location USER\_CHOICE (respeita usuário)</li><li>Untrusted apps: apenas no profile pessoal</li><li>System update AUTOMATIC</li><li>App auto-update WIFI\_ONLY</li></ul>                                                  |
| **Field Worker (Rugged)**      | Motoristas, técnicos em campo, logística | <ul><li>Location ENFORCED (rastreio obrigatório)</li><li>stayOnPluggedModes: AC + USB</li><li>Criptografia com senha</li><li>Untrusted apps bloqueados</li><li>maxTimeToLock 15 min</li></ul>                                    |
| **Retail POS**                 | Terminal de PDV, checkout                | <ul><li>Criptografia com senha</li><li>Location DISABLED (privacidade cliente)</li><li>Play Store WHITELIST</li><li>keyguardDisabledFeatures: CAMERA + NOTIFICATIONS</li><li>maxTimeToLock 1 min</li></ul>                       |

{% hint style="info" %}
Templates são **não-destrutivos**. Aplicar Corporate depois BYOD sobrescreve apenas os campos que o BYOD menciona — o resto do que Corporate configurou permanece.
{% endhint %}

## Ações por policy no painel

Cada card de policy no painel esquerdo tem uma linha de ações:

* **Toggle Enable/Disable** — desativa a policy sem apagar. Dispositivos que a usavam mantêm as configurações atuais mas param de receber updates.
* **Clone** — cria cópia com nome `(Copy)` sufixado, iniciando desativada. Útil para experimentar variações sem quebrar a original.
* **Edit** — abre o editor completo (iframe do Google) com todos os 200+ campos do schema AMAPI.
* **View devices** — mostra a lista de aparelhos que apontam para a policy.
* **Delete** — remove localmente e na AMAPI. Bloqueado se houver device usando (mensagem: "tenha ao menos um device removido primeiro").

## Campos principais do schema AMAPI

Uma policy AMAPI tem mais de 200 campos possíveis. Grupos principais:

### Password / lock screen

* `passwordPolicies[]` — política de complexidade, com escopo device ou profile
* `maximumTimeToLock` — millisegundos até auto-lock
* `keyguardDisabled` (só Dedicated) — desativa keyguard
* `keyguardDisabledFeatures[]` — CAMERA, NOTIFICATIONS, FINGERPRINT, BIOMETRICS, ALL\_FEATURES

### Applications

* `applications[]` — cada entrada:
  * `installType`: PREINSTALLED, FORCE\_INSTALLED, BLOCKED, AVAILABLE, REQUIRED\_FOR\_SETUP, KIOSK
  * `defaultPermissionPolicy`: PROMPT / GRANT / DENY
  * `permissionGrants[]` — forçar grant/deny por permission
  * `managedConfiguration` — JSON configurado via Play (schema declarado pelo dev do app)
  * `delegatedScopes[]` — delegar scope de gerenciamento

### Restrictions device-wide (DO / WPCO)

* `cameraAccess` (novo — substitui `cameraDisabled`)
* `microphoneAccess`
* `screenCaptureDisabled`
* `deviceConnectivityManagement.usbDataAccess`
* `bluetoothDisabled`, `bluetoothConfigDisabled`
* `factoryResetDisabled` (só DO)
* `addUserDisabled`, `removeUserDisabled` (só DO)

### Network / Wi-Fi / VPN

* `openNetworkConfiguration` — objeto ONC (Open Network Configuration) com Wi-Fi SSID, senha, EAP-TLS, certificados
* `alwaysOnVpnPackage` — nome do pacote do app VPN + `lockdownEnabled`
* `dataRoamingDisabled` (DO)
* `wifiConfigDisabled` / `deviceConnectivityManagement.configureWifi`

### Kiosk / Dedicated

* `kioskCustomLauncherEnabled`
* `kioskCustomization.powerButtonActions` (AVAILABLE / DISABLED)
* `kioskCustomization.statusBar` (SYSTEM\_INFO\_ONLY / NOTIFICATIONS\_AND\_SYSTEM\_INFO\_DISABLED)
* `kioskCustomization.systemNavigation` (NAVIGATION\_DISABLED / HOME\_BUTTON\_ONLY)

### Play Store

* `playStoreMode` — WHITELIST (só apps em `applications[]`) ou BLACKLIST (todo o Play menos BLOCKED)
* `appAutoUpdatePolicy` — CHOICE\_TO\_THE\_USER / NEVER / WIFI\_ONLY / ALWAYS

### Compliance / Security

* `policyEnforcementRules[]` — trigger + ação (`blockAction`, `wipeAction`) baseado em condição
* `advancedSecurityOverrides.untrustedAppsPolicy` — DISALLOW\_INSTALL / ALLOW\_IN\_PERSONAL\_PROFILE / ALLOW\_DEVICE\_WIDE
* `advancedSecurityOverrides.googlePlayProtectVerifyApps`
* `advancedSecurityOverrides.commonCriteriaMode` (DO)
* `encryptionPolicy` (DO)

### Location / Privacy

* `locationMode` — HIGH\_ACCURACY / SENSORS\_ONLY / BATTERY\_SAVING / OFF (só DO pode forçar OFF)
* `defaultPermissionPolicy` — para todas as runtime permissions

### Play Integrity (device attestation)

Não é campo da policy, é signal do device. Ler via `enterprises.devices.get`:

* `securityPosture.devicePosture` → SECURE / AT\_RISK / POTENTIALLY\_COMPROMISED
* `securityPosture.postureDetails[]` → risco + advice

O portal mostra isso como badge no toolbar do detalhe do device (Sysadmin).

## Como funciona o formulário do portal

O editor de Policy no portal cobre um subset dos campos mais usados (`PolicyData.js` no frontend). Para campos que estão no AMAPI mas não expostos no formulário, use o **iframe do Google Enterprise Iframe** (aberto pelo botão "Edit policy") — o Google fornece uma UI oficial completa.

## Sequência recomendada

1. Escolha um template baseado no cenário (Corporate / Kiosk / BYOD / Field / POS)
2. Renomeie para algo específico ("Corporate - Comercial", "Kiosk PDV São Paulo")
3. Salve
4. Aplique em um device piloto (via enrollment token com `policyName` explícito)
5. Aguarde propagação (\~30s)
6. Confirme via `enterprises.devices.get` que `appliedState = ACTIVE` e `policyCompliant = true`
7. Aplique gradualmente à frota
