0Pricing
AI Agents · Lekcja

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

  1. Obrona przed prompt injection
  2. Filtrowanie danych wyjściowych (Llama Guard, NeMo)
  3. Wykonywanie kodu w piaskownicy dla agentów programistycznych
  4. Kontrola dostępu do narzędzi
← Powrót do AI Agents