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


---

# 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://wiki.datadike.com/product-guide/configuracoes/rmm/policies.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.
