पाठ 17 / 25

Least Privilege और Sandboxing

Tools को सिर्फ़ उतना access दें जितना चाहिए और जोखिम भरे निष्पादन को अलग रखें।

सिर्फ़ prompt नहीं, credentials का दायरा सीमित करें

Model से "कुछ मत हटाओ" कहना अनुरोध है। Tool को ऐसा database user देना जो हटा न सके गारंटी है। Read tools के लिए read-only credentials, file tools को workspace folder तक सीमित, network गंतव्यों की allow-list, और secrets को model के context से बाहर रखें। हर tool के पास सिर्फ़ वही हो जो उसे चाहिए।

File tool के लिए path सीमा

resolve() .. खोल देता है, इसलिए ../../etc/passwd जैसा path बाहर नहीं निकल सकता। यह खाका यहाँ चलाया नहीं गया; symlinks समेत अपने सीमा-मामले ख़ुद परखें।

from pathlib import Path
WORKSPACE = Path("/srv/agent-workspace").resolve()

def safe_path(user_path: str) -> Path:
    p = (WORKSPACE / user_path).resolve()
    if WORKSPACE not in p.parents and p != WORKSPACE:
        raise PermissionError("path is outside the workspace")
    return p

त्वरित जाँच: हटाने के विरुद्ध असली गारंटी कौन-सी है?

  • Prompt में "कभी न हटाओ" वाली पंक्ति
  • Model से विनम्रता से कहना
  • Delete permission के बिना database user
  • अच्छे की उम्मीद
Answer

Delete permission के बिना database user — Permissions system लागू करता है, model भटके तब भी।