انتقل إلى المحتوى الرئيسي

سجل التدقيق

Ithbat يسجّل كل Event مهم -- محاولات المصادقة، الإجراءات الإدارية، تغييرات الصلاحيات، SCIM Sync، واستدعاءات الـ API -- في Audit Log غير قابل للتعديل. هذا السجل هو أداتك الأساسية للتحقيقات الأمنية وعمليات الامتثال والاستجابة للحوادث.


ما الذي يُسجَّل

كل إدخال في السجل يحفظ: من نفّذ الإجراء، على أي مورد، من أين، ومتى.

أحداث المصادقة

نوع الـ Eventالوصف
auth.loginتسجيل دخول ناجح
auth.login_failedمحاولة تسجيل دخول فاشلة
auth.logoutتسجيل خروج
auth.mfa_verifiedاجتاز تحدي MFA
auth.mfa_failedفشل تحدي MFA
auth.password_resetإعادة تعيين كلمة المرور
auth.email_verifiedتأكيد البريد الإلكتروني
auth.session_revokedإبطال Session
auth.account_lockedقفل الحساب بعد محاولات فاشلة متكررة
auth.saml_loginتسجيل دخول عبر SAML
auth.social_loginتسجيل دخول عبر Social Provider
auth.passwordless_loginتسجيل دخول عبر Magic Link أو OTP

أحداث دورة حياة المستخدم

نوع الـ Eventالوصف
user.createdإنشاء مستخدم
user.updatedتحديث ملف شخصي
user.deletedحذف مستخدم
user.suspendedإيقاف مستخدم
user.reactivatedإعادة تفعيل مستخدم
user.unlockedفتح حساب مقفل يدويًا
user.password_changedتغيير كلمة المرور
user.mfa_enabledتفعيل MFA
user.mfa_disabledتعطيل MFA

أحداث الأدوار والصلاحيات

نوع الـ Eventالوصف
role.createdإنشاء دور
role.updatedتعديل صلاحيات دور
role.deletedحذف دور
role.assignedتعيين دور لمستخدم
role.revokedإزالة دور من مستخدم

أحداث الدعوات

نوع الـ Eventالوصف
invitation.createdإرسال دعوة
invitation.acceptedقبول دعوة وإعداد الحساب
invitation.revokedإبطال دعوة
invitation.expiredانتهاء صلاحية دعوة بدون قبول

أحداث المستفيد والإعدادات

نوع الـ Eventالوصف
tenant.createdتسجيل مستفيد جديد
tenant.updatedتحديث إعدادات المستفيد
tenant.suspendedإيقاف مستفيد
tenant.reactivatedإعادة تفعيل مستفيد
settings.updatedتغيير إعدادات المستفيد
saml.config_createdإعداد SAML Connection
saml.config_updatedتحديث SAML Connection
saml.config_deletedحذف SAML Connection
scim.token_createdإنشاء SCIM Token
scim.token_revokedإبطال SCIM Token

أحداث Provisioning

نوع الـ Eventالوصف
scim.user_syncedإنشاء أو تحديث مستخدم عبر SCIM
scim.user_deprovisionedإلغاء تفعيل مستخدم عبر SCIM
scim.group_syncedإنشاء أو تحديث مجموعة عبر SCIM
directory.sync_startedبدء Directory Sync Job
directory.sync_completedاكتمال Directory Sync Job
directory.sync_failedفشل Directory Sync Job

أحداث الـ API والنظام

نوع الـ Eventالوصف
api.key_createdإنشاء API Key
api.key_revokedإبطال API Key
webhook.createdإنشاء نقطة استلام الإخطارات
webhook.deletedحذف نقطة استلام الإخطارات

شكل إدخال السجل

كل إدخال يتبع نفس الـ Structure:

{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"tenantId": "c2e3f4a5-6b7c-8d9e-0f1a-2b3c4d5e6f70",
"eventType": "auth.login",
"actorId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"actorEmail": "[email protected]",
"actorType": "user",
"targetId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"targetType": "user",
"ipAddress": "41.208.100.5",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
"location": "Riyadh, SA",
"success": true,
"metadata": {
"authMethod": "password",
"mfaUsed": true
},
"createdAt": "2026-02-24T10:00:00Z"
}
الحقلالوصف
idUUID فريد للإدخال
tenantIdالمستفيد الذي ينتمي له الـ Event
eventTypeنوع الـ Event
actorIdID المستخدم أو النظام الذي نفّذ الإجراء
actorEmailبريد الفاعل وقت الـ Event
actorTypeuser أو admin أو system أو scim
targetIdID المورد الذي نُفِّذ عليه الإجراء
targetTypeنوع المورد (user، role، tenant، إلخ)
ipAddressعنوان الـ IP للعميل
userAgentUser Agent String
locationالموقع الجغرافي التقريبي من الـ IP
successهل نجح الإجراء أو لا
metadataبيانات إضافية حسب نوع الـ Event
createdAtTimestamp بتوقيت UTC (ISO 8601)

عرض سجل التدقيق من لوحة التحكم

  1. انتقل إلى سجل التدقيق في الشريط الجانبي.
  2. استخدم شريط التصفية:
    • نوع الحدث: اختر نوعًا أو أكثر.
    • المستخدم: تصفية ببريد الفاعل أو المعرّف.
    • النطاق الزمني: حدد تاريخ البداية والنهاية.
    • عنوان الـ IP: تصفية بعنوان IP المصدر.
    • الحالة: تصفية بالنجاح أو الفشل.
  3. انقر على أي صف لعرض الإدخال الكامل مع البيانات الوصفية.

الاستعلام عبر الـ API

جلب الأحداث

GET /api/v1/audit/events
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}

الـ Query Parameters المدعومة:

Parameterالنوعالوصف
eventTypestringتصفية بنوع الحدث، مثل auth.login
actorIdUUIDتصفية بمعرّف الفاعل
actorEmailstringتصفية ببريد الفاعل (مطابقة جزئية)
targetIdUUIDتصفية بمعرّف المورد المستهدف
successbooltrue أو false
fromISO 8601بداية النطاق الزمني
toISO 8601نهاية النطاق الزمني
ipAddressstringتصفية بعنوان الـ IP
pageintرقم الصفحة (الافتراضي: 1)
limitintعدد النتائج بالصفحة (الافتراضي: 50، الحد الأقصى: 200)

مثال -- محاولات تسجيل الدخول الفاشلة في آخر 24 ساعة:

GET /api/v1/audit/events?eventType=auth.login_failed&success=false&from=2026-02-23T10:00:00Z
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}

جلب Event واحد

GET /api/v1/audit/events/{id}
Authorization: Bearer {token}

سجل تسجيلات الدخول

GET /api/v1/audit/logins
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}

إحصائيات التدقيق

GET /api/v1/audit/stats
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}

يرجع عدد الأحداث حسب النوع وحسب اليوم لآخر 30 يومًا.

نشاط مستخدم محدد

GET /api/v1/audit/users/{userId}/activity
Authorization: Bearer {token}

سجل تسجيلات دخول مستخدم محدد

GET /api/v1/audit/users/{userId}/logins
Authorization: Bearer {token}

سجل مورد محدد

جلب كل الأحداث التي أثّرت على مورد معيّن:

GET /api/v1/audit/resources/{type}/{id}/history
Authorization: Bearer {token}

مثال -- كل الأحداث على حساب مستخدم:

GET /api/v1/audit/resources/user/3fa85f64-.../history
Authorization: Bearer {token}

نشاطي (Self-Service)

المستخدمون يستطيعون عرض نشاطهم بدون صلاحيات إدارية:

GET /api/v1/audit/me/activity
Authorization: Bearer {user_token}
GET /api/v1/audit/me/logins
Authorization: Bearer {user_token}

التصفية حسب فئة الـ Event

يمكنك التصفية على بادئات الـ Event Type لكي تجلب كل أحداث فئة:

لكي تجلب كل...استخدم eventType Filter
أحداث المصادقةauth.*
أحداث دورة حياة المستخدمuser.*
أحداث الأدوارrole.*
أحداث SAMLsaml.*
أحداث SCIMscim.*

تصدير بيانات التدقيق

صدّر الأحداث للتحليل خارج النظام أو الأرشفة أو إدخالها في SIEM.

عبر لوحة تحكم المسؤول

  1. انتقل إلى سجل التدقيق.
  2. طبّق عوامل التصفية للنطاق الزمني وأنواع الأحداث.
  3. انقر تصدير ← JSON أو تصدير ← CSV.

عبر الـ API

POST /api/v1/logs/export
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}
Content-Type: application/json

{
"format": "json",
"from": "2026-01-01T00:00:00Z",
"to": "2026-01-31T23:59:59Z",
"eventTypes": ["auth.login", "auth.login_failed", "user.created", "user.deleted"]
}

التصدير Async. تابع حالة الـ Job:

GET /api/v1/jobs/{jobId}/status
Authorization: Bearer {token}

بث السجلات

لكي تدفع السجلات Real-Time لنظام SIEM (مثل Splunk أو Datadog أو Elastic):

  1. إخطارات آلية -- اشترك بأنواع الأحداث المطلوبة. يرسل Ithbat كل حدث كـ POST Request إلى Endpoint تحدده. راجع إخطارات آلية.
  2. Log Stream API -- استعلام أو بث مباشر:
GET /api/v1/logs/stream
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}

سياسة الاحتفاظ

الخطةمدة الاحتفاظالحد الأقصى
Starter30 يومًا30 يومًا
Growth90 يومًا90 يومًا
Enterpriseسنةمخصص (حتى 7 سنوات)

السجلات Immutable -- لا يمكنك تعديلها أو حذفها قبل انتهاء فترة الاحتفاظ.


Audit Log API Reference

MethodEndpointالصلاحية
GET/api/v1/audit/eventsaudit:read
GET/api/v1/audit/events/{id}audit:read
GET/api/v1/audit/loginsaudit:read
GET/api/v1/audit/statsaudit:read
GET/api/v1/audit/users/{userId}/activityaudit:read
GET/api/v1/audit/users/{userId}/loginsaudit:read
GET/api/v1/audit/resources/{type}/{id}/historyaudit:read
GET/api/v1/audit/me/activityمستخدم مصادَق
GET/api/v1/audit/me/loginsمستخدم مصادَق
POST/api/v1/logs/exportlog:read
GET/api/v1/logs/streamlog:read

الخطوات التالية