Workload Identity Federation
Autentica i workload verso la Claude API con token di identità a breve durata provenienti dal tuo identity provider invece di chiavi API statiche a lunga durata.
La "Workload Identity Federation" (federazione delle identità dei workload), o WIF, consente ai tuoi workload di autenticarsi verso la Claude API con token OpenID Connect (OIDC) a breve durata invece di chiavi API sk-ant-... a lunga durata. I token provengono da un "identity provider" (provider di identità), o IdP, che già gestisci: AWS IAM, Google Cloud o qualsiasi emittente OIDC conforme agli standard come GitHub Actions, Kubernetes, SPIFFE, Microsoft Entra ID o Okta.
Il tuo workload presenta un JWT firmato dal tuo identity provider. Anthropic lo convalida rispetto alle regole di fiducia che configuri nella Claude Console e restituisce un token di accesso Anthropic a breve durata associato a un service account nella tua organizzazione. Non ci sono segreti statici da generare, archiviare nella CI, ruotare o far trapelare.
La Workload Identity Federation rafforza la tua postura di sicurezza sostituendo le chiavi API statiche con token che scadono in pochi minuti anziché mai. Non costituisce da sola una soluzione di sicurezza completa: l'autenticazione federata è forte solo quanto l'identity provider a monte che firma il JWT. Abbina la Workload Identity Federation ai controlli che il tuo IdP già supporta (binding dell'identità del workload, accesso condizionale, audit logging) per una difesa in profondità.
Concetti
Configuri tre risorse nella Claude Console prima che qualsiasi workload possa federarsi. Insieme esprimono "i token firmati dall'emittente X, con claim che hanno l'aspetto di Y, possono agire come service account Z."
Service account
Un service account (account di servizio, svac_...) è un'identità non umana con nome all'interno della tua organizzazione Anthropic. È il principal per conto del quale agisce una chiave di service account o un token federato. I service account esistono a livello di organizzazione e diventano attivi in un workspace quando li aggiungi come membri di quel workspace. Al momento dello scambio, Anthropic verifica che il workspace della regola di federazione corrisponda a una delle appartenenze ai workspace del service account; il token generato segue quindi i limiti di velocità e l'attribuzione dell'utilizzo di quel workspace, esattamente come una chiave API. A differenza di un utente umano, un service account non ha email, password né accesso alla Console. Ogni service account è implicitamente membro del workspace predefinito della tua organizzazione; aggiungi appartenenze esplicite per qualsiasi altro workspace in cui debba agire. Per consentire a una chiave di service account valida per tutti i workspace di agire in un workspace, aggiungi il service account a quel workspace.
La distinzione chiave rispetto a una chiave API di workspace: una chiave API di workspace è una credenziale, mentre un service account ha delle credenziali. Puoi verificare più facilmente quali workload hanno agito come quale service account.
Emittenti di federazione
Un federation issuer (emittente di federazione, fdis_...) registra un identity provider OIDC presso la tua organizzazione. Registrare un emittente comunica ad Anthropic "i JWT firmati da questo provider possono asserire l'identità dei workload per la mia organizzazione."
Un emittente ha due elementi di configurazione:
- URL dell'emittente: Il valore esatto del claim
issche appare nei JWT del provider, ad esempiohttps://token.actions.githubusercontent.comohttps://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLE. - Sorgente JWKS: Il modo in cui Anthropic recupera le chiavi pubbliche per verificare le firme dei JWT. Usa
discovery(il valore predefinito) per qualsiasi provider che serve/.well-known/openid-configurational proprio URL dell'emittente. Usaexplicit_urlper puntare direttamente a un endpoint JWKS, oppureinlineper caricare il set di chiavi per emittenti non raggiungibili dalla rete internet pubblica (ad esempio, un cluster Kubernetes privato).
Gli URL dell'emittente e del JWKS devono essere https, sulla porta 443, e usare un hostname DNS pubblico che si risolva in indirizzi IP pubblici; gli IP letterali non sono accettati. Questi vincoli si applicano solo agli URL che Anthropic recupera; nelle modalità explicit_url e inline l'issuer_url viene confrontato come stringa e può fare riferimento a un hostname interno.
In genere registri un emittente per ambiente: il tuo cluster EKS di produzione, il tuo cluster di staging e GitHub Actions sono tre emittenti separati.
Regole di federazione
Una federation rule (regola di federazione, fdrl_...) è il ponte tra un emittente e un service account: "quando un JWT dall'emittente X ha claim che hanno l'aspetto di Y, genera un token per il service account Z con scope S."
Una regola definisce le condizioni di corrispondenza, un target, e lo scope di autorizzazione e la durata del token che si applicano quando la regola corrisponde:
- Corrispondenza: Le condizioni che un JWT in ingresso deve soddisfare. Puoi effettuare la corrispondenza su un
subject_prefix(ad esempio,system:serviceaccount:prod:worker, oppure con un*finale per una corrispondenza di prefisso), unaudienceesatto, una mappa di valori esatti dei claim, un'espressioneconditionin CEL per logica complessa, o qualsiasi combinazione. Almeno uno trasubject_prefix,claimsoconditiondeve essere impostato, e tutti i matcher configurati devono essere soddisfatti affinché il JWT venga accettato. - Target: Il service account a cui viene mappato il JWT corrispondente.
- Autorizzazione: Lo
scopeOAuth concesso sul token generato. Il valore predefinito èworkspace:developer, che concede lo stesso accesso di una chiave API di workspace. Alcuni prodotti bloccano lo scope quando crei una regola dal loro flusso; ad esempio, la finestra modale di creazione tunnel degli MCP tunnels crea regole con scopeworkspace:manage_tunnels. Consulta Scope OAuth. La regola imposta anchetoken_lifetime_seconds(da 60 a 86400, predefinito 3600).
Un singolo emittente può avere molte regole: una per team, namespace o livello di permesso. Le regole vengono valutate per ID: il client specifica quale regola usare nella richiesta di scambio, e Anthropic verifica che il JWT soddisfi i criteri di corrispondenza di quella regola. Non esiste una ricerca implicita delle regole.
Come funziona
- Il tuo IdP emette un JWT per il workload. Sulla maggior parte delle piattaforme questo è ambientale: un token di service account proiettato di Kubernetes, il metadata server di Google Cloud, Azure IMDS o l'endpoint OIDC di GitHub Actions. Il claim
issdel JWT identifica il provider, e il suosube gli altri claim identificano il workload specifico. - L'SDK scambia il JWT con un token di accesso Anthropic. L'SDK invia il JWT a
POST /v1/oauth/tokenusando il grantjwt-bearerdi RFC 7523. Anthropic verifica il JWT rispetto al JWKS dell'emittente e alle condizioni di corrispondenza della regola di federazione, quindi restituisce un tokensk-ant-oat01-...a breve durata che agisce per conto del service account target della regola. - L'SDK invia il token a ogni richiesta e lo rinnova prima che scada. Il codice della tua applicazione costruisce il client senza
api_keye chiama l'API come di consueto. L'SDK riesegue lo scambio prima che il token scada.
Configura la federazione
Ti servono il ruolo admin, owner o primary owner nella tua organizzazione Anthropic, un identity provider compatibile con OIDC con un endpoint JWKS raggiungibile (o un documento JWKS che puoi incollare, per cluster air-gapped), e un workload in grado di ottenere un token di identità da quel provider.
La procedura guidata Connect workload crea tutte e tre le risorse (l'emittente, il service account e la regola di federazione) in un unico flusso guidato, quindi verifica la connessione end-to-end.
Apri Connect workload
Nella Claude Console, vai su Settings → Workload identity e seleziona Connect workload.
Scegli il tuo provider
Seleziona il riquadro del tuo identity provider: GitHub Actions, AWS, Google Cloud, Microsoft Entra ID o Kubernetes. Ogni riquadro precompila il pattern dell'URL dell'emittente e i campi di corrispondenza supportati dai JWT di quel provider. Per qualsiasi altro provider conforme agli standard (come SPIFFE o Okta), seleziona Custom OIDC.
Compila i campi guidati
La procedura guidata ti accompagna attraverso i campi specifici del provider: la configurazione dell'emittente, le condizioni di corrispondenza per i JWT in ingresso e i nomi per il service account e la regola di federazione che crea. La procedura guidata precompila
oauth_scope=workspace:developeretoken_lifetime_seconds=600(il valore predefinito dell'API quandotoken_lifetime_secondsviene omesso è 3600); modificali se il tuo workload necessita di uno scope o di una durata diversi.Verifica l'emittente
Facoltativamente seleziona Verify issuer per eseguire una prova a secco della configurazione dell'emittente prima che venga creato qualcosa. La verifica conferma che Anthropic può recuperare e analizzare il JWKS dagli URL che hai inserito, il che permette di individuare precocemente errori di raggiungibilità e di configurazione.
Testa la connessione
La procedura guidata crea l'emittente, il service account e la regola di federazione, quindi resta in ascolto di uno scambio di token riuscito per 15 minuti. Attiva uno scambio dal tuo workload entro quella finestra (vedi Autenticati dal tuo workload) per confermare che la configurazione funzioni. Se la finestra scade, le risorse persistono; puoi rieseguire il test dalla pagina di dettaglio della regola di federazione. Prendi nota dell'ID della regola (
fdrl_...) e dell'ID del service account (svac_...) creati dalla procedura guidata: il tuo workload li passa entrambi, insieme all'ID della tua organizzazione (e all'ID del tuo workspace quando la regola copre più di un workspace), in ogni richiesta di scambio token.
Per gestire queste risorse in modo programmatico, consulta Gestisci WIF con l'Admin API per la procedura dettagliata con curl, oppure consulta il riferimento API dei service account, il riferimento API degli emittenti di federazione e il riferimento API delle regole di federazione per i dettagli completi dei parametri e gli schemi di risposta.
Autenticati dal tuo workload
Con la federazione configurata, il tuo workload scambia a runtime il JWT emesso dal suo IdP con un token Anthropic. Gli SDK gestiscono per te lo scambio e il ciclo di rinnovo. La scheda cURL mostra lo scambio HTTP sottostante per script shell, debugging o linguaggi senza supporto SDK.
Costruisci il client SDK
Puoi costruire il client con credenziali esplicite o senza argomenti. Senza argomenti, l'SDK risolve le credenziali dalle variabili d'ambiente o dal profilo attivo, come descritto in Precedenza delle credenziali. La forma senza argomenti è il pattern consigliato per i workload di produzione: distribuisci la stessa immagine container ovunque e inietta ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID, ANTHROPIC_WORKSPACE_ID e ANTHROPIC_IDENTITY_TOKEN_FILE per ambiente.
from anthropic import Anthropic, WorkloadIdentityCredentials, IdentityTokenFile
client = Anthropic(
credentials=WorkloadIdentityCredentials(
identity_token_provider=IdentityTokenFile(
"/var/run/secrets/anthropic.com/token"
),
federation_rule_id="fdrl_...",
organization_id="00000000-0000-0000-0000-000000000000",
service_account_id="svac_...",
workspace_id="wrkspc_...",
),
)
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(next(block.text for block in message.content if block.type == "text"))La risposta dello scambio token segue RFC 6749 §5.1. Consulta Risposta dello scambio token per il riferimento dei campi.
Precedenza delle credenziali
Ogni SDK risolve le credenziali nello stesso ordine a cinque livelli: argomenti del costruttore, poi ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN, poi un ANTHROPIC_PROFILE esplicito, poi le variabili d'ambiente di federazione, poi il profilo attivo implicito. La prima sorgente che fornisce una credenziale vince.
Per la tabella completa delle precedenze, la semantica di ciascun livello e lo schema del file di profilo, consulta Precedenza delle credenziali nel riferimento WIF.
Migra dalle chiavi API
Per passare un workload esistente da una chiave API statica alla federazione senza interruzioni:
- Configura la federazione in parallelo. Completa la procedura di configurazione e conferma che la regola di federazione corrisponda al token del tuo workload. Lascia per ora al suo posto l'
ANTHROPIC_API_KEYesistente. - Esegui uno smoke test per verificare quale credenziale vince. Esegui
ant auth statusdall'interno del workload (o ispeziona i log di debug dell'SDK). PoichéANTHROPIC_API_KEYsi trova al di sopra dei livelli di federazione nella catena di precedenza, in questa fase la chiave API vince ancora. - Rimuovi
ANTHROPIC_API_KEYovunque venga iniettata. Rimuovila dai segreti CI, dall'ambiente del container e dai profili shell (vedi l'avviso precedente). Rieseguiant auth statuse conferma che ora sia selezionata la sorgente di federazione. - Elimina la chiave API. Una volta che il workload è in esecuzione con il token federato, elimina la chiave nella Claude Console in Settings → API keys.
Durata e rinnovo del token
La durata del token Anthropic generato è il minore tra (a) il token_lifetime_seconds della regola (predefinito 3.600 secondi) e (b) il doppio della durata residua del JWT dell'IdP che hai presentato. Il risultato non è mai inferiore a 60 secondi. Il secondo limite impedisce che un token Anthropic sopravviva all'identità a monte da cui è stato derivato per più di un piccolo margine.
Gli SDK memorizzano il token nella cache e lo rinnovano secondo una pianificazione a due livelli modellata su botocore:
- Rinnovo consultivo alla scadenza meno 120 secondi. L'SDK tenta un nuovo scambio. Se l'endpoint dei token non è raggiungibile, l'SDK continua a servire il token in cache, che è ancora valido per circa altri 90 secondi.
- Rinnovo obbligatorio alla scadenza meno 30 secondi. Uno scambio fallito a questo punto genera un errore. Il token in cache è troppo vicino alla scadenza per essere sicuro.
Poiché l'SDK rilegge ANTHROPIC_IDENTITY_TOKEN_FILE a ogni scambio, recepisce in modo trasparente i token proiettati ruotati (i token di service account di Kubernetes, ad esempio, ruotano ben prima del loro exp).
Per impostazione predefinita, i token di identità che contengono un claim jti sono monouso: ogni scambio deve presentare un JWT che non sia stato scambiato in precedenza, e ripresentarne uno fallisce con il motivo jti_reused nella pagina della cronologia delle autenticazioni. Se il tuo workload recupera i propri token dal tuo identity provider, genera un JWT nuovo per ogni scambio invece di riutilizzarne uno in cache (i cicli di retry sono il colpevole più comune). Lo stesso vale per un token letto da ANTHROPIC_IDENTITY_TOKEN_FILE: l'SDK rilegge il file a ogni scambio, quindi il file deve contenere un nuovo token prima di ogni rinnovo. Un rinnovo che rilegge un token non ruotato, o un processo riavviato che ripresenta un token già scambiato, viene rifiutato allo stesso modo. Ruotare il token ben entro la durata del token generato mantiene il file in anticipo rispetto alla pianificazione dei rinnovi; se la tua sorgente di token non può ruotare così spesso, puoi disabilitare check_jti per quell'emittente come ultima risorsa (questo rimuove la protezione dal replay per ogni regola dell'emittente). Consulta Verifica JWT per i dettagli.
Identity provider
Ogni guida descrive da dove proviene il JWT su quella piattaforma, che aspetto hanno i suoi claim e la configurazione dell'emittente e della regola da registrare.
Token web identity di STS, o token proiettati EKS IRSA.
Token di identità firmati da Google provenienti dal metadata server.
Managed Identity (IMDS) ed Entra Workload ID su AKS.
Autenticazione CI senza chiavi con il token OIDC di Actions.
Cluster autogestiti e on-premises che usano token di service account proiettati.
Workload con JWT-SVID SPIFFE da SPIRE o da un altro emittente conforme.
Applicazioni di servizio Okta che usano il flusso client-credentials.
Vedi anche
- Gestisci WIF con l'Admin API: crea emittenti, service account e regole dall'infrastructure as code
- Riferimento WIF: variabili d'ambiente, schema del file di profilo, regole di validazione e codici di errore
- Autenticazione: tutte le opzioni di autenticazione negli SDK Anthropic
- Riferimento Admin API: schemi di richiesta e risposta generati per ogni endpoint dell'Admin API
Was this page helpful?