تكوين 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) مقبولاً على الخدمة.
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 العام للخدمة من رابط التسمية (https://{slug}.{base-domain}/dke/{slug}) لتشفير المحتوى تحت مفتاح المؤسسة العام. المفتاح المنشور هو JWK قياسي من نوع RSA يسمّي فيه kid إصدار المفتاح الحالي (https://{slug}.{base-domain}/dke/{slug}/{key_id}).
Decrypt
يُرسِل Office المفتاح المُغلَّف مرة أخرى إلى kid المسجَّل في المستند. يحدّد Cockpit v2 الخدمة، ويشترط الحالة Running، ويختار المفتاح الذي يسمّيه kid (المفتاح الحالي، أو مفتاح لفك التشفير فقط من السجل)، ويقوم بالتحقق الاختياري من mTLS، ويتحقق من رمز Azure AD JWT، ويفرض سياسة الوصول المرتبطة، ثم يفك التشفير بـ RSA-OAEP داخل الخزنة. لا يغادر المفتاح الخاص الخزنة أبداً.
كل عملية فك تشفير محدودة المعدل لكل مستأجر (الافتراضي 100 طلب/ثانية، قابل للتكوين).

يتبع المفتاح المنشور وحمولات الطلب/الاستجابة تنسيق بروتوكول DKE من Microsoft، بحيث يتعاون Office وPurview مع الخدمة دون أي تكوين مخصص.
تدوير المفاتيح وسجل المفاتيح
منذ Cockpit 2.0.8، لا يغيّر التدوير الرابط الموجود في تسمية الحساسية.
| العنصر | السلوك |
|---|---|
| رابط التسمية | الرابط الذي يوضع في تسمية Purview هو https://{slug}.{base-domain}/dke/{slug}. يسمّي الخدمة لا المفتاح، ويظهر في صفحة تفاصيل الخدمة. |
| التدوير | تُشفَّر المستندات الجديدة بالمفتاح الجديد. يتغيّر kid؛ ولا يتغيّر رابط التسمية. |
| المفاتيح المُدوَّرة خارج الخدمة | تُحفظ في سجل مفاتيح الخدمة لفك التشفير فقط، فتبقى المستندات المشفّرة بها قابلة للقراءة. لم يعد المفتاح المُدوَّر خارج الخدمة ينتهي من تلقاء نفسه. |
| المقاعدة / الاستعادة | يُقاعِد المسؤول مفتاحاً من السجل عندما لا يعود أي مستند بحاجة إليه؛ ويجيب المفتاح المُقاعَد بـ 404. يمكن استعادة المفتاح المُقاعَد. |
| إعادة تسمية المفتاح | تحمل الروابط معرّف الخدمة (slug) ومعرّف المفتاح، ولا تحمل اسم المفتاح أبداً، لذا لا تغيّر إعادة تسمية المفتاح شيئاً بالنسبة إلى Office. تعرض الخدمة الاسم الجديد. |
تستمر التسمية التي يسمّي رابطها مفتاحاً (https://{slug}.{base-domain}/dke/{key_id}) في العمل. ومنذ 2.0.9 تتبع التدويرات أيضاً: فهي تشفّر المستندات الجديدة بالمفتاح الحالي للخدمة، دون أي تغيير في التسمية.
توفير 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.