−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS

ایمن‌سازی agent هوش مصنوعی خودمیزبان روی VPS

4 مهر 1405 · 4 دقیقه مطالعه · EQVPS Team

یک اپلیکیشن وب کلاسیک همان کاری را می‌کند که کدش می‌گوید. یک agent هوش مصنوعی کاری را می‌کند که کدش می‌گوید به علاوه هر چیزی که متن‌های خوانده‌شده قانعش کنند. به آن شل، کلید API و بودجه بدهید، به سمت اینترنت باز بفرستیدش، و چیز تازه‌ای ساخته‌اید: پردازه‌ای که می‌شود با مهندسی اجتماعی فریبش داد. راه‌حل پارانویا نیست، بلکه عادت قدیمی مدیران سیستم است: حداقل دسترسی، این بار برای برنامه‌ای بسیار پرحرف.

تهدیدهای واقعی را بشناسید

همه موارد زیر یا احتمال این‌ها را کم می‌کنند یا وقتی رخ دادند ارزان‌ترشان می‌کنند.

۱. به agent سرور و کاربر خودش را بدهید

agentهایی را که کد اجرا می‌کنند یا در وب می‌گردند روی یک VPS جداگانه اجرا کنید، نه کنار پایگاه‌داده تولید. روی آن سرور هم هرگز با root:

adduser --disabled-password --gecos "" agent
mkdir -p /home/agent/work && chown agent:agent /home/agent/work

نه sudo، نه کلید SSH به سرورهای دیگر، نه دسترسی به چیزی که لازم ندارد.

۲. با systemd در سندباکس بگذاریدش

systemd می‌تواند بدون کانتینر دور یک پردازه حصار بکشد. agent می‌تواند سیستم را بخواند اما فقط در پوشه کاری خودش بنویسد:

# /etc/systemd/system/agent.service
[Unit]
Description=AI agent
After=network-online.target

[Service]
User=agent
WorkingDirectory=/home/agent/work
EnvironmentFile=/home/agent/.agent.env
ExecStart=/home/agent/venv/bin/python run_agent.py
Restart=on-failure
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/agent/work
PrivateTmp=yes
PrivateDevices=yes
MemoryMax=2G

[Install]
WantedBy=multi-user.target

ProtectSystem=strict کل فایل‌سیستم را جز ReadWritePaths فقط‌خواندنی می‌کند. MemoryMax جلوی اینکه یک کار افسارگسیخته سرور را از پا دربیاورد می‌گیرد. نتیجه را با systemd-analyze security agent بررسی کنید: به یونیت امتیاز می‌دهد و آنچه هنوز باز است را فهرست می‌کند.

۳. با کلیدها طوری رفتار کنید که انگار نشت می‌کنند

۴. برای خریدهایش سقف بگذارید

اگر agent می‌تواند پول خرج کند، محدودیت باید بیرون از agent باشد. در EQVPS یک agent از طریق سرور MCP یا REST API سرورها را از موجودی پیش‌پرداخت حساب سفارش و تمدید می‌کند، پس موجودی یک سقف سخت است. آن را به اندازه مبلغی شارژ کنید که حاضرید از دست بدهید، نه با کل بودجه‌تان. اگر agent لازم نیست سرورهای دیگر شما را ببیند، حساب جداگانه‌ای به او بدهید.

۵. جلوی کارهای برگشت‌ناپذیر یک انسان بگذارید

حذف داده، ارسال پول، push به شاخه اصلی، ایمیل به مشتریان: این‌ها را از یک مرحله تأیید عبور دهید؛ یک پیام Telegram با دکمه تأیید کافی است. ابزارهای فقط‌خواندنی می‌توانند آزادانه اجرا شوند؛ ابزارهای نوشتنی آرام‌آرام اعتماد کسب می‌کنند.

۶. خروجی‌ها را تنگ کنید (اگر با آن کنار می‌آیید)

لیست مجاز ترافیک خروجی بیرون کشیدن رازها را خیلی سخت‌تر می‌کند:

ufw default deny outgoing
ufw allow out 53          # DNS
ufw allow out 443/tcp     # HTTPS APIs
ufw allow out 80/tcp      # package mirrors
ufw default deny incoming && ufw allow 22/tcp && ufw enable

صادقانه، این مرحله‌ای است که بیشتر مردم کنار می‌گذارند: agentهای مرورگر به HTTPS دلخواه نیاز دارند و آن وقت لیست مجاز بر اساس پورت چیز زیادی اضافه نمی‌کند. برای agentهایی که فقط مجموعه ثابتی از APIها را صدا می‌زنند می‌ارزد.

۷. لاگ و راه بازگشت داشته باشید

هر فراخوانی ابزار را با آرگومان‌هایش لاگ کنید. پیش از رها کردن agent روی چیزی تازه یک snapshot بگیرید: Managed Backups نقاط بازیابی روزانه به علاوه snapshotهای درخواستی به شما می‌دهد، تا یک بعدازظهر بد به قیمت یک بازیابی تمام شود نه ساخت دوباره.

جمع‌بندی صادقانه

هیچ‌کدام از این‌ها agent را برای اعتماد کورکورانه امن نمی‌کند. بلکه اشتباه کردن را ارزان می‌کند: agent نفوذشده روی سرور خودش، با کاربر خودش، موجودی سقف‌دار و کلیدهای محدود فقط می‌تواند آسیبی کوچک و قابل جبران بزند. هدف واقع‌بینانه همین است. با اصول پایه در ایمن‌سازی یک VPS جدید شروع کنید، سپس لایه‌های مخصوص agent در بالا را اضافه کنید.

سؤالات متداول

بزرگ‌ترین ریسک اجرای agent هوش مصنوعی روی سرور چیست؟

prompt injection: agent متنی را می‌خواند که خودش ننوشته (یک صفحه وب، یک ایمیل، یک کامنت issue) و آن متن از او می‌خواهد کاری بکند که شما هرگز نخواسته‌اید، مثل چاپ متغیرهای محیطی یا اجرای یک دستور. بقیه این راهنما درباره محدود کردن آسیب وقتی این اتفاق می‌افتد است.

آیا agent باید با root اجرا شود؟

هرگز. یک کاربر بدون امتیاز و بدون sudo مخصوص خودش به او بدهید و با سندباکس systemd محدود کنید کجا می‌تواند بنویسد. اگر فریب بخورد و یک دستور مخرب اجرا کند، فقط می‌تواند به پوشه کاری خودش آسیب بزند.

چطور جلوی خرج اضافه agent را بگیرم؟

از محدودیت‌های سختی استفاده کنید که بیرون از agent زندگی می‌کنند: سقف هزینه روی کلیدهای ارائه‌دهنده مدل، و موجودی پیش‌پرداخت برای هر چیزی که می‌تواند بخرد. در EQVPS، agent از موجودی حساب خرج می‌کند، پس خود موجودی سقف است: آن را به اندازه‌ای شارژ کنید که حاضرید از دست بدهید، نه بیشتر.

آیا می‌توانم prompt injection را کاملاً مسدود کنم؟

نه؛ امروز هیچ فیلتر قابل اعتمادی برای آن وجود ندارد. آنچه کار می‌کند کوچک کردن شعاع آسیب است: ابزارهای با حداقل دسترسی، تأیید انسانی برای کارهای مخرب یا پولی، نبود هیچ رازی در context agent و لاگ‌هایی که بتوانید مرور کنید.

آیا یک VPS جداگانه برای agent ارزشش را دارد؟

بله، اگر agent کد اجرا می‌کند یا در وب می‌گردد. یک سرور کوچک اختصاصی آن را از پایگاه‌داده‌ها، پروژه‌های دیگر و اطلاعات ورود شما دور نگه می‌دارد. اگر نفوذ شود، یک سرور را دوباره می‌سازید، نه کل راه‌اندازی‌تان را.

← بازگشت به وبلاگ← پلن‌ها و قیمت‌ها

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.