صُمّمت الواجهة بافتراض أن كل طلب له تأثير مالي مباشر وقد يصل إلى بيانات اعتماد خوادم حساسة. لذلك فإن المتطلبات الأمنية تتجاوز كثيراً المعايير المعتادة في REST.
الضوابط المطبَّقة
- HMAC-SHA256: كل طلب موقّع بـ HMAC-SHA256 على الطريقة، المسار، الطابع الزمني، الـ Nonce، وتجزئة الجسم. التحقق بزمن ثابت (hash_equals).
- AES-256-GCM: لا تُخزَّن الأسرار إلا مشفّرة باستخدام AES-256-GCM (libsodium). ويُحفَظ المفتاح الرئيسي بمعزل عن قاعدة البيانات في مجلد محمي.
- Replay protection: نافذة طابع زمني ±300 ثانية، ذاكرة Nonce 600 ثانية. لا يمكن إعادة إرسال طلب موقّع بنجاح.
- Scope-based authorization: قائمة نطاقات صريحة لكل مفتاح API. يجب تفعيل النطاقات الكتابية والحساسة صراحةً.
- IP whitelist (optional): قائمة بيضاء لعناوين IP اختيارية لكل مفتاح API (تدوين CIDR، IPv4 وIPv6).
- Rate limit: متعدد الطبقات: لكل مفتاح (في الدقيقة وفي اليوم)، ولكل حساب عبر جميع مفاتيحه (في الدقيقة)، ولكل عنوان IP مصدر (في الدقيقة). خوارزمية دلو الرموز (Token Bucket) مع السماح بدفعات قصيرة.
- Idempotency: تتطلب الطلبات وإجراءات الخدمة التدميرية ترويسة Idempotency-Key. حماية لمدة 24 ساعة من إعادة محاولات الشبكة.
- Tenant isolation: كل استعلام في قاعدة البيانات يُرشَّح بصرامة على معرّف حسابك. الوصول بين المستأجرين مستحيل بحكم البناء.
- Tamper-evident audit log: يُسجَّل كل طلب في سجل التدقيق بتجزئة سلسلية (chain_hash[n] = sha256(chain_hash[n-1] || row_n)). أي عبث رجعي يُكتشَف عبر كسر التجزئة.
- Credentials.read alerting: كل استدعاء credentials.read يُنتج إدخال تدقيق مخصصاً مع بريد تأكيد إلى مالك الحساب.
- SSRF-guarded webhooks: يُتحقَّق من عناوين Webhook قبل التخزين: HTTPS حصراً، ويجب أن يُرجِع تحليل DNS عناوين IP عامة فقط (لا RFC1918، لا link-local).
أفضل الممارسات لدى الموزّع
- احفظ السر في مدير أسرار (HashiCorp Vault، AWS Secrets Manager، Doppler، 1Password)، وليس في الشيفرة أو مستودع Git.
- دوّر السر بانتظام (سنوياً على الأقل أو بعد تغيّر الموظفين). تدوير بنقرة واحدة في البوابة، ويُلغى السر القديم فوراً.
- مفتاح API مخصص لكل حالة استخدام بأقل نطاق ممكن (للقراءة فقط إن أمكن). بلا مفاتيح "وضع الإله".
- إن كانت تكاملاتك تعمل من عناوين IP ثابتة (سحابة، بوابة قفز): فعّل قائمة بيضاء لعناوين IP.
- ولّد Idempotency-Key على الخادم واحفظه؛ ولا تولّده من جديد عند كل إعادة محاولة. التوصية: UUIDv4 لكل طلبية منطقية.
- راجع سجل التدقيق في بوابة العملاء بانتظام؛ فكل وصول من نوع credentials.read يؤدي أيضًا إلى إرسال بريد إلكتروني إلى عنوان الحساب.
الإفصاح الأمني
يرجى الإبلاغ عن الثغرات الأمنية بسرية إلى security@kernelhost.com. مفتاح PGP عند الطلب. استجابة مضمونة خلال 24 ساعة. برنامج bug-bounty قيد التحضير.

