۱. جداسازی کامل دادهی هر مشتری (Tenant Isolation)
میراکل یک پلتفرم چند-مستأجری است — یعنی روی زیرساخت یکسان، دهها کسبوکار مختلف سرویس میگیرند. مهمترین ریسک چنین معماریای، نشت داده بین مشتریهاست. برای جلوگیری از آن، دو لایهی مستقل داریم:
- لایهی اپلیکیشن: هر درخواست به سرور، بر اساس کلید API یا توکن ورود، به شناسهی مشتری (tenant_id) محدود میشود.
- لایهی دیتابیس (Row-Level Security): علاوه بر فیلتر برنامه، خودِ پایگاهدادهی PostgreSQL با قوانین RLS روی جدولهای حساس (اسناد، گفتگوها، پیامها، رویدادهای آنالیتیکس) تنظیم شده که حتی در صورت بروز خطای برنامهنویسی، امکان خواندن دادهی یک مشتری توسط مشتری دیگر وجود ندارد.
این یعنی جداسازی داده در میراکل به یک خط کد وابسته نیست؛ در ساختار دیتابیس تضمین شده است.
۲. رمزنگاری ارتباطات
ارتباط بین ویجت نصبشده در سایت شما، پنل مدیریتی و سرورهای میراکل از طریق HTTPS/TLS رمزنگاری میشود. این رمزنگاری در لایهی هاستینگ/CDN اعمال میگردد و بخشی استاندارد از زیرساخت میزبانی سرویس است.
۳. احراز هویت و کنترل دسترسی
- پنل مدیریتی: ورود با JWT (توکن امن با انقضای زمانی)؛ رمزهای عبور هرگز بهصورت متن ساده ذخیره نمیشوند و همیشه هش میشوند.
- ویجت / API: هر مشتری یک کلید API اختصاصی خودش را دارد. این کلید در ترافیک شبکهی ویجت قابل مشاهده است (مشابه کلیدهای عمومی سرویسهایی مانند Stripe) اما طراحی آن بهگونهای است که فقط به دادههای عمومی همان مشتری دسترسی میدهد و افشای آن هیچ راهی به دادهی سایر مشتریان باز نمیکند.
- سطوح دسترسی داخل پنل (مدیر تننت، اپراتور) از هم تفکیک شدهاند.
۴. کنترل هزینه و جلوگیری از سوءاستفاده
هر مشتری سقف مصرف ماهانه (تعداد پیام) دارد که در لایهی Redis کنترل میشود. این مکانیزم هم از افزایش ناگهانی هزینه جلوگیری میکند و هم بهعنوان یک لایهی دفاعی در برابر حملات اسپم یا سوءاستفاده از ویجت عمل میکند.
۵. جلوگیری از پاسخ نادرست هوش مصنوعی
چتبات میراکل صرفاً بر اساس اسناد بارگذاریشدهی همان کسبوکار پاسخ میدهد (معماری RAG) و بهصراحت در System Prompt مدل مشخص شده که اگر پاسخ در دادههای بازیابیشده موجود نباشد، باید بگوید «نمیدانم» و پیشنهاد ارجاع به اپراتور انسانی بدهد — نه اینکه پاسخی از خودش بسازد. این کنترل ریسک انتشار اطلاعات نادرست را در طراحی سیستم پایین میآورد (برای جزئیات مسئولیت، به شرایط استفاده از خدمات مراجعه کنید).
۶. طرفهای پردازشکنندهی داده (Sub-processors)
دادهی شما فقط با اشخاص ثالث زیر، و فقط برای ارائهی سرویس، به اشتراک گذاشته میشود:
| سرویس | نقش | نوع دادهای که میبیند |
|---|---|---|
| Google Gemini API | تولید embedding (همیشه) و پاسخ چتبات (اگر provider انتخابی مشتری Gemini باشد) | متن گفتگو + بخشهای مرتبط از اسناد شما (لحظهای، بدون استفاده برای آموزش مدل عمومی گوگل) |
| OpenAI API | تولید پاسخ چتبات، فقط اگر مشتری provider را OpenAI انتخاب کرده باشد | متن گفتگو + بخشهای مرتبط از اسناد شما (لحظهای) |
| Telegram Bot API | اعلان handoff، فقط اگر مشتری چت تلگرام خود را وصل کرده باشد | نام کسبوکار، دلیل ارجاع، شناسهی گفتگو |
| کانال پیامرسانی، فقط اگر مشتری آن را وصل کرده باشد | پیامهای همان کانال | |
| Resend | ارسال ایمیل دعوت اپراتور | آدرس ایمیل اپراتور |
| ارائهدهندهی میزبانی سرور و دیتابیس | اجرای زیرساخت | تمام دادههای ذخیرهشده (رمزنگاریشده در انتقال) |
فهرست کامل و بهروز sub-processorها در صورت تغییر، به مشتریان اطلاع داده میشود. جزئیات کامل در سیاست حریم خصوصی و توافقنامهی پردازش داده آمده است.
۷. نگهداری و حذف داده
پس از پایان یا لغو اشتراک، تمام دادههای مشتری (اسناد، گفتگوها) حداکثر تا ۳۰ روز نگهداری و سپس بهطور کامل حذف میشود. مشتری در هر زمان میتواند درخواست حذف زودهنگام بدهد. جزئیات کامل در سیاست حریم خصوصی.
۸. وضعیت فعلی و مسیر پیش رو
برای شفافیت کامل، وضعیت واقعی زیرساخت امنیتی میراکل در حال حاضر:
- جداسازی tenant با RLS در PostgreSQL
- رمزنگاری ارتباطات با TLS (در لایهی هاستینگ)
- احراز هویت JWT برای پنل و کلید API اختصاصی برای هر تننت
- محدودیت مصرف ماهانه (Rate limiting) در Redis
- مانیتورینگ خطای متمرکز (Sentry)
- بکاپگیری خودکار روزانه از دیتابیس (نگهداری ۱۴ نسخهی آخر)
- انتقال بکاپها به یک فضای ذخیرهسازی ابری مجزا از سرور اصلی
- هشدار real-time برای خطاهای بحرانی
- تست نفوذ (Penetration Testing) دورهای توسط تیم ثالث
میراکل هنوز هیچ گواهی رسمی امنیتی بینالمللی (مانند ISO 27001 یا SOC 2) دریافت نکرده است؛ در صورت دریافت چنین گواهیهایی، این صفحه بهروزرسانی خواهد شد.
۹. گزارش مشکل امنیتی
اگر آسیبپذیری امنیتی در میراکل پیدا کردید، لطفاً پیش از افشای عمومی، از طریق راه زیر به تیم ما اطلاع دهید تا سریع بررسی و رفع شود: