Skip to content

License ​

Ambito: cluster · Singleton (deve chiamarsi cluster)

Contiene e convalida la licenza offline firmata ed espone l'insieme delle funzionalità abilitate e i limiti di istanze a tutti gli altri controller. Le licenze si ottengono — scaricate, acquistate o avviate come prova — dal portale clienti Navique su portal.navique.dev. Per il modello di licenza, vedi Edizioni e licenze e Gestire una licenza.

Spec ​

CampoTipoDescrizione
secretRefSecretKeyRef (obbligatorio)Secret che contiene il token di licenza firmato. Chiave predefinita license.
yaml
apiVersion: core.navique.com/v1alpha1
kind: License
metadata:
  name: cluster                      # singleton — other names are rejected
spec:
  secretRef:
    name: navique-license
    key: license
    namespace: navique-system

Status ​

CampoDescrizione
validSe il token è stato verificato e non è scaduto
licenseeNome del titolare della licenza
tierEtichetta di comodo (enterprise / basic / …); non usata per l'applicazione dei limiti
expiresAtData e ora di scadenza
environmentprod / nonprod
enabledFeaturesFeature flag esplicite, ad es. ["auto-wiring","guardrail"]
limitsLimiti applicati per tipo, ad es. {"gateways":3,"langfuse":1}
includedSupportHoursSolo a titolo di riferimento; conteggiate al di fuori del cluster
reasonPerché la licenza non è valida, se applicabile
revokedtrue se il token è stato rifiutato dalla lista di revoca integrata nell'operatore
revokedReasonCategoria della revoca quando revoked è true: compromised / superseded / non-compliance / issued-in-error / unspecified
conditionsInclude Ready (reason LicenseRevoked in caso di revoca)

Come funziona la verifica ​

La licenza è un JWT firmato verificato rispetto a una chiave pubblica compilata nel binario dell'operatore (algoritmo consigliato: EdDSA / Ed25519; alg: none viene rifiutato). L'operatore seleziona la chiave di verifica in base all'header kid (key id) del token, così la chiave di firma può essere ruotata senza invalidare le licenze già emesse. Non c'è alcun server di licenze né alcun phone-home, quindi funziona anche in ambienti air-gapped. Il controller:

  1. Legge il token dal Secret referenziato e ne verifica firma e scadenza.
  2. Confronta il token con la lista di revoca integrata nell'operatore (vedi Revoca).
  3. Scrive lo status (validità, titolare, tier, scadenza, funzionalità, limiti, ambiente, reason, revoca) e una condition Ready.
  4. Pubblica i diritti in un valutatore sicuro per la concorrenza che ogni controller di workload legge.
  5. Riaccoda la riconciliazione in prossimità della scadenza, così i controlli cambiano stato puntualmente.

Il controller osserva il Secret referenziato, quindi attivare una nuova licenza sovrascrivendo il token sul posto (lo stesso secretRef — è così che la console di gestione ne attiva una) viene recepito immediatamente; non è necessario modificare o riapplicare la CR License. A sua volta, ogni controller soggetto a licenza osserva la License, quindi un upgrade o un downgrade rivaluta tempestivamente le istanze esistenti — un componente rifiutato con i diritti precedenti si ripristina non appena la nuova licenza viene verificata.

Revoca ​

Una licenza può essere revocata prima della scadenza — ad esempio se il suo token è trapelato o è stato emesso per errore. L'operatore include una lista di revoca compilata nel binario, quindi funziona completamente in ambienti air-gapped, senza alcun controllo online. Una licenza revocata viene rifiutata anche se la sua firma è valida, e l'operatore ripiega sui valori predefiniti Community — esattamente come per una licenza scaduta, quindi la piattaforma di base continua a funzionare.

Quando una licenza è revocata, status.revoked è true, status.revokedReason riporta la categoria (ad es. compromised) e la condition Ready indica LicenseRevoked. Poiché la lista di revoca fa parte del binario dell'operatore, le revoche (e le correzioni di sicurezza distribuite insieme a esse) si ricevono mantenendo aggiornato l'operatore. Contatta Navique se una tua licenza risulta inaspettatamente revocata.

Diritti espliciti — nessun wildcard ​

La licenza contiene un elenco enumerato di features e limits quantitativi. Volutamente non esiste alcun diritto wildcard (["*"]) — ogni funzionalità e ogni numero di istanze è una leva di prezzo e viene applicato singolarmente.

json
{
  "licensee": "ACME Bank AG",
  "issuer": "Navique",
  "tier": "enterprise",
  "features": ["auto-wiring", "guardrail", "multi-tenancy", "sso-scim", "audit-logging"],
  "limits": { "gateways": 3, "langfuse": 1, "chatui": 2, "teams": 10 },
  "environment": "prod",
  "includedSupportHours": 40,
  "issued_at": "2026-06-01T00:00:00Z",
  "expiration_date": "2027-06-01T00:00:00Z"
}

Valori predefiniti Community (licenza assente / scaduta) ​

In assenza di una licenza valida — mai emessa o scaduta — l'operatore applica i valori predefiniti Community integrati e la piattaforma continua a funzionare:

  • Le funzionalità a pagamento sono disattivate (il controllo del guardrail fallisce in modo chiuso).
  • I limiti di istanze scendono al livello gratuito (una per tipo).
  • La piattaforma di base non è interessata.

Si tratta di un downgrade graduale, non di un'interruzione del servizio. Vedi Edizioni e licenze.

Che cosa controlla ​

  • Feature flag — ad es. auto-wiring, guardrail, multi-tenancy, sso-scim, audit-logging e la famiglia management-plane-* utilizzata dalla console.
  • Limiti di istanze per tipo — la creazione dell'istanza N+1 oltre il limite della licenza viene rifiutata con una condition LicenseLimitExceeded (non è trattata come un errore; le istanze esistenti continuano a funzionare).

La piattaforma di base non si blocca mai a causa della licenza — solo gli incrementi a pagamento sono soggetti a controllo, sempre con un'alternativa manuale o un chiaro percorso di rinnovo.

Nucleo open source sotto AGPL-3.0. I componenti Enterprise sono proprietari e soggetti a licenza.