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

البدء

هذا الدليل هو دليل البدء السريع لـ Cockpit v2 لدمج تشفير البيانات الشفاف (TDE) من Oracle مع DuoKey. بحلول نهايته سيكون Oracle يستخدم DuoKey بوصفه مخزن مفاتيح HSM خارجيًا للمفتاح الرئيسي لـ TDE، مع عدم بقاء المفتاح الرئيسي إطلاقًا على مضيف قاعدة البيانات.

Cockpit v2

يستخدم هذا الدمج رمز حامل access_guid واحدًا، وملف تهيئة pkcs11.toml، ومزوّد libdke_pkcs11.so.

المفاهيم والتهيئة المرجعية

للاطلاع على النموذج المفاهيمي، راجع دليل التثبيت. أما المرجع الرسمي للتهيئة فهو تهيئة مزوّد PKCS#11 (pkcs11.toml).

كيف تتكامل المكوّنات​

يواصل Oracle تنفيذ التشفير الشامل للجداول ومساحات الجداول بنفسه، عتاديًا، باستخدام AES-NI. أما DuoKey فلا يكون إلا على مسار المفتاح الرئيسي — أي فتح مخزن المفاتيح، وSET KEY، وتغليف/فكّ تغليف مفاتيح مساحات الجداول تحت مفتاح التشفير الرئيسي (MEK).

┌─────────────────────────────────────┐
│ Oracle Database Server │
│ │
│ Oracle TDE │
│ (bulk AES table/tablespace │
│ crypto stays local, AES-NI) │
│ │ PKCS#11 (master-key path) │
│ ▼ │
│ DuoKey PKCS#11 provider │
│ libdke_pkcs11.so / dke_pkcs11.dll │
│ │ HTTPS (one call per op) │
└────────┼────────────────────────────┘
▼
DuoKey Cockpit (v2 proxy endpoint)
│
▼
Tenant vault / HSM
(Securosys HSM in production)

المتطلبات المسبقة​

قاعدة بيانات Oracle​

  • قاعدة بيانات Oracle الإصدار 11g R2 أو 12c أو 18c أو 19c أو 21c أو 23ai
  • خيار Oracle Advanced Security مُرخَّص
  • وصول مسؤول قاعدة بيانات (DBA) بصلاحية SYSDBA وصلاحية النظام ADMINISTER KEY MANAGEMENT
رقعة Oracle 11g

بالنسبة لـ Oracle 11g R2، تأكد من تطبيق الرقعة 18948524.

DuoKey​

  • الوصول إلى واجهة الويب Cockpit v2 الخاصة بك في DuoKey
  • مكتبة مزوّد PKCS#11 من DuoKey، تُوفَّر من قِبل DuoKey
  • اتصال شبكي من خادم قاعدة البيانات إلى مضيف Cockpit عبر HTTPS (المنفذ 443)
هدف بناء المكتبة

يجب أن تُبنى المكتبة لأجل Oracle Linux 8 / glibc 2.28. المكتبة المُصرَّفة مقابل إصدار glibc أحدث ستفشل في التحميل ويُبلِّغ Oracle عن ORA-28353 من دون سجل إضافي. استخدم البناء الذي توفّره DuoKey لمنصّتك.

النظام​

  • خادم Linux (يُوصى بـ Oracle Linux 8)
  • وصول root أو sudo، وحساب مالك مثيل Oracle (المستخدم oracle)

الخطوة 1: إنشاء تطبيق Oracle TDE في Cockpit​

  1. سجّل الدخول إلى عنوان URL الخاص بـ DuoKey Cockpit v2.
  2. أنشئ (أو فعّل) تطبيق Oracle TDE لهذه القاعدة. يوفّر التطبيق مفتاحًا رئيسيًا نشطًا مبدئيًا (AES-256) ويُصدر access_guid.
  3. افتح التطبيق ونزّل حزمة النشر. يولّد Cockpit كل ما تحتاجه لهذه القاعدة:
    • ملف pkcs11.toml (مع server_url وaccess_guid الصحيحين)،
    • عمليات تصدير متغيّرات البيئة (بما في ذلك DKE_PKCS11_CONF)،
    • سكريبتات SQL الخاصة بـ Oracle.
بيان اعتماد واحد

يستخدم Cockpit v2 رمز حامل access_guid واحدًا، مضمّنًا في مسار server_url. لا يوجد OAuth2، ولا معرّف/سرّ عميل، ولا اسم مستخدم/كلمة مرور، ولا ترويسة مستأجر — يُحلّ المستأجر على جانب الخادم. تعامل مع الحزمة بوصفها معلومات حسّاسة ولا تودعها أبدًا في نظام التحكم بالإصدارات.

الخطوة 2: التحقق من الاتصال​

من خادم قاعدة البيانات، تأكد من إمكانية الوصول إلى مضيف Cockpit عبر HTTPS:

curl -v https://<cockpit-host>

يعمل طلب GET على عنوان URL الوسيط (proxy) للتطبيق بمثابة اختبار جاهزية. إذا فشل الاتصال، فتحقّق من أن المنفذ 443 مفتوح، وأن DNS يُحلَّل، وأن شهادات TLS موثوقة (بالنسبة لـ Cockpit في الموقع، أضف شهادة CA الخاصة به إلى مخزن ثقة نظام التشغيل).

الخطوة 3: تثبيت مزوّد PKCS#11 من DuoKey​

ضع المكتبة دون تغيير في دليل مورّد PKCS#11 الخاص بـ Oracle. يُحمّل Oracle أول كائن مشترك يجده في دليل المورّد/الإصدار بأي اسم ملف كان — فلا تعِد تسميتها إلى libpkcs11.so.

# Standard Oracle Database location
sudo mkdir -p /opt/oracle/extapi/64/hsm/DuoKey/1.0
sudo cp libdke_pkcs11.so /opt/oracle/extapi/64/hsm/DuoKey/1.0/

# Set ownership for the Oracle user
sudo chown -R oracle:oinstall /opt/oracle/extapi/64/hsm/DuoKey
sudo chmod -R 755 /opt/oracle/extapi/64/hsm/DuoKey

على Windows، يكون العنصر هو dke_pkcs11.dll. وعلى Oracle Key Vault، يكون مسار المورّد /usr/local/okv/hsm/generic/ بدلًا من ذلك.

حافظ على نظافة دليل المورّد

يُحمّل Oracle أول ملف .so في /opt/oracle/extapi/64/hsm/DuoKey/1.0/ بصرف النظر عن اسمه. أبقِ مكتبة DuoKey وحدها في ذلك الدليل ليُحمَّل المزوّد الصحيح.

الخطوة 4: وضع ملف التهيئة​

انسخ ملف pkcs11.toml من حزمة النشر إلى موقع محمي ووجّه المزوّد إليه عبر متغيّر البيئة DKE_PKCS11_CONF (المضبوط في ملف تعريف مستخدم Oracle). قيّد الملف على مستخدم Oracle:

sudo chown oracle:oinstall /etc/dke/pkcs11.toml
sudo chmod 600 /etc/dke/pkcs11.toml
export DKE_PKCS11_CONF=/etc/dke/pkcs11.toml

يحتوي ملف pkcs11.toml في الحزمة مسبقًا على server_url ضمن [http_config] (مع app_id وaccess_guid)، وعلى access_token، وtimeout_secs، وverify_tls، وعلى slot_id وlogging_level وlogging_folder ضمن [pkcs11]. يمكن تجاوز الحقول الفردية لكل مضيف عبر متغيّرات البيئة DKE_PKCS11_*. راجع تهيئة مزوّد PKCS#11 (pkcs11.toml) للاطلاع على المخطط الكامل.

الخطوة 5: تهيئة Oracle لـ TDE المستند إلى HSM​

اتصل بوصفك SYSDBA ونفّذ SQL من حزمة النشر. نوع مخزن المفاتيح هو HSM.

5.1 ضبط جذر المحفظة وتهيئة TDE​

ALTER SYSTEM SET WALLET_ROOT='<oracle-base>/admin/<sid>/wallet' SCOPE=SPFILE;
-- Restart to apply WALLET_ROOT
SHUTDOWN IMMEDIATE;
STARTUP;

ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM' SCOPE=BOTH;

5.2 فتح مخزن مفاتيح HSM​

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<pin>"
CONTAINER = ALL;
رمز PIN إرشادي

بالنسبة لمزوّد DuoKey، يكون بيان الاعتماد الحقيقي هو access_guid في pkcs11.toml؛ أما قيمة IDENTIFIED BY فهي إرشادية. يمكنك أيضًا فتح مخزن المفاتيح باستخدام IDENTIFIED BY EXTERNAL STORE عندما يُحفظ بيان الاعتماد في مخزن خارجي.

5.3 ضبط المفتاح الرئيسي لـ TDE​

ADMINISTER KEY MANAGEMENT SET KEY
IDENTIFIED BY "<pin>"
WITH BACKUP
CONTAINER = ALL;

المفتاح الرئيسي هو AES-256.

تعدّد المستأجرين (CDB / PDB)

أنشئ مفتاح الجذر أولًا، ثم أنشئ مفتاحًا لكل PDB في جلسته الخاصة. أي PDB لا يكون في حالة OPEN READ WRITE أثناء إعادة توليد المفاتيح بـ CONTAINER=ALL يُثير الخطأ ORA-46664.

ALTER SESSION SET CONTAINER = <pdb_name>;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "<pin>" WITH BACKUP;

الخطوة 6: التحقق​

SELECT wrl_type, status, wallet_type FROM V$ENCRYPTION_WALLET;

المتوقع:

  • WRL_TYPE: HSM
  • STATUS: OPEN

أنشئ مساحة جداول مشفّرة للتأكد من العمل من طرف إلى طرف:

CREATE TABLESPACE encrypted_ts
DATAFILE '<oradata-path>/encrypted_ts01.dbf' SIZE 128M
ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);

ثم تأكد من ظهور عمليات المفاتيح في سجل التدقيق الخاص بـ Cockpit لهذا التطبيق.

تدوير المفاتيح​

دوّر المفتاح الرئيسي من Cockpit. يجعل التدوير مفتاحًا جديدًا نشطًا ويُعطّل مع الإبقاء على المفتاح السابق، بحيث تبقى مفاتيح مساحات الجداول المغلّفة تحت MEK القديم قابلة لفكّ التشفير. يُعيد Cockpit سكريبت SQL الخاص بالتدوير في Oracle (ADMINISTER KEY MANAGEMENT SET KEY … WITH BACKUP).

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

استكشاف الأخطاء وإصلاحها​

فشل تحميل المكتبة (ORA-28353، دون سجل) — بُنيت المكتبة مقابل إصدار glibc أحدث. استخدم بناء Oracle Linux 8 / glibc 2.28 من DuoKey.

ORA-28365: wallet is not open — أعد فتح مخزن المفاتيح:

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<pin>" CONTAINER = ALL;

ORA-46664 أثناء إعادة توليد المفاتيح متعدّد المستأجرين — لم يكن أحد PDB الهدف في حالة OPEN READ WRITE. افتح الـ PDB (أو أنشئ مفتاحه بشكل فردي) وأعد المحاولة.

الاتصال — تحقّق من المنفذ 443 إلى <cockpit-host>، ومن server_url في pkcs11.toml، ومن ثقة CA (في الموقع). تُكتب سجلات المزوّد في logging_folder (الافتراضي /var/log/dke-pkcs11).

الدعم​