Il problema inizia dieci secondi dopo l'inizio della chiamata
L'agente vocale AI di una clinica sente informazioni sanitarie protette (PHI) quasi subito. Un nome, una data di nascita, «Chiamo per i risultati delle mie analisi». Da quel momento ogni servizio toccato dall'audio gestisce PHI: l'API di speech-to-text, l'LLM, la voce sintetica, la registrazione della chiamata, i log e qualsiasi strumento di tracing che qualcuno abbia collegato durante il pilota. Ognuno è o un business associate con cui ti serve un accordo, o un posto dove quei dati non puoi proprio mandarli.
Far girare l'intero agente nel tuo account AWS cambia la forma di questo problema. L'audio, la trascrizione e il prompt non lasciano mai la tua VPC, e l'elenco delle aziende con cui firmi un Business Associate Agreement (BAA) diventa corto. Questa guida spiega dove passano davvero le PHI in un agente vocale, quali accordi ti servono ancora, i rischi tipici della voce (la verifica di chi chiama è il principale) e uno stack di riferimento. È una guida tecnica, non una consulenza legale. Fai rivedere quello che costruisci dal tuo responsabile della conformità o da un legale.
Il verdetto in breve
Volumi alti, pochi fornitori ammessi
Audio, trascrizioni e prompt restano nella tua VPC. Il BAA che conta è quello di AWS, e le tariffe al minuto spariscono.
Vuoi meno server da gestire
Amazon Transcribe, Bedrock e Polly sono tutti idonei per HIPAA, quindi rientrano nello stesso BAA di AWS. Rinunci alle GPU in cambio di prezzi a consumo.
Un pilota nelle prossime settimane
Scegli una piattaforma che firmi un BAA e controlla che anche ogni fornitore di modelli dietro di essa sia coperto.
Nessuna analisi dei rischi documentata
Fai prima l'analisi dei rischi. Ogni scelta di progettazione descritta più avanti dovrebbe partire da lì.
Prima di iniziare
- Una persona designata come responsabile della conformità HIPAA e un'analisi dei rischi aggiornata
- Un account AWS con il Business Associate Agreement di AWS accettato in AWS Artifact, idealmente un account dedicato ai carichi di lavoro con PHI
- L'elenco di tutti i sistemi da cui l'agente leggerà o in cui scriverà: cartella clinica, agenda appuntamenti, fatturazione
- Pazienti fittizi e numeri di telefono di test. Le chiamate reali restano fuori dallo sviluppo.
Dove passano le PHI in un agente vocale AI
La maggior parte degli agenti vocali è una catena: entra l'audio di chi chiama, rilevamento dell'attività vocale e dei turni di parola, speech-to-text, un LLM, text-to-speech, esce l'audio. La nostra guida allo stack self-hosted per agenti vocali AI copre ogni livello e la scelta open source per ciascuno. Per HIPAA la domanda è un'altra: cosa vede ogni livello, e dove lo conserva?
| Livello | PHI che tocca | Dove possono rimanere |
|---|---|---|
| Telefonia o WebRTC | La voce e il numero di telefono di chi chiama | Tabulati dell'operatore, registrazioni delle chiamate, segreteria telefonica |
| Speech-to-text | Tutto quello che dice chi chiama, in forma di testo | File di trascrizione, log del servizio STT |
| LLM | La trascrizione, più quello che i tuoi strumenti restituiscono dalla cartella clinica | Log delle richieste, cache dei prompt, strumenti di tracing e valutazione |
| Strumenti e integrazioni | Appuntamenti, referti, farmaci, assicurazione | Log delle API da entrambe le parti, report degli errori |
| Text-to-speech | Tutto quello che l'agente risponde | Log del TTS, audio in cache |
| Osservabilità | Spesso tutto quanto sopra, in un unico posto | Trace, dashboard, sistemi di tracciamento delle eccezioni |
Il rischio raramente è la chiamata in diretta. Sono gli avanzi. Una trascrizione in una riga di log, un prompt in uno strumento di tracing, una registrazione in un bucket a cui nessuno ha dato una regola di ciclo di vita. Mappa ogni posto della terza colonna prima di andare in produzione.
Tre modi per costruirlo su AWS
Completamente self-hosted
Ideale per volumi alti ed elenchi di fornitori rigidi
LiveKit per il trasporto, faster-whisper per lo speech-to-text, un LLM open-weights su vLLM su AWS e Kokoro per la voce, tutto su EC2 nella tua VPC. Il BAA che conta è quello di AWS.
Servizi AI nativi di AWS
Ideale per avere meno server da gestire
Amazon Transcribe, Bedrock e Polly, con Amazon Connect o il Chime SDK per le chiamate. Sono tutti nell'elenco dei servizi idonei per HIPAA di AWS, quindi li copre lo stesso BAA di AWS. Paghi a consumo.
Piattaforma vocale gestita
Ideale per un pilota veloce
Una piattaforma di agenti ospitata che firmi un BAA. Qui LiveKit fa eccezione al solito obbligo di un contratto enterprise: secondo la sua pagina sulla sicurezza, il piano Scale in self-service da 500 $ al mese include un BAA firmato. Dovrai comunque coprire a parte i provider di speech-to-text, LLM e text-to-speech che ci sono dietro.
Una cosa da verificare prima di costruire: le versioni di vLLM dalla 0.8 alla 0.10 avevano una vulnerabilità (CVE-2026-15430) che riguarda la modalità di confidential computing all'interno di un Trusted Execution Environment (TEE). Usa vLLM 0.10.1 o successivo e il formato SafeTensors per i pesi del modello. Fuori dalla modalità TEE il rischio è più circoscritto, ma SafeTensors è comunque la scelta predefinita giusta.
Da sapere: Amazon Bedrock AgentCore è diventato idoneo per HIPAA il 10 febbraio 2026, insieme a Bedrock stesso. Se costruisci flussi di lavoro basati su agenti invece di una semplice chiamata a un LLM, AgentCore ti dà isolamento delle sessioni, controllo degli accessi basato su policy e log pronti per l'audit, sotto lo stesso BAA.
Le prime due opzioni si possono combinare. Molti team ospitano in proprio l'LLM, perché è lì che arriva il contesto più sensibile, e usano Amazon Transcribe per lo speech-to-text mentre dimensionano le GPU. Il nostro confronto tra LiveKit Agents e Pipecat tratta la scelta del framework, che è la stessa in entrambi i casi.
I BAA che ti servono comunque
Ospitare in proprio non fa sparire il cloud provider. Un fornitore che conserva o elabora ePHI è un business associate anche quando i dati sono cifrati, come spiega la nostra guida HIPAA per la telemedicina video self-hosted. L'elenco degli accordi per un agente vocale è quindi questo:
AWS
Accetta il BAA di AWS in AWS Artifact, poi tieni le PHI nei servizi presenti nell'elenco dei servizi idonei per HIPAA. Quell'elenco ha superato i 200 servizi il 22 luglio 2026 e comprende EC2, EBS, S3, KMS, CloudTrail, Transcribe, Polly, Bedrock e Bedrock AgentCore. Un servizio che non è nell'elenco non riceve PHI, per quanto comodo sia.
Idoneo però non vuol dire conforme. Il BAA copre il servizio; le tue impostazioni devono comunque essere corrette: cifratura a riposo con KMS, TLS in transito e nessuna PHI in log a cui non hai pensato.
Il tuo provider telefonico
Un operatore che si limita a far passare la chiamata può rientrare nell'eccezione «conduit» di HIPAA. Uno che registra le chiamate, conserva la segreteria telefonica o trascrive l'audio gestisce PHI e probabilmente ha bisogno di un BAA. Lascia decidere al tuo responsabile della conformità nel caso del tuo provider.
Tutto ciò che vede i log
Gli strumenti di tracing, di tracciamento degli errori, di ricerca nei log e di valutazione degli LLM sono i punti da cui gli agenti vocali perdono dati. Se uno strumento SaaS può vedere trascrizioni o prompt, gli serve un BAA, oppure deve smettere di vederli.
Chi ha accesso ai server
A qualsiasi collaboratore esterno o fornitore di assistenza che possa accedere alle istanze mentre ti aiuta va chiesto direttamente se serve un BAA.
Le cinque misure di sicurezza su un agente vocale
Le misure di sicurezza tecniche della Security Rule di HIPAA, in 45 CFR 164.312, sono state scritte molto prima degli agenti vocali, ma si applicano senza forzature anche a un agente vocale.
| Misura | Su un agente vocale |
|---|---|
| Controllo degli accessi | Dai all'agente credenziali proprie e con permessi minimi per ogni sistema che chiama, custodite in Secrets Manager. Il personale che rivede le chiamate accede individualmente tramite SSO, mai con un'utenza condivisa. |
| Controlli di audit | CloudTrail per l'account AWS, più un log applicativo di ogni chiamata a uno strumento: quale chiamante, quale cartella, quale azione. Registra il fatto che c'è stato un accesso, non il contenuto. |
| Integrità | Tutto ciò che scrive nella cartella di un paziente (prenotare, cancellare, aggiornare) passa da un passaggio di conferma e da uno strumento validato, mai da testo libero del modello. |
| Autenticazione di persone o entità | Per il personale, SSO con autenticazione a più fattori. Per chi chiama, un passaggio di verifica prima di rivelare qualsiasi PHI (vedi sotto). |
| Sicurezza della trasmissione | TLS e SRTP sul trunk SIP, DTLS-SRTP per WebRTC, TLS tra i servizi interni e le istanze GPU in subnet private senza IP pubblico. |
Per l'accesso del personale, Keycloak su AWS ti dà SSO con MFA nello stesso account. E ricorda che la norma stessa si sta muovendo: a gennaio 2025 l'HHS ha proposto una revisione della Security Rule che renderebbe obbligatoria la cifratura a riposo e in transito, anziché «addressable», cioè da valutare in base all'analisi dei rischi. La norma definitiva è stata rinviata a luglio 2027, quindi non è ancora in vigore, ma la direzione è chiara. Costruisci come se lo fosse già.
La verifica di chi chiama è il rischio tipico della voce
I portali web hanno un login. Le linee telefoniche hanno chiunque stia chiamando. Un agente vocale che legge i dettagli di un appuntamento o un referto a chiunque conosca il nome di un paziente sta rivelando PHI a una persona non verificata, ed è l'errore che la maggior parte delle demo di agenti vocali salta.
La soluzione è un passaggio di verifica prima che venga eseguito qualsiasi strumento con PHI: data di nascita più un secondo identificativo, come il CAP registrato o un codice inviato via SMS. E la parte importante: imponilo nel codice. Un prompt che dice «verifica sempre prima chi chiama» è un suggerimento da cui il modello può essere dissuaso. Uno strumento che si rifiuta di funzionare, no.
# Every PHI tool checks the session, not the prompt.
class CallSession:
def __init__(self):
self.verified_patient_id = None
def verify_caller(session, dob, postcode):
patient = ehr.find_patient(dob=dob, postcode=postcode)
if patient is None:
return "I couldn't match those details."
session.verified_patient_id = patient.id
return "Thanks, you're verified."
def get_next_appointment(session):
if session.verified_patient_id is None:
raise PermissionError("caller not verified")
return ehr.next_appointment(session.verified_patient_id) Altre due regole che evitano guai. Limita i tentativi di verifica per chiamata e passa la chiamata a una persona dopo il limite. E non lasciare mai che l'agente confermi quale parte dei dati era sbagliata, perché «quella data di nascita non corrisponde» dice a uno sconosciuto che il nome era giusto.
Registrazioni, trascrizioni e log
- Decidi se registrare o noMolti team non conservano l'audio, solo un riepilogo strutturato scritto nella cartella clinica. Se registri, fallo di proposito, con il consenso, per un motivo che sai indicare.
- Cifra tutto a riposoVolumi EBS e bucket S3 cifrati con chiavi KMS che controlli tu. Snapshot e backup copiano anche le PHI, quindi richiedono lo stesso trattamento.
- Disattiva il logging delle richieste in produzioneI server di inferenza e i servizi di speech-to-text possono registrare le richieste nei log. Controlla cosa scrivono i tuoi e tieni trascrizioni e prompt fuori dai log applicativi.
- Stabilisci la conservazione, poi applicalaLe regole di ciclo di vita di S3 cancellano registrazioni e trascrizioni secondo il calendario fissato dalla tua policy. Una policy di conservazione che nulla fa rispettare è solo un documento.
- Registra gli accessi, non i contenutiChi ha aperto quale registrazione, e quando. Gli eventi di dati di CloudTrail sul bucket ti danno questo senza copiare PHI in un altro sistema.
Le stesse regole di cifratura della nostra guida su WebRTC per gli agenti vocali AI valgono per il trasporto: i media sono cifrati in transito per impostazione predefinita, e il tuo compito è tenere il relay TURN e l'agente dentro il tuo perimetro.
Uno stack di riferimento su AWS
Ecco un'architettura completamente self-hosted che tiene le PHI in servizi idonei per HIPAA, in un unico account.
| Componente | Gira su | Note |
|---|---|---|
| Trasporto (WebRTC e SIP) | LiveKit su EC2, subnet pubblica | TLS e SRTP verso il trunk SIP; vedi ospitare in proprio LiveKit su AWS |
| Worker dell'agente | EC2 o EKS, subnet privata | LiveKit Agents o Pipecat; mantiene la sessione e impone la verifica |
| Speech-to-text e LLM | EC2 con GPU, subnet privata | faster-whisper e un modello open-weights su vLLM 0.10.1+, senza IP pubblico; formato SafeTensors |
| Text-to-speech | EC2, subnet privata | Kokoro gira su CPU, con licenza Apache 2.0, adatto alle modalità HIPAA senza conservazione dei dati |
| Segreti | Secrets Manager | Credenziali della cartella clinica e dell'agenda, con permessi per singolo strumento |
| Storage | S3 ed EBS con KMS | Regole di ciclo di vita per tutto ciò che conservi |
| Audit | CloudTrail e CloudWatch | Solo metadati, nessuna trascrizione |
| Accesso del personale | Keycloak su EC2 | SSO con MFA per chiunque riveda le chiamate |
Ogni servizio AWS di questa tabella è nell'elenco dei servizi idonei per HIPAA. Verifica l'idoneità nella tua regione prima di costruire, perché può variare. Sui costi, la GPU è la voce principale: il nostro confronto dei costi GPU per l'inferenza LLM riporta i prezzi attuali delle istanze, e la guida per sviluppatori di vLLM spiega come avviare il server di inferenza.
Cosa fa saltare HIPAA in questo caso
I modi più comuni in cui un progetto conforme perde dati
- Uno strumento SaaS di tracing o di valutazione degli LLM collegato durante il pilota, che riceve ancora ogni trascrizione
- Un fallback su un'API LLM ospitata «solo quando la GPU è occupata». Sono PHI che finiscono a un fornitore senza BAA, proprio nell'ora di punta
- Un sistema di tracciamento delle eccezioni che cattura il corpo della richiesta quando una chiamata a uno strumento fallisce
- Registrazioni in un bucket senza regola di ciclo di vita, conservate per sempre per impostazione predefinita
- Un agente che legge PHI prima di aver verificato chi chiama
- Un servizio usato per PHI che non è nell'elenco dei servizi idonei di AWS, o non è idoneo nella tua regione
- Chiamate reali di pazienti usate per testare modifiche ai prompt
Il fallback merita un secondo sguardo. È la decisione tecnica più naturale del mondo, e smonta in silenzio tutto il progetto. Se la GPU esaurisce la capacità, metti la chiamata in coda o passala a una persona.
Da dove iniziare
Inizia dall'analisi dei rischi e dal BAA di AWS, non dal modello. Poi costruisci la verifica di chi chiama e le regole sui log prima che l'agente possa fare qualcosa di interessante, perché aggiungerle dopo è molto più difficile che migliorare un prompt.
Per un primo deploy, tieni il perimetro stretto: prenotazione di appuntamenti e promemoria, niente referti né consigli clinici. Ospita in proprio l'LLM, perché è lì che arriva il contesto più sensibile, e scegli lo speech-to-text in base al volume. Con qualche centinaio di chiamate al mese, una piattaforma gestita con BAA costa meno di una GPU che resta inattiva giorno e notte (il nostro confronto dei costi degli agenti telefonici AI riporta i numeri). Con migliaia di chiamate al giorno, il tuo account AWS vince sui costi e sulla lunghezza dell'elenco dei fornitori. Quando sei pronto a far girare il modello in autonomia, la pagina di vLLM nello store ha le immagini per AWS e Google Cloud.
Domande frequenti
Un agente vocale AI può essere conforme a HIPAA?
Sì, ma la conformità dipende da come lo costruisci e lo gestisci, non dal modello. Ti servono un'analisi dei rischi, un BAA con AWS e con ogni altro business associate, le PHI solo in servizi idonei, controlli di accesso, log di audit e la verifica di chi chiama prima di rivelare qualsiasi PHI.
Serve un BAA per far girare un agente vocale su AWS?
Sì. Accetta il BAA di AWS in AWS Artifact e conserva le PHI solo nei servizi presenti nell'elenco di quelli idonei per HIPAA. Ospitarlo in proprio non elimina l'obbligo; accorcia solo l'elenco degli altri fornitori con cui ti servono accordi.
Quali servizi AWS sono idonei per HIPAA nell'AI vocale?
EC2, EBS, S3, KMS, CloudTrail, Transcribe, Polly, Bedrock e Bedrock AgentCore sono nell'elenco. L'elenco ha superato i 200 servizi a luglio 2026 e può variare in base alla regione, quindi controlla quello aggiornato prima di costruire.
Un agente vocale self-hosted è più adatto a HIPAA di una piattaforma gestita?
Può esserlo, perché meno fornitori toccano i dati e le tue PHI restano nel tuo account. Ma anche una piattaforma gestita con un BAA vero e sub-responsabili verificati può essere conforme. Il piano Scale di LiveKit, per esempio, include un BAA a 500 $ al mese. La risposta giusta dipende dal volume, dai vincoli sui fornitori e da quanta infrastruttura vuoi gestire.
Il mio provider di trunk SIP ha bisogno di un BAA?
Dipende da cosa fa. Un semplice canale di transito può rientrare nell'eccezione «conduit». Un provider che registra, conserva la segreteria telefonica o trascrive gestisce PHI e probabilmente ha bisogno di un BAA. La decisione spetta al tuo responsabile della conformità.
Come deve verificare l'agente chi chiama?
Data di nascita più un secondo identificativo: il CAP registrato o un codice inviato via SMS. Imponilo nel codice, limita i tentativi, passa la chiamata a una persona dopo il limite e non rivelare mai quale dato era sbagliato.
L'agente deve registrare le chiamate?
Solo se hai un motivo preciso e il consenso corrispondente. Molti team non conservano l'audio e scrivono invece un riepilogo strutturato nella cartella clinica elettronica. Se registri, cifra i dati a riposo con KMS, stabilisci i tempi di conservazione e applicali con regole di ciclo di vita.
Quanto costa un agente vocale HIPAA self-hosted su AWS?
La GPU è la voce principale. Un'istanza GPU da circa 1 $ all'ora accesa 24/7 costa circa 720 $ al mese, esclusi storage, rete e altre risorse di calcolo. Con qualche centinaio di chiamate al mese, una piattaforma gestita di solito costa meno. Con migliaia al giorno, ospitarlo in proprio conviene.
Fai girare l'LLM nel tuo account AWS
Avvia un server di inferenza vLLM preconfigurato nella tua VPC, così prompt e trascrizioni non lasciano mai il tuo account.
Distribuisci vLLM su AWS Marketplace