تكوين DKE في Cockpit v2
وظائف تكوين Double Key Encryption (DKE 365) التي يقدّمها DuoKey Cockpit v2.
توثّق هذه الصفحة وظائف تكوين DKE 365 التي يقدّمها DuoKey Cockpit v2. لمعرفة سير عمل Cockpit v1 القديم، راجع قسمي الإعداد والعمليات في هذا الدليل.

عائلتا نقاط النهاية
يقدّم DKE 365 نوعين من نقاط النهاية:
- سطح إدارة يستخدمه مسؤولو Cockpit لنشر خدمات DKE وتكوينها وإدارتها. وهو محمي بجلسة مستخدم Cockpit وبالتحكم في الوصول القائم على الأدوار في المنصة.
- بروتوكول DKE العام الذي يستدعيه Microsoft 365 / Office مباشرة:
GetKeyعام، بينما يتحققDecryptمن رمز حامل Azure AD عند التكوين ويفرض سياسة الوصول المرتبطة.
دورة حياة الخدمة
Provisioned → Running → Disabled → Stopped (+ Failed)
فقط الخدمة في حالة Running تخدم طلبات فك التشفير.
إدارة خدمة
من Cockpit يمكنك نشر خدمة DKE جديدة، والتحقق من أن مفتاحاً ما قادر على DKE، وتفعيلها (ما يوفّر تلقائياً تطبيق Azure AD)، وتعطيلها أو إيقافها، وتدوير مفتاحها بنافذة تراكب، ومراقبة صحتها وإرشادات ربطها (DNS / CNAME). بعدها يستدعي Microsoft 365 / Office نقاط نهاية البروتوكول العام للخدمة (version وGetKey وDecrypt) مباشرة.

حقول تكوين الخدمة
تُكوَّن خدمة DKE بما يلي:
الهوية والتوجيه
name، وdescription، وslug (معرّف GUID يُستخدم لبناء رابط الخدمة)، وkey_id (مفتاح RSA-2048/4096 المرتبط)، وkey_name (يظهر في رابط kid المنشور)، وstatus.
الخوارزمية
algorithm: RSA-OAEP-256 (افتراضي) أو RS256.
نافذة تراكب تدوير المفتاح
cache_duration_hours (الافتراضي 24). أثناء التدوير يستمر المفتاح السابق في خدمة GetKey + Decrypt خلال هذه النافذة (previous_key_id / previous_key_retires_at).
Azure AD / Entra
azure_tenant_id، وazure_client_id، وazure_audience، وallowed_domains (نطاقات شركاء B2B، كل منها مطابَق لمُصدِري مستأجره الصالحين)، وidentity_provider_id (بيانات اعتماد Graph المستخدمة للتوفير التلقائي للتطبيق).
mTLS اختياري
mtls_enabled، وmtls_client_ca_pem، وmtls_allowed_subjects، وmtls_header_name (الافتراضي X-ARR-ClientCert).
فك تشفير متساهل
allow_anonymous (يُحتَرَم فقط في بيئات غير الإنتاج عندما يُفعِّل المضيف أيضاً الوضع المتساهل؛ يجب ألا يُستخدَم أبداً في الإنتاج).
التحكم في الوصول
access_policy_id يربط سياسة وصول تُقيَّم عند كل فك تشفير.

مثال على تكوين خدمة
{
"name": "Contoso DKE",
"slug": "89c3b193-af16-4887-8031-43f88d475d9d",
"key_id": "<rsa-key-uuid>",
"key_name": "dke_key",
"azure_tenant_id": "<azure-tenant-guid>",
"azure_client_id": "<app-guid>",
"azure_audience": "https://89c3b193-af16-4887-8031-43f88d475d9d.duokey365.com",
"allowed_domains": ["partner.com"],
"algorithm": "RSA-OAEP-256",
"cache_duration_hours": 24,
"mtls_enabled": false,
"allow_anonymous": false,
"access_policy_id": "<policy-uuid>",
"identity_provider_id": "<idp-uuid>"
}
تدفق GetKey / Decrypt
GetKey
يجلب Office مفتاح JWK العام للخدمة لتشفير المحتوى تحت مفتاح المؤسسة العام. المفتاح المنشور هو JWK قياسي من نوع RSA يكون فيه kid هو رابط الخدمة (https://{slug}.{base-domain}/dke/{slug}/{key_name}/{key_id}).
Decrypt
يُرسِل Office المفتاح المُغلَّف مرة أخرى. يحدّد Cockpit v2 الخدمة، ويشترط الحالة Running، ويختار المفتاح الفعّال (الحالي، أو المفتاح السابق خلال نافذة التدوير)، ويقوم بالتحقق الاختياري من mTLS، ويتحقق من رمز Azure AD JWT، ويفرض سياسة الوصول المرتبطة، ثم يفك التشفير بـ RSA-OAEP داخل الخزنة. لا يغادر المفتاح الخاص الخزنة أبداً.
كل عملية فك تشفير محدودة المعدل لكل مستأجر (الافتراضي 100 طلب/ثانية، قابل للتكوين).

يتبع المفتاح المنشور وحمولات الطلب/الاستجابة تنسيق بروتوكول DKE من Microsoft، بحيث يتعاون Office وPurview مع الخدمة دون أي تكوين مخصص.
توفير Azure AD (تسجيل الخدمة)
لا توجد خطوة "تسجيل" منفصلة. التسجيل = النشر ← التفعيل. عند enable، إذا كانت الخدمة تحمل identity_provider_id ولا يوجد تطبيق Azure بعد، يستدعي Cockpit v2 Microsoft Graph لإنشاء تسجيل تطبيق Azure AD وتكوينه (معرّف الهوية / الجمهور، رابط إعادة التوجيه)، ثم يخزّن azure_client_id وazure_audience وazure_app_object_id الناتجة. تأتي بيانات اعتماد Graph إما من مزوّد هوية الخدمة أو من احتياطي المضيف DKE_DEFAULT_GRAPH_* (الذي يتطلب Application.ReadWrite.All).

إعدادات DKE على مستوى المضيف (بيئة Cockpit v2)
تُضبَط متغيرات البيئة التالية على خادم Cockpit v2:
| المتغيّر | الغرض |
|---|---|
DKE_BASE_DOMAIN | نطاق DNS الأساسي لروابط اتصال الخدمة — كل خدمة هي https://{slug}.{DKE_BASE_DOMAIN} (يتطلب DNS بأحرف بدل + TLS) |
DKE_AUDIENCE_DOMAIN | جمهور JWT / قمة معرّف هوية Azure AD (يتراجع إلى DKE_BASE_DOMAIN) |
DKE_DEFAULT_GRAPH_TENANT_ID / DKE_DEFAULT_GRAPH_CLIENT_ID / DKE_DEFAULT_GRAPH_CLIENT_SECRET | تطبيق Microsoft Graph الاحتياطي المستخدَم للتوفير التلقائي لتسجيلات Azure AD |
DKE_ALLOW_PERMISSIVE_MODE | تفعيل اختياري لفك تشفير متساهل للتطوير/الاختبار فقط — **يجب إلغاء ضبطه في الإنتاج** |
DKE_TENANT_DECRYPT_RPS_MAX | سقف معدل فك التشفير لكل مستأجر (الافتراضي 100) |
DKE_JWKS_CACHE_TTL_SECS | مدة صلاحية ذاكرة تخزين JWKS الخاصة بـ Azure AD للتحقق من رمز فك التشفير |
Microsoft Purview
DKE هو مخزن مفاتيح DKE الخاص بـ Purview / MIP: تشير تسميات الحساسية من نوع Double Key Encryption إلى نقاط نهاية GetKey / Decrypt هذه (تُكوَّن التسميات من جهة Microsoft — راجع تسميات الحساسية وMicrosoft Purview). يقدّم Cockpit v2 إضافة إلى ذلك نوع تطبيق Purview DLP منفصلاً لتكامل منع فقدان البيانات.
تابع إلى سياسات الوصول للتحكم في من، ومن أين، ومتى يمكنه استخدام مفتاح DKE.