Tutto qui si collega al tuo workspace ed è configurato dalla console. La tua
app continua a chiamare
https://api.orcarouter.ai/v1/chat/completions con la
chiave sk-orca-... di ciascun tenant — cambia solo la policy nel gateway. Le
azioni di config richiedono i ruoli indicati per ciascun passaggio; solo le
chiamate di relay /v1/* usano una chiave di tenant.1. Il modello di sicurezza AI multi-tenant
Un gateway multi-tenant ha una forma di threat diversa da una singola app. I rischi che contano scalano con il numero di tenant:Leak della chiave = blast radius di un tenant
Una chiave di tenant trapelata non dovrebbe poter drenare il tuo account,
chiamare modelli che non hai mai esposto, o andare oltre il budget di quel
tenant.
Sanguinamento di dati cross-tenant
Le PII di un tenant che finiscono in log condivisi, o in una risposta
instradata a un altro tenant, rompono la tua promessa di isolamento dei dati.
Un agent di tenant rumoroso
L’agent di un tenant in loop su un tool o che recupera host arbitrari non
dovrebbe degradare il gateway per tutti gli altri.
Compliance per-tenant
Un tenant regolamentato può aver bisogno di masking delle PII e
data-residency che il resto dei tuoi tenant no.
2. La baseline: una policy di workspace che ogni tenant eredita
Scrivi la tua postura di sicurezza una volta a livello di workspace così ogni chiave di tenant la eredita per default — nessuna duplicazione per-tenant.Un guardrail di default
In Guardrails → New guardrail, scrivi una policy nominata (es.
Qualsiasi chiave di tenant senza collegamento esplicito di guardrail
ricade su questo default. Scrivere un guardrail richiede il ruolo
Developer.
tenant-baseline) e marcala come default del workspace (is_default).
Aggiungi una regola PII, stage input, azione mask, così la
richiesta di nessun tenant porta PII grezze a monte:Una policy del firewall di default
Se i tuoi tenant eseguono agent, fai lo stesso sul piano delle azioni: in
Firewall → Policies, scrivi una policy di default o — più veloce — apri
Firewall → Posture e applica il
livello di autonomia
balanced. Quello auditerà le chiamate a tool di ogni tenant e segnala
le PII a livello di workspace mentre nega le azioni più distruttive, così
osservi il comportamento reale dei tenant prima di applicare ampiamente.
Ruolo Developer.3. Una chiave con scope per tenant
Questo è il cuore dell’isolamento dei tenant: non condividere mai una chiave tra tenant, e non consegnare mai a un tenant la tua chiave a livello di account. Conia una chiave per tenant, con scope esattamente a ciò che quel tenant può fare. In API Keys → New key, imposta:Limita la spesa (confine denial-of-wallet)
Limita la spesa (confine denial-of-wallet)
Imposta
credit_limit_usd al tetto di quel tenant (0 = illimitato). Questo
è il controllo multi-tenant singolo più importante: una chiave di tenant
trapelata o abusata può solo mai bruciare il budget di quel tenant, mai il
tuo account. Vedi
denial-of-wallet.Fissa i modelli
Fissa i modelli
Attiva
model_limits (model_limits_enabled) ed elenca solo il/i modello/i
che il piano di quel tenant include — così una chiave trapelata non può
eseguire un modello costoso che il tenant non ha mai pagato.Etichetta l'environment / tenant
Etichetta l'environment / tenant
Imposta
environment (un’etichetta di deployment in forma libera, es. prod
/ staging) così il traffico di un tenant è attribuibile nei tuoi log e puoi
distinguere a colpo d’occhio le chiavi di produzione da quelle di test.Blinda origine e durata
Blinda origine e durata
Imposta
allow_ips sugli IP di egress del backend di quel tenant se chiama
da un server fisso, e expired_time per i tenant in trial o a tempo
(-1 = non scade mai).tenant-baseline del
workspace e la policy del firewall di default — hai coniato una chiave con scope,
ed è già governata. La chiave è mascherata in visualizzazione dopo la
creazione, quindi copiala una sola volta quando fai il provisioning del tenant.
4. Override per-tenant — irrigidisci uno senza toccare il resto
La maggior parte dei tenant cavalca la baseline. Quando uno ha bisogno di più — un tenant regolamentato, un tier enterprise, un tenant su una lista di probation — collega una policy nominata più stretta a quella chiave soltanto:| Impostato sulla chiave | Effetto per quel solo tenant |
|---|---|
guardrail_id | Sostituisce un guardrail nominato più stretto (es. block-on-PII). |
firewall_policy_id | Sostituisce una policy del firewall più stretta (es. tool default-deny). |
Guardrails: il collegamento esplicito è l'interruttore di disattivazione
Guardrails: il collegamento esplicito è l'interruttore di disattivazione
Un
guardrail_id esplicito (quando esiste ed è abilitato) si applica
sempre e non ricade mai silenziosamente. Se quel guardrail collegato è
disabilitato, la chiave non riceve alcun guardrail — non scende al
default del workspace. Lascia guardrail_id non impostato (0/null) per
ereditare il default tenant-baseline.Firewall: un collegamento disabilitato ricade
Firewall: un collegamento disabilitato ricade
Un
firewall_policy_id collegato si applica quando esiste ed è abilitato; se
quella policy è disabilitata, la chiave ricade sulla policy del
firewall di default del workspace. (Questo è l’opposto del comportamento di
interruttore del guardrail — per design.)5. Un esempio concreto a due tier
Diciamo che gestisci un tier gratuito e un tier enterprise regolamentato su un solo workspace:- Baseline di workspace — guardrail
tenant-baseline(mask PII su input, block su carta/SSN) comeis_default, più il livello di autonomiabalanceddel firewall. Ogni tenant eredita questo. - Chiave di tenant free-tier — nessun
guardrail_id(eredita la baseline),model_limitsfissato suopenai/gpt-4o-mini, uncredit_limit_usdbasso. - Chiave di tenant enterprise —
guardrail_idimpostato su un guardrailenterprise-piipiù stretto (PII block, non mask, su input; block dei secrets allo stageoutput), unfirewall_policy_idcon una allow-list di tool più stretta, un cap di credito più alto, eallow_ipsfissato sul loro backend.
/v1/chat/completions con la
propria chiave. Il gateway risolve la policy giusta per chiave — il codice della
tua applicazione è identico per ogni tenant.
6. Compliance e residency per-tenant
Un tenant regolamentato spesso ha bisogno di un’attestazione che il resto no. La Compliance gira come un pari di workspace di guardrail e firewall:- Sfogliare il catalogo dei framework e la readiness è aperto a qualsiasi
Member ed è gratuito — conferma la copertura per il framework che un
tenant chiede (
soc2,hipaa,gdpr,iso_27001,pci_dsse altri). - Installare un pack (
POST /api/compliance/packs/:key/install) materializza i guardrail e le policy del firewall corrispondenti nel tuo workspace; richiede Admin del workspace e un piano a pagamento. - La Data residency fissa la regione del tuo artefatto di report di
compliance (
us/eu/uk/ap/cn/global) tramitePUT /api/compliance/residency(Admin). Le letture cross-region sono negate.
La residency qui governa l’artefatto del report di compliance, non il
geo-pinning dei dati di inferenza. Per la storia dei request-log: i log si
conservano per un default di 30 giorni (cap rigido a 180), e un’auto-cancellazione
dell’utente esegue una grace di 30 giorni poi una purga delle PII che cascata ai
guardrail match e ai request-log di quell’utente.
7. Osserva ogni tenant da un solo workspace
Tutta l’osservabilità ha scope a livello di workspace, così un solo insieme di feed copre tutti i tuoi tenant — filtrabile fino a uno solo:- Guardrails → Matches (qualsiasi Member) — ogni regola che è scattata su tutti i tenant: tipo, azione, stage, dettaglio. La sottostringa corrispondente è registrata solo se Log raw content è attivo per quel guardrail (disattivato per default — la postura conservativa sulla privacy, che conta di più in multi-tenant). Marca un falso positivo per mettere a punto (Admin).
- Firewall → Events / Runs (Developer+) — ogni chiamata a tool, aggregata per esecuzione dell’agent, così il loop di un tenant rumoroso o un egress nuovo spicca.
- Feed delle anomalie (Member) — picchi di rate/costo valutati rispetto a una baseline ora-della-settimana appresa colgono un tenant che brucia fuori pattern anche quando ogni chiamata è individualmente consentita.
guardrail_blocked /
firewall_blocked), non costa quota a quel tenant, ed è marcata skip-retry —
il confine ha tenuto senza addebitare al tenant il rifiuto.
8. Dove approfondire
Scope di chiavi, policy, workspace
L’ordine di risoluzione completo per il collegamento della chiave e i default
del workspace.
Riferimento Guardrails
Ogni tipo di regola, entità PII e override per-entità per intero.
Riferimento Firewall
Verdetti, superfici, livelli di autonomia e il piano della policy.
Fermare l'esfiltrazione di dati
Blinda l’egress in uscita di un agent di tenant.
