تصف هذه الصفحة ما هو قائم فعلاً اليوم. كُتبت كقائمة حقائق لا وعود، وتُحدَّث حين تتغيّر الحقائق. سياسة الخصوصية تقول ما نجمعه ولماذا؛ وشروط معالجة البيانات تقول ما نلتزم به تجاه التاجر بصفتنا معالِجاً لديه.
١. أين تعمل المنصّة
- تعمل المنصّة على خادم واحد (droplet) لدى DigitalOcean في فرانكفورت بألمانيا (منطقة الاتحاد الأوروبي
fra1)، ويقف Cloudflare أمامه. - TLS في كل مكان: يُنهي Cloudflare اتصال TLS عند الحافة، والاتصال من Cloudflare إلى الخادم الأصلي مشفّر هو الآخر بـ TLS بشهادة من Let's Encrypt. لا يوجد مسار HTTP غير مشفّر إلى الواجهة البرمجية.
- قاعدة بيانات PostgreSQL تستمع على localhost فقط. لا يمكن الوصول إليها من الإنترنت، ولا يوجد منفذ عامّ لقاعدة البيانات.
- بيانات كل تاجر معزولة داخل قاعدة البيانات بأمان مستوى الصفّ (row-level security) في PostgreSQL مفتاحه معرّف المستأجر. الاستعلام الذي يُنفَّذ في سياق تاجر لا يمكنه إرجاع صفوف تاجر آخر، حتى لو كان في شفرة التطبيق خطأ.
٢. ما الذي نعالجه
تعالج المنصّة فقط ما يحتاجه تطبيق التاجر ليعمل:
- الطلبات: رقم الطلب والأصناف والإجماليات والحالة.
- اسم العميل وبريده وهاتفه وعنوان الشحن — فقط حين تكون شوبيفاي قد منحت تثبيت التاجر هذه الصلاحية (موافقة شوبيفاي على بيانات العملاء المحمية).
- رموز الإشعارات، لتصل تحديثات الطلب إلى الجهاز.
- هوية تسجيل الدخول عبر Firebase Auth (معرّف المستخدم والبريد أو مزوّد الدخول المرتبط به).
لا نستقبل بيانات البطاقات ولا نخزّنها أبداً. يتمّ الدفع في صفحة دفع شوبيفاي أو عبر بوابة الدفع الخاصة بالتاجر؛ وأرقام البطاقات لا تمرّ عبر Bunyawi.
٣. كم نحتفظ بها
- الطلبات: تُحفظ ما دام التطبيق مثبّتاً لدى التاجر — فهي سجلّاته الضريبية والتجارية.
- اسم العميل وبريده وهاتفه: تُمحى من طلباته حين ترسل شوبيفاي
customers/redact، أو حين يحذف العميل حسابه من التطبيق. يبقى الطلب نفسه، بلا صاحبه. - حمولات الخطافات (webhooks) الخام: ٩٠ يوماً.
- سلال التطبيق المتروكة: ٣٠ يوماً.
- طلبات إتمام الشراء: ٩٠ يوماً.
- سجلّات التدقيق والوصول: ٣٦٥ يوماً.
- النسخ الاحتياطية المشفّرة لقاعدة البيانات: ١٤ يوماً.
- المتجر الذي أُلغي تثبيته: يُحذف كل شيء بعد ٣٠ يوماً من إلغاء التثبيت — أو فوراً حين ترسل شوبيفاي
shop/redact.
٤. التشفير
- أثناء النقل: TLS على كل خطوة، كما سبق.
- أثناء التخزين: يقع مجلد بيانات PostgreSQL على وحدة تخزين كتلية من DigitalOcean مشفّرة أثناء التخزين على مستوى طبقة التخزين (LUKS)، وهي موصولة بهذا الخادم وحده.
- النسخ الاحتياطية: تُنسخ قاعدة البيانات احتياطياً كل ليلة. تُشفَّر كل نسخة بـ AES-256 (عبر GnuPG) قبل أن تُكتب على القرص، والمفتاح يحتفظ به المشغّل وحده. والنسخة التي لا يمكن فكّ تشفيرها واستعادتها تُستبعد.
- الأسرار — بيانات اعتماد قاعدة البيانات ومفاتيح الواجهات البرمجية ومفاتيح التوقيع — تعيش في ملف بيئة على الخادم لا يقرؤه إلا root. ولا تُودَع في مستودع الشفرة أبداً.
٥. من يستطيع الوصول
- يشغّل Bunyawi مشغّل واحد. لا يوجد فريق دعم له صلاحية على بيئة الإنتاج.
- الوصول إلى الخادم بمفتاح SSH فقط. تسجيل الدخول بكلمة مرور معطَّل.
- يصل التجّار إلى لوحة تحكّمهم فقط عبر تسجيل دخول موظفي شوبيفاي نفسه ورموز جلساته. لا نرى كلمة مرور التاجر ولا نخزّنها أبداً.
- يسجّل العملاء الدخول عبر Firebase Auth: Google أو Apple أو البريد مع التحقّق. لا نخزّن كلمات مرور العملاء.
- حسابات المشغّل نفسه — GitHub و Google و DigitalOcean و Cloudflare و Shopify Partners — تستخدم كلمات مرور فريدة من ١٦ حرفاً فأكثر من مدير كلمات مرور، مع التحقّق بخطوتين.
- كل تغيير في لوحة التحكّم، وكل قراءة لبيانات شخصية لعميل، يُكتب في سجلّ تدقيق خاص بكل تاجر يستطيع التاجر الاطّلاع عليه.
٦. بيانات الاختبار وبيئة الإنتاج
- الطلبات التجريبية نماذج ثابتة في الذاكرة. لا تُكتب في قاعدة البيانات أبداً، ولا تظهر إلا لحسابات اختبار مدرجة في قائمة مسموح بها.
- يجري التطوير على مخزن ملفات محلي على جهاز المطوّر، ولا يجري أبداً على قاعدة بيانات الإنتاج.
٧. إن وقع خطأ
- الاحتواء — تدوير السرّ المتأثّر وحجب المصدر عند Cloudflare.
- التقييم — تحديد النطاق من سجلّات الخادم وسجلّ التدقيق: أي التجّار، وأي البيانات، وأي فترة.
- الإبلاغ — مراسلة كل تاجر متأثّر بالبريد خلال ٧٢ ساعة بما حدث وما البيانات المعنية، وإبلاغ شوبيفاي حيث تقتضي شروطها ذلك.
- الإصلاح — معالجة السبب الجذري وإعادة النشر.
- التعلّم — كتابة تقرير ما بعد الحادث وإجراء التغيير الذي يمنع تكراره.
للإبلاغ عن ثغرة أو حادث مشتبه به، راسل [email protected]. يقرأ المشغّل البلاغات بنفسه.
٨. طلبات أصحاب البيانات
- يستطيع العميل حذف حسابه من داخل التطبيق. يُزال اسمه وبريده وهاتفه من طلباته في تلك اللحظة.
- التاجر الذي يتلقّى طلباً من عميل يحوّله إلى [email protected].
- خطافات شوبيفاي
customers/data_requestوcustomers/redactوshop/redactمنفَّذة وتُنفَّذ تلقائياً.
٩. المعالِجون من الباطن
الأطراف الثالثة التي تتعامل بالضرورة مع بعض هذه البيانات، ولأي غرض:
- DigitalOcean — الاستضافة (فرانكفورت).
- Cloudflare — DNS وشبكة التوزيع وإنهاء TLS.
- Google Firebase — مصادقة العملاء وإشعارات أندرويد.
- خدمة إشعارات Apple (APNs) — إشعارات iOS.
- خدمات Google Play — توزيع تطبيق أندرويد وخدمات الجهاز.
- Shopify — مصدر منتجات المتجر وطلباته وعملائه.
- GitHub — استضافة الشفرة وخطّ البناء.
- Codemagic — بناء تطبيق iOS؛ يرى مفتاح App Store Connect الخاص بالتاجر طوال مدة البناء.
إن تغيّرت هذه القائمة، يُراسَل التجّار بالبريد قبل سريان التغيير.