واجهة الإدارة التنظيمية
إدارة المستخدمين والأدوار والوحدات التنظيمية وموفّري الهوية وسياسات الوصول عبر واجهة الإدارة المحددة النطاق بالمستأجر.
واجهة الإدارة التنظيمية (Administration API) هذه جزء من واجهة الإدارة (Management API) المصادَق عليها (/api/…). كل طلب محدد النطاق بالمستأجر: يُؤخذ المستأجر من الرمز الحامل، ولا يُمرَّر أبداً بشكل صريح، ولا يرى المتصل أو يعدّل سوى هويات مستأجره الخاص وتهيئته. راجع المصادقة لمعرفة كيفية الحصول على رمز.
يخضع كل مسار لبوابة أذونات الإدارة — Users.*، وRoles.*، وOrganizationUnits.*، وIdentityProviders.*، وAccessPolicies.*. الأذونات هي أوراق هرمية بترميز النقاط (مثل AccessPolicies.Create)، ويمنح منح بادئة أصل ضمنياً كل ورقة تحتها. يتلقى المتصل الذي يفتقر إلى الإذن المطلوب استجابة 403 Forbidden.
جميع المسارات نسبية إلى مضيف Cockpit الخاص بك، على سبيل المثال https://cockpit.example.com. الأقواس المعقوفة مثل {id} تشير إلى معامل مسار من نوع UUID.
المستخدمون
المستخدمون هم الهويات التي تسجّل الدخول إلى مستأجر. يحمل كل منهم حالة مصادقة كاملة (كلمة المرور، وTOTP، وعداد الإغلاق، وحالة الاعتماد) ويمكن تعيين أدوار ووحدات تنظيمية له.
| الطريقة + المسار | الغرض | الإذن |
|---|---|---|
GET /api/users | سرد المستخدمين | Users.Read |
POST /api/users | إنشاء مستخدم | Users.Create |
POST /api/users/{id}/approve | اعتماد مستخدم معلَّق | Users.Approve |
POST /api/users/{id}/lock | قفل حساب مستخدم | Users.Update |
POST /api/users/{id}/unlock | إلغاء قفل حساب مستخدم | Users.Update |
POST /api/users/{id}/suspend | تعليق حساب مستخدم | Users.Update |
POST /api/users/{id}/reset-password | إعادة تعيين كلمة مرور مستخدم | Users.Update |
PUT /api/users/{id}/roles | تعيين أدوار لمستخدم | Users.Update |
الأدوار والأذونات
التفويض قائم على الأدوار. الدور هو حزمة أذونات مسمّاة؛ ويحمل الرمز الذي يتلقاه المستخدم مجموعة الأذونات المسطَّحة الموسَّعة من أدواره. يمكن تحديد نطاق الأدوار بوحدة تنظيمية بحيث ينطبق المنح فقط ضمن ذلك الفرع.
| الطريقة + المسار | الغرض | الإذن |
|---|---|---|
GET /api/roles | سرد الأدوار | Roles.Read |
POST /api/roles | إنشاء دور | Roles.Create |
PUT /api/roles/{id} | تحديث دور | Roles.Update |
DELETE /api/roles/{id} | حذف دور | Roles.Delete |
PUT /api/roles/{id}/permissions | تحديد مجموعة أذونات دور | Roles.Update |
GET /api/roles/permissions | سرد كتالوج الأذونات الهرمي | Roles.Read |
الوحدات التنظيمية
تضيف الوحدات التنظيمية (OUs) طبقة نطاق ثانية داخل المستأجر. وهي تشكّل شجرة برمز مسار محقَّق (materialized-path) (مثل 00001.00003.00007)؛ ويمكن تحديد نطاق موارد مثل التطبيقات بوحدة تنظيمية، ويمكن تعيين الأدوار على مستوى الوحدة التنظيمية.
| الطريقة + المسار | الغرض | الإذن |
|---|---|---|
GET /api/org-units | سرد الوحدات التنظيمية | OrganizationUnits.Read |
POST /api/org-units | إنشاء وحدة تنظيمية | OrganizationUnits.Create |
GET /api/org-units/selectable | سرد الوحدات التنظيمية القابلة للاختيار للتعيين | OrganizationUnits.Read |
/api/org-units/{id}/roles | تعيين أدوار محددة النطاق بوحدة تنظيمية (إدارة مفوَّضة) | OrganizationUnits.Update |
موفّرو الهوية
يتيح موفّرو الهوية الخارجيون للمستخدمين تسجيل الدخول ببيانات اعتماد المؤسسة (Azure AD / Entra ID، وOkta، وKeycloak). تُهيَّأ الموفّرات ببيانات اعتماد العميل، وعناوين URL للسلطة/البيانات الوصفية، والنطاقات، وتعيينات المطالبات، ويمكنها التزويد التلقائي للمستخدمين في أدوار افتراضية.
| الطريقة + المسار | الغرض | الإذن |
|---|---|---|
GET /api/identity-providers | سرد موفّري الهوية المهيَّئين | IdentityProviders.Read |
POST /api/identity-providers | إنشاء موفّر هوية | IdentityProviders.Create |
POST /api/identity-providers/discover | اكتشاف نقاط نهاية الموفّر من عنوان URL للبيانات الوصفية / السلطة | IdentityProviders.Read |
POST /api/identity-providers/{id}/test-connection | اختبار اتصال الموفّر وبيانات اعتماده | IdentityProviders.Update |
POST /api/identity-providers/{id}/toggle | تفعيل الموفّر أو تعطيله | IdentityProviders.Update |
يخضع تسجيل الدخول الموحد أيضاً لأعلام ميزات موفّر الهوية الخاصة بإصدار المستأجر؛ ويجب تفعيل الموفّر للإصدار قبل أن يتسنى استخدامه.
سياسات الوصول
بالإضافة إلى RBAC، تتضمن الإدارة محرك سياسات الوصول Casbin ABAC الذي يحكم عمليات التشفير في وقت التشغيل حسب المستخدم وعنوان IP والموقع والوقت والمجموعة. السياسة محددة النطاق بالمستأجر ولا تسري إلا بعد ربطها بمورد (خدمة DKE، أو تطبيق عام، أو نقطة نهاية AWS XKS) عبر access_policy_id الخاص بها. النموذج الكامل موثَّق في صفحة سياسات الوصول.
| الطريقة + المسار | الغرض | الإذن |
|---|---|---|
GET /api/access-policies | سرد السياسات | AccessPolicies.Read |
POST /api/access-policies | إنشاء سياسة | AccessPolicies.Create |
GET /api/access-policies/{id} | الحصول على سياسة | AccessPolicies.Read |
PUT /api/access-policies/{id} | تحديث سياسة | AccessPolicies.Update |
DELETE /api/access-policies/{id} | حذف سياسة | AccessPolicies.Delete |
POST /api/access-policies/validate | التحقق من صحة تعريف سياسة قبل الحفظ | AccessPolicies.Read |
GET /api/access-policies/capabilities | مصفوفة القدرات لكل نوع تطبيق (أي من الأبعاد الخمسة يحترمه كل نوع تطبيق) | AccessPolicies.Read |
GET /api/access-policies/available-groups | المجموعات المتاحة لقواعد المجموعات | AccessPolicies.Read |
GET /api/access-policies/audit · GET /api/access-policies/{id}/audit | سجل تدقيق الإنفاذ | AccessPolicies.Read |
انتحال الهوية
يتيح انتحال الهوية لمسؤول مخوَّل التصرف كمستخدم آخر لأغراض الدعم واستكشاف الأخطاء وإصلاحها. يصدر بدء جلسة رمزاً محدد النطاق في سياق المستخدم المستهدف؛ ويعيد إيقافها المتصل إلى هويته الخاصة. تُسجَّل كل عملية انتحال هوية في سجلات النشاط.
| الطريقة + المسار | الغرض | الإذن |
|---|---|---|
POST /api/impersonation/start | بدء انتحال هوية مستخدم مستهدف | Users.Impersonate |
POST /api/impersonation/stop | إيقاف انتحال الهوية واستعادة هوية المتصل | Users.Impersonate |
يمنح انتحال الهوية أذونات المستخدم المستهدف الفعلية للمتصل طوال مدة الجلسة. قيّد إذن انتحال الهوية بالمسؤولين الموثوقين وراجع سجل التدقيق بانتظام.