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

إدارة المفاتيح

يغطي هذا الدليل عمليات المفتاح الرئيسي لـ Oracle TDE مع DuoKey KMS، بما في ذلك تدوير المفاتيح وسيناريوهات الترحيل وإدارة دورة حياة المفاتيح.

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

يُعد تدوير المفاتيح الدوري ممارسة أمنية بالغة الأهمية. يجعل DuoKey KMS من السهل تدوير مفاتيح تشفير TDE الرئيسية.

لماذا نُدوِّر المفاتيح؟​

  • الامتثال الأمني: تلبية المتطلبات التنظيمية (عادةً 6-12 شهراً)
  • الحد من التعرض: تقليل المخاطر في حال اختراق مفتاح
  • أفضل ممارسة: المعيار الصناعي لإدارة مفاتيح التشفير

تردد التدوير​

الجدول الموصى به:

  • قواعد بيانات الإنتاج: كل 6-12 شهراً
  • بيئات الأمان العالي: كل 3-6 أشهر
  • متطلبات الامتثال: وفقاً لما تفرضه اللوائح

تدوير المفاتيح الرئيسية​

بدون محفظة تسجيل الدخول التلقائي​

لقاعدة البيانات الحاوية (CDB):

-- Rotate master key for all containers
ADMINISTER KEY MANAGEMENT SET KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
CONTAINER = ALL;

لقاعدة البيانات غير الحاوية:

-- Rotate master key
ADMINISTER KEY MANAGEMENT SET KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>";

مع محفظة تسجيل الدخول التلقائي​

لقاعدة البيانات الحاوية (CDB):

-- Rotate master key with auto-login
ADMINISTER KEY MANAGEMENT SET KEY
FORCE KEYSTORE
IDENTIFIED BY "<DKE_APP_PASSWORD>"
CONTAINER = ALL;
قواعد البيانات القابلة للتوصيل

في بعض إصدارات قواعد البيانات، قد تحتاج إلى تدوير المفاتيح بشكل فردي داخل كل قاعدة بيانات قابلة للتوصيل (PDB).

لقاعدة البيانات غير الحاوية:

-- Rotate master key with auto-login
ADMINISTER KEY MANAGEMENT SET KEY
FORCE KEYSTORE
IDENTIFIED BY "<DKE_APP_PASSWORD>";

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

-- Check master key history
SELECT key_id, creation_time, activation_time
FROM v$encryption_keys
ORDER BY creation_time DESC;

-- Verify current key
SELECT * FROM v$encryption_wallet;

اعتبارات ما بعد التدوير​

إعادة تشغيل قاعدة البيانات

بعد تدوير المفاتيح، قد تصل عملية Gen0 الخاصة بقاعدة البيانات إلى المفتاح الرئيسي الأقدم لعمليات نبض القلب. سيُستخدم المفتاح الجديد بعد إعادة التشغيل التالية لقاعدة البيانات.

أعد تشغيل قاعدة البيانات لاستخدام المفتاح الجديد:

SHUTDOWN IMMEDIATE;
STARTUP;

الترحيل من المحفظة المحلية إلى DuoKey KMS​

إذا كانت لديك قواعد بيانات TDE موجودة تستخدم محافظ محلية، فيمكنك الترحيل إلى DuoKey KMS.

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

  • قاعدة بيانات Oracle موجودة مع تهيئة TDE
  • محفظة TDE محلية (ewallet.p12)
  • DuoKey KMS مُهيَّأ وفقاً لدليل البدء
  • مكتبة PKCS#11 مثبّتة ومُهيَّأة

خطوات الترحيل​

الخطوة 1: نسخ المحفظة الحالية احتياطياً​

# Backup existing wallet
cp $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/ewallet.p12 \
$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/ewallet.p12.backup

الخطوة 2: نقل محفظة تسجيل الدخول التلقائي (إن وُجدت)​

# Rename auto-login wallet
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde
mv cwallet.sso cwallet.sso_backup

الخطوة 3: تغيير كلمة مرور المحفظة المحلية​

غيّر كلمة مرور المحفظة المحلية لتتطابق مع كلمة مرور تطبيق DuoKey:

-- Change wallet password
ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD
IDENTIFIED BY "<old_wallet_password>"
SET "<DKE_APP_PASSWORD>"
WITH BACKUP;

بالنسبة لـ Oracle 11g R2:

# Use orapki utility
orapki wallet change_pwd \
-wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde \
-oldpwd old_password \
-newpwd DKE_APP_PASSWORD

الخطوة 4: تهيئة طريقة المحفظة​

بالنسبة لـ Oracle 18c والإصدارات الأقدم:

-- Set wallet method to both FILE and HSM
ALTER SYSTEM SET ENCRYPTION_WALLET_LOCATION=
'(SOURCE=(METHOD=HSM)(METHOD_DATA=(DIRECTORY=<wallet_location>)))'
SCOPE=SPFILE;

-- Restart database
SHUTDOWN IMMEDIATE;
STARTUP;

بالنسبة لـ Oracle 19c والإصدارات الأحدث:

-- Set TDE configuration for HSM and FILE
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM|FILE'
SCOPE=BOTH;

الخطوة 5: فتح كلتا المحفظتين​

-- Open both HSM and local wallets
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<DKE_APP_PASSWORD>";

-- Verify both wallets are open
SELECT * FROM V$ENCRYPTION_WALLET;

الناتج المتوقع: يجب أن تُظهر كلٌّ من FILE وHSM الحالة OPEN.

الخطوة 6: ترحيل المفاتيح إلى DuoKey KMS​

-- Migrate master key from local wallet to DuoKey KMS
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
MIGRATE USING "<DKE_APP_PASSWORD>"
WITH BACKUP USING 'LocalWalletMigration';

بالنسبة لـ Oracle 11g R2:

-- Migrate key
ALTER SYSTEM SET ENCRYPTION KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
MIGRATE USING "<DKE_APP_PASSWORD>";

الخطوة 7: التحقق من الترحيل​

-- Check that keys are in DuoKey KMS
SELECT key_id, creation_time, activation_time
FROM v$encryption_keys
ORDER BY creation_time DESC;

تحقق من سجلات تدقيق DuoKey Cockpit للاطلاع على أحداث ترحيل المفاتيح.

الخطوة 8: تهيئة تسجيل الدخول التلقائي (اختياري)​

اتبع خطوات تهيئة تسجيل الدخول التلقائي من دليل البدء.

الترحيل العكسي: من DuoKey KMS إلى المحفظة المحلية​

إذا كنت بحاجة إلى الترحيل العكسي من DuoKey KMS إلى محفظة محلية:

قيد Oracle 11g R2

لا يدعم Oracle 11g R2 الترحيل العكسي. الترحيل العكسي متاح فقط عند الترقية من 11g R2 إلى 12c أو أعلى.

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

  • قاعدة بيانات Oracle 12c أو أعلى
  • TDE مُهيَّأ مع DuoKey KMS
  • الوصول إلى كلٍّ من محفظة HSM والمحفظة المحلية

خطوات الترحيل العكسي​

الخطوة 1: نقل محفظة تسجيل الدخول التلقائي​

# Backup auto-login wallet
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde
mv cwallet.sso cwallet.sso_backup

الخطوة 2: فتح كلتا المحفظتين​

-- Open both HSM and local wallets manually
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<DKE_APP_PASSWORD>"
CONTAINER=ALL;

-- Verify both are open
SELECT * FROM V$ENCRYPTION_WALLET;

الخطوة 3: التغيير إلى طريقة FILE​

بالنسبة لـ Oracle 18c والإصدارات الأقدم:

-- Change to FILE method only
ALTER SYSTEM SET ENCRYPTION_WALLET_LOCATION=
'(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=<wallet_location>)))'
SCOPE=SPFILE;

-- Restart database
SHUTDOWN IMMEDIATE;
STARTUP;

بالنسبة لـ Oracle 19c والإصدارات الأحدث:

-- Change to FILE method
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=FILE'
SCOPE=BOTH;

الخطوة 4: الترحيل العكسي للمفاتيح​

-- Reverse migrate from HSM to local wallet
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY
IDENTIFIED BY "<DKE_APP_PASSWORD>"
REVERSE MIGRATE USING "<DKE_APP_PASSWORD>"
WITH BACKUP USING 'ReverseMigration';

الخطوة 5: التحقق من الترحيل العكسي​

-- Verify wallet status
SELECT * FROM V$ENCRYPTION_WALLET;

-- Should show FILE wallet only

دمج Oracle Data Guard​

بالنسبة لبيئات Oracle Data Guard، اتبع هذه الخطوات لدمج قواعد البيانات الاحتياطية مع DuoKey KMS.

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

  • قاعدة البيانات الأساسية مدمجة مع DuoKey KMS
  • قاعدة البيانات الاحتياطية مُهيَّأة في Data Guard
  • مكتبة PKCS#11 مثبّتة على الخادم الاحتياطي

خطوات الدمج​

الخطوة 1: نسخ ملفات المحفظة​

انسخ ملفات المحفظة من الأساسية إلى الاحتياطية:

# On primary server
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet/tde

# Copy to standby server
scp cwallet.sso standby_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
scp ewallet.p12 standby_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/

الخطوة 2: تثبيت PKCS#11 على الاحتياطية​

على الخادم الاحتياطي:

# Copy PKCS#11 library
sudo mkdir -p /opt/oracle/extapi/64/hsm/DuoKey/1.0
sudo cp /path/to/libdke_pkcs11.so \
/opt/oracle/extapi/64/hsm/DuoKey/1.0/libdke_pkcs11.so

# Set permissions
sudo chown -R oracle:oinstall /opt/oracle
sudo chmod -R 775 /opt/oracle

الخطوة 3: نسخ تهيئة PKCS#11​

# Copy pkcs11.toml from primary to standby
scp /etc/duokey/pkcs11.toml \
standby_server:/etc/duokey/pkcs11.toml

# On standby, set permissions
sudo chown oracle:oinstall /etc/duokey/pkcs11.toml
sudo chmod 600 /etc/duokey/pkcs11.toml

الخطوة 4: تهيئة قاعدة البيانات الاحتياطية​

على قاعدة البيانات الاحتياطية:

-- Point to both HSM and FILE
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM|FILE'
SCOPE=BOTH;

الخطوة 5: التحقق من تسجيل الدخول التلقائي​

يجب أن تفتح محفظة تسجيل الدخول التلقائي المحفظة تلقائياً على الاحتياطية.

-- Check wallet status on standby
SELECT * FROM V$ENCRYPTION_WALLET;

الناتج المتوقع:

  • WRL_TYPE: HSM
  • STATUS: OPEN (مع تسجيل الدخول التلقائي)
  • WALLET_TYPE: AUTO_LOGIN

النسخ الاحتياطي والاسترداد​

اعتبارات النسخ الاحتياطي لـ TDE​

عند إجراء نسخ احتياطي لقواعد البيانات المشفّرة بـ TDE:

تشفير مساحة الجداول:

  • تُشفَّر النسخ الاحتياطية افتراضياً
  • تحافظ نسخ RMAN الاحتياطية على التشفير

تشفير الأعمدة:

  • لا تُشفَّر النسخ الاحتياطية افتراضياً
  • البيانات في مخرجات التصدير (expdp) غير مشفّرة

نسخ RMAN الاحتياطية المشفّرة​

# RMAN backups of encrypted tablespaces are encrypted automatically
rman target /

RMAN> BACKUP DATABASE;

التصدير المشفّر (Data Pump)​

بالنسبة لتشفير الأعمدة، فعّل التشفير صراحةً في عمليات التصدير:

# Encrypted export
expdp hr DIRECTORY=dpump_dir1 \
DUMPFILE=hr_enc.dmp \
ENCRYPTION=all \
ENCRYPTION_ALGORITHM=AES256 \
ENCRYPTION_MODE=TRANSPARENT

استرداد قواعد بيانات TDE​

لاسترداد قواعد بيانات TDE على نظام مستهدف:

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

  • DuoKey KMS مُهيَّأ على النظام المستهدف
  • نفس ملفات المحفظة أو الوصول إلى نفس تطبيق DuoKey
  • مكتبة PKCS#11 مثبّتة

خطوات الاسترداد​

  1. نسخ ملفات المحفظة (إذا لم تكن تستخدم نفس تطبيق DuoKey):
# Copy from source to target
scp cwallet.sso target_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
scp ewallet.p12 target_server:$ORACLE_BASE/admin/$ORACLE_SID/wallet/tde/
  1. تثبيت تهيئة PKCS#11:
# Copy pkcs11.toml
scp /etc/duokey/pkcs11.toml target_server:/etc/duokey/
  1. تهيئة قاعدة البيانات المستهدفة:
-- Set TDE configuration
ALTER SYSTEM SET TDE_CONFIGURATION='KEYSTORE_CONFIGURATION=HSM|FILE'
SCOPE=BOTH;
  1. استرداد قاعدة البيانات:
# RMAN restore
rman target /

RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
  1. التحقق من حالة المحفظة:
-- Check wallet is open
SELECT * FROM V$ENCRYPTION_WALLET;

استنساخ قاعدة البيانات القابلة للتوصيل​

يمكنك استنساخ قواعد البيانات القابلة للتوصيل (PDBs) مع مفاتيح تشفير TDE المخزَّنة في DuoKey KMS.

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

  • قاعدتا البيانات المصدر والهدف مدمجتان مع DuoKey KMS
  • كلتا قاعدتي البيانات تستخدمان تطبيقات في نفس مجموعة DuoKey
  • المفاتيح الرئيسية قابلة للوصول من كلتا قاعدتي البيانات

الاستنساخ الساخن من PDB المصدر​

على قاعدة البيانات المصدر​

  1. إنشاء استنساخ ساخن:
-- Connect as SYSDBA
sqlplus / as sysdba

-- Create hot clone of encrypted PDB
CREATE PLUGGABLE DATABASE PDB2_CLONE
FROM PDB2
FILE_NAME_CONVERT = (
'/u01/app/oracle/oradata/ORCLDB/pdb2',
'/u01/app/oracle/oradata/ORCLDB/pdb2_clone'
)
KEYSTORE IDENTIFIED BY "<DKE_APP_PASSWORD>";
  1. التحقق من حالة المحفظة:
-- Check wallet status for all PDBs
SELECT con_id, wrl_type, status, wallet_type
FROM v$encryption_wallet;
  1. التحقق من البيانات المشفّرة:
-- Switch to source PDB
ALTER SESSION SET CONTAINER=PDB2;

-- Check encrypted columns
SELECT * FROM dba_encrypted_columns;

-- Verify data is accessible
SELECT * FROM schema.encrypted_table;
  1. فصل PDB المستنسخ:
-- Connect as SYSDBA
conn / as sysdba

-- Unplug the cloned PDB
ALTER PLUGGABLE DATABASE PDB2_CLONE UNPLUG INTO
'/u01/app/oracle/pdb2_clone.pdb';

على قاعدة البيانات الهدف​

  1. نسخ ملف PDB:
# Copy .pdb file to target server
scp /u01/app/oracle/pdb2_clone.pdb \
target_server:/u01/app/oracle/oradata/ORCLDB/
المتطلبات المسبقة

يجب أن تكون قاعدة البيانات الهدف:

  • مشفّرة ومدمجة مع DuoKey KMS
  • لديها وصول إلى نفس مجموعة DuoKey التي تحتوي على مفاتيح PDB المصدر
  • لديها مفتاح رئيسي مُعيَّن في الحاوية الجذرية (CDB)
  1. توصيل PDB:
-- Connect to target database as SYSDBA
sqlplus / as sysdba

-- Create PDB from .pdb file
CREATE PLUGGABLE DATABASE PDB2 USING
'/u01/app/oracle/oradata/ORCLDB/pdb2_clone.pdb'
COPY FILE_NAME_CONVERT=(
'/u01/app/oracle/oradata/ORCLDB/pdb2_clone',
'/u01/app/oracle/oradata/ORCLDB/pdb2'
)
KEYSTORE IDENTIFIED BY "<DKE_APP_PASSWORD>";
  1. فتح PDB والمحفظة:
-- Switch to new PDB
ALTER SESSION SET CONTAINER=PDB2;

-- Check wallet status
SELECT * FROM V$ENCRYPTION_WALLET;

-- Open wallet if needed (external keystore; the PIN is advisory —
-- the access_guid bearer token in pkcs11.toml authenticates the request)
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY "<DKE_APP_PASSWORD>";
  1. التحقق من الوصول إلى البيانات:
-- Verify encrypted columns
SELECT * FROM dba_encrypted_columns;

-- Test data access
SELECT * FROM schema.encrypted_table;

ترقية مكتبة PKCS#11​

توفر التحديثات المنتظمة لمكتبة PKCS#11 ميزات جديدة وتحسينات أمنية.

التوقف مطلوب

تتطلب ترقية مكتبة PKCS#11 توقف قاعدة البيانات.

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

الخطوة 1: الحصول على المكتبة الجديدة​

احصل على أحدث مكتبة DuoKey PKCS#11 (libdke_pkcs11.so) من دعم DuoKey وانسخها إلى مضيف قاعدة البيانات.

الخطوة 2: نسخ المكتبة الحالية احتياطياً​

# Backup current library
cd /opt/oracle/extapi/64/hsm/DuoKey/1.0
cp libdke_pkcs11.so libdke_pkcs11.so.backup

الخطوة 3: إيقاف تشغيل قاعدة البيانات​

-- Shutdown database
sqlplus / as sysdba

SHUTDOWN IMMEDIATE;

الخطوة 4: استبدال المكتبة​

# Copy the new library into place (overwriting the backed-up copy)
sudo cp libdke_pkcs11.so \
/opt/oracle/extapi/64/hsm/DuoKey/1.0/libdke_pkcs11.so

# Set permissions
sudo chown -R oracle:oinstall \
/opt/oracle/extapi/64/hsm/DuoKey/1.0
sudo chmod -R 775 \
/opt/oracle/extapi/64/hsm/DuoKey/1.0

الخطوة 5: بدء تشغيل قاعدة البيانات​

-- Start database
sqlplus / as sysdba

STARTUP;

الخطوة 6: التحقق من العمليات​

# Check PKCS#11 logs
tail -f /var/log/dke-pkcs11/*.log

ابحث عن:

  • اتصال ناجح بـ DuoKey KMS
  • عمليات الوصول إلى المفاتيح

إجراء التراجع​

في حال حدوث مشكلات بعد الترقية:

# Shutdown database
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
exit

# Restore previous version
cd /opt/oracle/extapi/64/hsm/DuoKey/1.0
mv libdke_pkcs11.so.backup libdke_pkcs11.so

# Restart database
sqlplus / as sysdba
STARTUP;
الدعم

للحصول على المساعدة في الترقية أو حل المشكلات، تواصل مع دعم DuoKey على [email protected].

ملخص أفضل الممارسات​

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

  • دوّر المفاتيح كل 6-12 شهراً
  • وثّق جدول التدوير
  • اختبر التدوير في بيئة غير إنتاجية أولاً
  • أعد تشغيل قاعدة البيانات بعد التدوير

استراتيجية النسخ الاحتياطي​

  • نسخ RMAN احتياطية منتظمة لقواعد البيانات المشفّرة
  • انسخ ملفات المحفظة احتياطياً بشكل منفصل
  • اختبر إجراءات الاسترداد
  • وثّق إجراءات الاسترداد

التوفر العالي​

  • استخدم محافظ تسجيل الدخول التلقائي
  • وزّع ملفات المحفظة في RAC/Data Guard
  • راقب توفر DuoKey KMS
  • هيّئ مهلات إعادة المحاولة بشكل مناسب

الأمان​

  • افصل الواجبات: مسؤولو قواعد البيانات ومسؤولو الأمن
  • قيّد الوصول إلى pkcs11.toml
  • راقب سجلات التدقيق في DuoKey Cockpit
  • استخدم تطبيقات فريدة لكل قاعدة بيانات

العمليات​

  • وثّق جميع التهيئات
  • اختبر الترقيات في بيئة غير إنتاجية
  • راقب سجلات PKCS#11
  • حافظ على إصدار PKCS#11 الحالي

الدعم​

للحصول على المساعدة بشأن عمليات إدارة المفاتيح: