Controllo degli accessi sugli strumenti
Gli strumenti devono verificare che l’utente, non solo l’agente, sia autorizzato: gli agenti non sono soggetti principali
Controllo degli accessi sugli strumenti è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Gli strumenti non sono i soggetti autorizzati
Il modello "chiama uno strumento", ma l'AZIONE effettiva viene eseguita dal codice. Il soggetto autorizzato è l'utente, non l'agente: sono le autorizzazioni dell'utente a contare.
Autorizzare in base all'identità dell'UTENTE, mai soltanto perché "l'agente ha deciso di farlo".
Authorise at the Tool Boundary
def refund_order(order_id, *, user):
order = db.get_order(order_id)
if order.customer_id != user.id and not user.is_staff:
raise PermissionError(f'User {user.id} cannot refund order {order_id}')
return stripe.refund(order.payment_id)Passare il contesto dell'utente
Passare l'oggetto utente a ogni chiamata dello strumento:
def dispatch(tool_call, user):
args = json.loads(tool_call.function.arguments)
fn = TOOLS[tool_call.function.name]
return fn(**args, user=user)Autorizzazioni per strumento
Definire quali strumenti può usare ogni ruolo:
ROLE_TOOLS = {
'customer': ['search_orders', 'open_ticket'],
'support': ['search_orders', 'refund_order', 'cancel_order'],
'admin': ['*']
}
visible_tools = [t for t in ALL_TOOLS if t.name in ROLE_TOOLS[user.role] or 'admin' in ROLE_TOOLS[user.role]]Definire l'ambito dell'accesso ai dati
Gli strumenti che interrogano il DB devono definire automaticamente l'ambito in base all'utente:
def search_orders(query, user):
# NEVER let the model bypass this WHERE clause
return db.query('SELECT * FROM orders WHERE customer_id = %s AND ...', (user.id,))Registrare ogni chiamata dello strumento
Registrare: chi, cosa, quando, con quali argomenti e il risultato. Questa è la propria traccia forense per capire cosa è successo quando qualcosa va storto:
audit_log({
'user_id': user.id,
'tool': tool_name,
'args': args,
'result_status': result.status,
'timestamp': now()
})Confermare le azioni distruttive
Anche per gli utenti autorizzati, verificare nuovamente le operazioni distruttive:
def delete_account(user_id, confirmed=False, user=None):
if not confirmed:
return {'requires_confirmation': True, 'msg': 'Confirm deletion of account.'}
db.execute('DELETE ...', (user_id,))Strumenti con ambito OAuth / token
Per gli agenti che agiscono per conto di un utente su servizi esterni, definire un ambito ristretto per i token OAuth:
# Token only has gmail.send scope, not gmail.read
send_email = build_with_token(user_token_scoped_send)Limiti degli account di servizio
L'account di servizio usato dall'agente deve avere il minimo indispensabile delle autorizzazioni:
- Utente DB di sola lettura per gli strumenti di analisi
- Bucket S3 separati per ogni cliente
- Reti isolate in una VPC
Rate Limits Per Tool
def ratelimit(key, per_user_per_day=10):
counts = {}
def decorator(func):
def wrapper(user_id, *args, **kwargs):
counts.setdefault(user_id, 0)
if counts[user_id] >= per_user_per_day:
print(f'{key}: user {user_id} rate limited')
return None
counts[user_id] += 1
return func(user_id, *args, **kwargs)
return wrapper
return decorator
@ratelimit(key='tool:refund', per_user_per_day=2)
def refund_order(user_id, order_id):
print(f'refunding order {order_id} for user {user_id}')
return True
for i in range(3):
refund_order('user1', f'order{i}')
Interfaccia utente per le autorizzazioni
Mostrare all'utente cosa può fare l'agente per suo conto. Consentirgli di revocare le autorizzazioni per singolo strumento. È fondamentale per la fiducia.
Nuova autenticazione per le operazioni ad alto impatto
Fare in modo che gli strumenti sensibili richiedano un'autenticazione recente (ultimo accesso < 5 minuti):
if tool.is_sensitive and user.last_auth_age_seconds > 300:
raise StaleAuthError('Please re-authenticate to perform this action.')Testare l'autorizzazione come il codice
Scrivere test che verifichino che "l'utente A non possa rimborsare l'ordine dell'utente B": non dare mai per scontato che i controlli di accesso funzionino. Sono la fonte numero uno dei bug di sicurezza degli agenti.
Principio dell'autorizzazione
Di chi vengono verificate le autorizzazioni quando l'agente chiama uno strumento?
Riepilogo
L'utente è il soggetto autorizzato. Passare l'identità dell'utente a ogni strumento. Definire l'ambito dei dati in base all'utente. Registrare ogni chiamata. Confermare le operazioni distruttive. Testare l'autorizzazione come si testa il codice.
Domande Frequenti
La lezione «Controllo degli accessi sugli strumenti» è gratuita?
Sì — il testo completo di «Controllo degli accessi sugli strumenti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Controllo degli accessi sugli strumenti»?
Gli strumenti devono verificare che l’utente, non solo l’agente, sia autorizzato: gli agenti non sono soggetti principali Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Controllo degli accessi sugli strumenti»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Difese contro la prompt injection
- Filtraggio dell'output (Llama Guard, NeMo)
- Esecuzione in sandbox per agenti di codice
- Controllo degli accessi sugli strumenti