Kontrola dostępu do narzędzi
Narzędzia muszą sprawdzać, czy użytkownik (nie tylko agent) jest upoważniony — agenci nie są podmiotami odpowiedzialnymi.
Kontrola dostępu do narzędzi to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Narzędzia nie są podmiotami uprawnień
Model „wywołuje narzędzie”, ale faktyczne DZIAŁANIE wykonuje Państwa kod. Użytkownik — nie agent — jest podmiotem, którego uprawnienia mają znaczenie.
Autoryzację należy opierać na tożsamości UŻYTKOWNIKA, a nie tylko na tym, że „agent tak zdecydował”.
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)Przekazuj kontekst użytkownika
Obiekt użytkownika należy przekazywać do każdego wywołania narzędzia:
def dispatch(tool_call, user):
args = json.loads(tool_call.function.arguments)
fn = TOOLS[tool_call.function.name]
return fn(**args, user=user)Uprawnienia dla poszczególnych narzędzi
Należy określić, z których narzędzi może korzystać każda rola:
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]]Ograniczanie dostępu do danych
Narzędzia wykonujące zapytania do bazy danych muszą automatycznie ograniczać zakres danych według użytkownika:
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,))Audytuj każde wywołanie narzędzia
Należy rejestrować: kto, co, kiedy, z jakimi argumentami i jaki był wynik. To Państwa ślad do analizy po wystąpieniu problemu:
audit_log({
'user_id': user.id,
'tool': tool_name,
'args': args,
'result_status': result.status,
'timestamp': now()
})Potwierdzaj destrukcyjne działania
Nawet w przypadku autoryzowanych użytkowników należy ponownie sprawdzać operacje destrukcyjne:
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,))Narzędzia OAuth / tokeny o ograniczonym zakresie
W przypadku agentów działających w imieniu użytkownika w usługach zewnętrznych zakres tokenów OAuth należy ograniczać do minimum:
# Token only has gmail.send scope, not gmail.read
send_email = build_with_token(user_token_scoped_send)Granice kont usługowych
Własne konto usługowe agenta powinno mieć minimalne uprawnienia:
- Tylko do odczytu użytkownik bazy danych dla narzędzi analitycznych
- Osobne zasobniki S3 dla poszczególnych klientów
- Sieci odizolowane w 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}')
Interfejs uprawnień widoczny dla użytkownika
Należy pokazać użytkownikowi, co agent może robić w jego imieniu. Użytkownik powinien móc odwołać uprawnienia dla poszczególnych narzędzi. Ma to kluczowe znaczenie dla zaufania.
Ponowne uwierzytelnianie w przypadku operacji wysokiego ryzyka
W przypadku wrażliwych narzędzi należy wymagać ponownego uwierzytelnienia (ostatnie logowanie < 5 minut temu):
if tool.is_sensitive and user.last_auth_age_seconds > 300:
raise StaleAuthError('Please re-authenticate to perform this action.')Testuj autoryzację tak jak kod
Należy pisać testy sprawdzające, że „użytkownik A nie może zwrócić pieniędzy za zamówienie użytkownika B” — nigdy nie należy zakładać, że mechanizmy kontroli dostępu działają. Są one głównym źródłem błędów bezpieczeństwa agentów.
Zasada autoryzacji
Uprawnienia kogo są sprawdzane, gdy agent wywołuje narzędzie?
Podsumowanie
Użytkownik jest podmiotem uprawnień. Tożsamość użytkownika należy przekazywać do każdego narzędzia. Zakres danych należy ograniczać według użytkownika. Każde wywołanie należy audytować. Operacje destrukcyjne należy potwierdzać. Autoryzację należy testować tak jak kod.
Często zadawane pytania
Czy lekcja „Kontrola dostępu do narzędzi” jest bezpłatna?
Tak — pełny tekst „Kontrola dostępu do narzędzi” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Kontrola dostępu do narzędzi”?
Narzędzia muszą sprawdzać, czy użytkownik (nie tylko agent) jest upoważniony — agenci nie są podmiotami odpowiedzialnymi. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Kontrola dostępu do narzędzi”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Obrona przed prompt injection
- Filtrowanie danych wyjściowych (Llama Guard, NeMo)
- Wykonywanie kodu w piaskownicy dla agentów programistycznych
- Kontrola dostępu do narzędzi