Plan de control pentru dispozitive industriale

Planul de control pe care flota ta industrială îl merită cu adevărat.

Conectează OPC-UA, Sparkplug B, Modbus și MQTT la o singură platformă suplă. Fiecare dispozitiv are propria identitate. Fiecare tenant, propria lume sigilată. Rulezi platforma la edge sau în propriul centru de date.

10k
dispozitive concurente
49.7ms
latență p99 la ingestie
601µs
revocare dispozitiv
tenant · demo-plant-01 / live LIVE
turbine.rpm
bus.voltage
coolant.degC
t/demo-plant-01/d/turbine-A7 10,000 dispozitive conectate
Vorbește protocoalele uzinei tale din prima zi, ca niște conectori izolați, cu un singur dispozitiv fiecare
Modbus/TCP OPC-UA Sparkplug B MQTT Gateway Unified Namespace
Conectivitate industrială, nativ

Vorbește protocoalele uzinei tale din prima zi.

Modbus/TCP, OPC-UA și Sparkplug B sunt conectori izolați. Fiecare poartă autoritatea unui singur dispozitiv. Un gateway Unified Namespace transformă un singur nod Sparkplug edge în multe identități izolate. Nu există nicio credențială de gateway partajată care să poată fi compromisă.

  • Modbus/TCP, OPC-UA și Sparkplug B stau pe un SDK de conectori înghețat. Un protocol nou nu adaugă nicio suprafață de atac în nucleu.
  • Verificăm scrierile către dispozitive (southbound) împotriva a 15+ vectori ostili: injecție, null-byte, nume supradimensionate, confuzie de tipuri. Le blocăm pe toate direct pe fir.
1 connector modbus_tcp
2   scope: one_device
3   sdk: frozen
4   // +opcua +sparkplug — zero new core surface
15+ vectori ostili blocați Modbus · OPC-UA · Sparkplug B
Izolare pe care o poți demonstra

Separare pe care auditorul tău o vede, nu doar o crede.

Baza de date impune izolarea între tenant-uri prin Row-Level Security. O impune și sistemul de tipuri: dacă uiți filtrul de tenant, codul pur și simplu nu compilează. A rezistat la un RLS-drop, la compresia Timescale și la nouă încercări de evadare.

  • PostgreSQL RLS ENABLE + FORCE de la prima migrare, dovedit pe un rol real non-superuser, NOBYPASSRLS. Zero rânduri se scurg între tenant-uri.
  • Izolarea Grafana per tenant a rezistat la 9 vectori de evadare pe un login real, doar-citire.
1 async fn telemetry(ctx: &TenantCtx)
2   // tenant is mandatory, by type
3   let rows = repo. query(ctx).await?;
4  
5 error[E0061]: missing `ctx: &TenantCtx`
6   a query without a tenant does not compile
0 rânduri între tenanți RLS FORCE non-superuser dovedit
Un plan de control care rămâne în picioare

Dispozitivele continuă să se conecteze, chiar și când planul de control clipește.

Autentificarea are loc în interiorul broker-ului, la CONNECT. Folosește un set de chei ultim-valid-cunoscut și nu sună deloc planul de control pe calea critică. La zece mii de dispozitive concurente am măsurat un p99 de 49.7 ms. O furtună completă de reconectări a recuperat fiecare client în parte.

  • 10,000 de dispozitive concurente la ~5,400 msg/s QoS1 → p99 49.7 ms, de 20x sub ținta de sub o secundă.
  • O furtună de reconectări cu 10,000 de clienți a recuperat 10,000 / 10,000; rotația cheilor la cald nu pierde nicio sesiune stabilită.
latență p99 49.7ms
reconectare 100%
rotație chei 0 pierderi
apel CP / CONNECT 0
broker-local JWKS last-known-good STRICT
Identitate de dispozitiv de încredere

Fiecare dispozitiv este o identitate de scurtă durată, revocabilă.

Fiecare dispozitiv are un JWT propriu. Unde ai nevoie, adaugi și mTLS cu CA internă. Amândouă leagă dispozitivul de tenant-ul său prin construcție, niciodată din corpul unei cereri. Revoci un dispozitiv compromis în mult sub o milisecundă, fără fereastră de acces rezidual și fără OpenSSL pe calea de transport.

  • Revocare cu latență mărginită: am măsurat eliminarea unui dispozitiv la 601 µs, mult sub ținta de 30 s.
  • TLS sigur la nivel de memorie prin rustls + aws-lc-rs, zero OpenSSL. Eliminăm prin design o întreagă clasă de CVE-uri de transport din calea dispozitivului.
601µs
deconectare măsurată la revocare · țintă < 30s
RS256
JWT per dispozitiv
mTLS
CA intern
0
fereastră reziduală
Suplu prin design

O platformă, nu un proiect de centru de date.

Binare Rust unice, un broker încorporat, un motor de reguli în proces. Fără procesor de flux extern, fără magistrală de mesaje suplimentară. Creezi un tip nou de dispozitiv doar din documentație, în sub o zi, și rulezi totul pe hardware modest.

  • Tipurile de dispozitiv sunt YAML declarativ. Creezi un tip nou plus conectorul lui din documentație, în sub o zi, fără compilare, fără tabel per tip, fără deploy de plugin.
  • Imagine de rulare distroless, non-root, ~20 MB (uid 65532, fără shell). Un exercițiu complet de restaurare a bazei de date s-a terminat în ~391 ms.
1 device_type: turbine.v2
2   metrics: [rpm, voltage, coolant]
3   connector: modbus_tcp
4   // declarative — no compile, no plugin deploy
distroless ~20 MB uid 65532 · fără shell restaurare 391 ms
Platforma

Tot ce are nevoie o flotă industrială, într-un singur binar suplu.

Fără procesor de flux extern, fără magistrală de mesaje suplimentară, fără proiect de centru de date. Un plan de control pe care chiar îl poți rula.

Protocoale industriale native

Modbus/TCP, OPC-UA și Sparkplug B, conectori izolați cu câte un singur dispozitiv fiecare, pe un SDK înghețat.

Gateway Unified Namespace

Un singur nod Sparkplug edge, multe identități izolate criptografic. Fără principal de gateway partajat.

Izolare impusă de baza de date

RLS FORCE pe un rol non-superuser. Accesul între tenant-uri este o eroare de compilare, nu o verificare la execuție.

Autentificare a dispozitivelor local în broker

JWT + mTLS cu CA internă, validate în proces. Zero apeluri către planul de control la fiecare CONNECT.

Motor de reguli în proces

Prag, fereastră, absență și geofence peste date persistate fără pierderi. Fără CEP extern.

Telemetrie + tablouri de bord incluse

Hypertabele TimescaleDB cu Grafana per tenant provizionat automat.

Preț → conversație

Adu-ți flota într-un singur plan de control.

Spune-ne protocoalele, siturile și scara ta. Îți arătăm Spectors în condițiile tale.

Hai să discutăm →