# Securitate

ZebraByteDevice Agent este un **posture reporter**, nu un instrument de gestionare a dispozitivelor. Înregistrează un dispozitiv, rulează un set fix de controale de securitate locală și împinge rezultatele către organizația platformei.

## Design philosophy

Agentul urmează o regulă simplă: ** dispozitivul vorbește cu platforma; platforma nu vorbește niciodată cu munca de făcut.**

Acest agent nu colectează semnale de postură locale  Acest agent nu colectează semnale de postură locală  Acest agent nu colectează semnale de postură locală  Acest agent colectează semnale de postură locală  Primirea de comenzi, scripturi sau politici de pe platforma  Tăiați bătăile inimii și verificați rezultatele  Deschideți un canal de control pentru server pentru a apela dispozitivul  Deschideți înregistrarea cu consimțământul local  Închideți, ștergeți sau reconfigurați mașina ca un MDM  Auto-actualizare de la semnăturaGitHubReleases  Descărcați și rulați binare nesemnate sau furnizate de server

Această limită există astfel încât angajații și operatorii să poată trata agentul ca observabilitate pentru conformitate – nu ca administrare de la distanță a laptopului sau serverului lor.

## Push-only communication

All agent API traffic is **agent-initiated** HTTPS to `/api/agent/v1`. The published surface is:

| Endpoint          | Direction      | Purpose                                                   |
| ----------------- | -------------- | --------------------------------------------------------- |
| `POST /enroll`    | Agent → server | Exchange a one-shot enrollment token for a device API key |
| `POST /heartbeat` | Agent → server | Report host identity and receive schedule intervals       |
| `POST /postures`  | Agent → server | Push posture check results                                |
| `POST /unenroll`  | Agent → server | Ask the server to revoke the device                       |

Nu există WebSocket, coada de comandă pentru sondaje lungi sau canalul de stil shell invers. serverul platformei nu deschide conexiuni la dispozitivele înregistrate.

Atunci când agentul bate inima, răspunsul conține numai metadatele de programare: ID-ul dispozitivului, intervalul de bătăi ale inimii, intervalul de postură și timpul serverului.

## Fixed check set

Fiecare platformă înregistrează aceleași controale numite la momentul construirii (de exemplu, criptarea discului, blocarea ecranului, firewall-ul, sincronizarea timpului, versiunea OS, actualizarea automată, politica de parolă, conectarea la distanță și protecția împotriva malware-ului).

The server cannot:

- Adăugați un nou control la timpul de rulare - Schimbați modul în care este evaluat un control existent - Cereți agentului să ruleze un executabil sau un script arbitrar

Comenzile de ajutor local utilizate de controale se rezolvă la **pinned absolute paths** pe dispozitiv.

You can run the same check set offline with `probo-agent collect`—that prints results locally and does not push anything to the platform.

## Authentication and local secrets

- **Enrollment** uses a one-shot token from the the platform console. The agent exchanges it once for a long-lived **device API key**, then stores that key locally (file mode `0600` in the agent state directory).
- Later heartbeats and posture pushes authenticate with that device API key over HTTPS.
- If an administrator **revokes** the device in the platform, subsequent agent calls receive unauthorized responses and the agent stops treating the enrollment as valid.
- Uninstall / unenroll clears local agent state on the device.

Nu plasați jetoane de înregistrare în URL-uri, chat-uri sau jurnalele. Preferați fluxul de înregistrare desktop (installer + browser) pe macOS și Windows atunci când este posibil.

## Updates and integrity

When auto-update is enabled, the agent checks GitHub Releases under the `probo-agent/v*` tag, verifies release artifacts with **Cosign / Sigstore**, and only then replaces its binary. Verification pins the signing identity to the platform’s release workflow on a tagged commit. Failed verification aborts the update.

You can disable automatic upgrades at install time (`--no-auto-update` / `PROBO_NO_AUTO_UPDATE`). See [Commands](/docs/product/device-agent/commands).

## Implementation

Nucleul agentului este scris în **Go**: memorie colectată de gunoi, felii verificate de limită și un singur binar static pe platformă. Această alegere reduce întreaga clasă de bug-uri de corupție a memoriei comune agenților C/C++, fără a introduce un timp de rulare scriptat sau interpretat pe dispozitiv.

De asemenea, păstrăm **dependențele la minimum**. Agentul preferă biblioteca standard Go și un set mic de pachete bine realizate (de exemplu, verificarea Cosign/Sigstore și API-urile OS) în loc de un copac mare de la terți.

The agent is **open source**. Source, release workflows, and signed artifacts live in the [getprobo/probo](/docs) repository (`cmd/probo-agent`, `pkg/deviceagent`), so security teams can audit the check set, API client, and update verifier themselves—not take those claims on trust alone.

A few notes on scope:

- Colectarea posturii, bătăile inimii, schimbul de înscrieri și logica auto-actualizării sunt toate vii în binar Go – același traseu de cod pe macOS, Windows, Linux și FreeBSD. – Ajutorii platformei rămân înguste. pe macOS, un mic ajutor privilegiat semnat **Swift** există doar pentru a finaliza înscrierea browserului pe XPC; nu este o suprafață generală de control la distanță sau de scriptare. – Auto-update nu rulează niciodată biți nesemnați: numai artefactele de lansare verificate de Cosign/Sigstore înlocuiesc binarul (vezi [Actualizări și integritate] (#actualizări și integritate)).

Alegerea limbii și un set de dependențe slabe susțin modelul push-only; nu îl înlocuiesc.

## Compared to MDM

Produsele de gestionare a dispozitivelor mobile sunt construite pentru a controla punctele terminale: pentru a împinge profilurile de configurare, pentru a aplica setările, pentru a instala aplicații, pentru a bloca sau șterge dispozitivele și, adesea, pentru a efectua acțiuni la distanță.

Utilizați MDM-ul dvs. existent (sau gestionarea configurației) dacă aveți nevoie de control de la distanță. UtilizațiZebraByteDevice Agent atunci când aveți nevoie de dovezi continue de postură în platformă fără a da platformei de conformitate un canal de comandă pe mașină.

## Next steps

- [Device AgentAPI](/docs/developers/api/agent/overview) - Construiți-vă propriul agent folosind protocolul de înregistrare și postură - [Contribuind](/docs/developers/api/agent/contribuind) - Contribuiți la agentul oficial; așteptați o revizuire extinsă a securității - [macOS](/docs/product/device-agent/linux) - Pachet semnat, apoi înregistrare de pe consola de platformă - [Windows](/docs/product/device-agent/ windows) - MSI semnat, apoi înregistrare de pe consola de platformă - [Linux]/docs/product/device-agent/linux) -