نموذج الأمان
القواعد التي يفرضها Postgres، مهما أرسل التطبيق أو عميل واجهة برمجية.
يخفي التطبيق ما لا يمكنك استخدامه، لكن الإخفاء ليس الحماية. كل قاعدة أدناه يفرضها قاعدة البيانات بأمان على مستوى الصفوف، وصلاحيات الأعمدة، والمُشغّلات، أو دوال الفحص، ولكل واحدة اختبار يحاول كسرها (pnpm test:rls، انظر الاختبارات).
تبدأ جداول المنتج بـ cw_ وكل صف ينتمي إلى مساحة عمل واحدة. يُحسم الوصول بدالة واحدة، cw_can_access(workspace, module, level)، تستخدمها كل سياسة.
القواعد
| # | القاعدة | كيف يفرضها Postgres |
|---|---|---|
| 1 | الفوترة وحدها تستطيع تغيير خطة مساحة العمل أو حالتها أو فترتها أو مخصص الرصيد. | يستطيع المستخدمون الذين سجّلوا الدخول قراءة cw_subscriptions لكن ليست لهم صلاحية كتابة عليها. |
| 2 | لا أحد يفتح وحدة من دون أن يدفع. تبدأ الوحدات الجديدة locked؛ وفشل تشغيل وحدة مقفلة. | لا يستطيع المستخدمون كتابة access_state؛ ويجوز للمالكين تحديث enabled فقط، ويرفض مُشغّل ذلك للوحدات المقفلة. |
| 3 | نشر نص يحتاج إلى publish على الاستقبال. | لا تُنشأ الإصدارات إلا عبر cw_publish_agent()، وهي تتحقق من المستوى. تُرفض الكتابة المباشرة إلى الإصدارات أو إلى مؤشر المنشور. |
| 4 | لا يمكن إعادة كتابة سجلات المكالمات من التطبيق. لا يتغير إلا علامة المراجعة والعلم، والمراجع هو أنت دائمًا. | صلاحية العمود على حقول المراجعة فقط؛ ويضبط مُشغّل المراجع والوقت من المستخدم الذي سجّل الدخول. |
| 5 | لا يستطيع المستخدمون إنشاء مكالمات أو أسطر نص. | لا صلاحية إدراج. خدمة الصوت وحدها، عبر ويب هوك الموقَّع، تكتبها. |
| 6 | الوحدة المضبوطة على none، أو المطفأة، لا تُرجع صفوفًا. | cw_can_access في كل سياسة قراءة. |
| 7 | لا ترى مساحة عمل أبدًا بيانات مساحة أخرى. | تتحقق cw_can_access من العضوية أولًا. |
| 8 | لا يستطيع الأشخاص رفع مستوى وصولهم بأنفسهم. | المالكون والمسؤولون وحدهم يعدّلون الوصول؛ ولا يستطيع المسؤولون لمس صفوف المالك. |
| 9 | تُكتب قيود التدقيق بصفتك أنت فقط. | تشترط سياسة الإدراج actor_type = 'user' ومعرّف مستخدمك؛ ولا تحديث ولا حذف. |
| 10 | لا يمكن تغيير مساحة عمل للقراءة فقط. | تضع cw_can_access سقف كل مستوى عند view للوحدات للقراءة فقط. |
| 11 | محو متصل، وتوجيه رقم هاتف، يحتاجان إلى publish. | تتحقق cw_erase_caller() من المستوى؛ وتشترط سياسة التحديث على أرقام الهاتف publish. |
| 12 | الملاحظات ملك كاتبها. | يجب أن تستخدم عمليات الإدراج معرّف مستخدمك؛ ولا يمكنك تعديل ملاحظاتك أو حذفها إلا هي. |
حمايات أخرى
- دور الخدمة. المفتاح الذي يتجاوز هذه القواعد يُستخدم في ملف خادم واحد فقط (
apps/web/lib/callwise/service-role.ts)، للفوترة وويب هوك الصوت. - ويب هوك الصوت. موقَّع بـ HMAC، ويُتحقق من الطابع الزمني خلال 5 دقائق، ومتماثل المفعول وفق معرّف الحدث.
- التسجيلات. حاوية خاصة؛ ولا يُقرأ الملف إلا بمن لديه
viewعلى الاستقبال في مساحة عمله؛ ولا رفع من التطبيق. - ويب هوك الصادرة. تمر عناوين الوجهة بحارس من جانب الخادم قبل إرسال أي شيء.
- الوضع التجريبي لا يمكنه العمل في الإنتاج من دون
ALLOW_DEMO_IN_PROD=trueصريح، ولا يُجري طلبًا خارجيًا أبدًا.
ما ليس مغطى بعد
لم يُجرَ تدقيق أمني خارجي ولا اختبار اختراق، ولا يحمل Callwise شهادة امتثال. انظر البيانات والخصوصية.