تشفير البيانات في قاعدة البيانات المصدر

تشفير البيانات الشفاف (TDE) يشفر البيانات بشفافية في بقية أجزاء Oracle Database. وهو يوقف المحاولات غير المصرح بها من نظام التشغيل للوصول إلى بيانات قاعدة البيانات المخزنة في الملفات، دون التأثير على كيفية وصول التطبيقات إلى البيانات باستخدام SQL. تم تكامل TDE بالكامل مع Oracle Database ويمكن تشفير النسخ الاحتياطية لقاعدة البيانات بالكامل (RMAN) أو عمليات تصدير مضخة البيانات أو مساحات جداول التطبيقات بأكملها أو أعمدة حساسة محددة. تظل البيانات المشفرة مشفرة في قاعدة البيانات، سواء كانت في ملفات تخزين مساحة الجدول أو مساحات الجداول المؤقتة أو مساحات جداول التراجع أو ملفات أخرى مثل سجلات الإعادة.

بالنسبة لاستعادة القدرة على العمل بعد الكوارث، يجب أن تكون كلمة السر في طبعات Oracle Cloud Infrastructure المحلية متماثلة. إذا لم تكن كذلك، فاستخدم الأمر sqlplus لتحديث كلمة السر.

تحديد ما إذا كان TDE ممكنًا في قاعدة البيانات المصدر أم لا

عند عدم تمكين تشفير البيانات الشفاف (TDE) في قاعدة البيانات المصدر، لا يتم تشفير البيانات عند ترحيل قاعدة البيانات إلى Oracle Cloud Infrastructure (OCI) أو أثناء استعادة البيانات بعد الكوارث. ستحتاج إلى تشفير البيانات غير المشفرة يدويًا. بمجرد الدخول إلى OCI، يتم تشفير أية بيانات جديدة تلقائيًا.

  1. حدد ما إذا كانت مساحة الجدول مشفرة أم لا.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    في حالة عدم تشفير مساحة الجدول، ستظهر المخرجات مشابهة لما يلي:

    TABLESPACE_NAME 	       		ENC
    ------------------------------ ---
    SYSTEM                          NO
    SYSAUX                          NO
    UNDOTBS1                        NO
    TEMP                            NO
    USERS			      NO
  2. ابحث عن ملفات بيانات قاعدة البيانات المقترنة (.dbf) في نظام الملفات.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    ستبدو المخرجات مشابهة لما يلي:

    TABLESPACE_NAME
    ------------------------------
    FILE_NAME
    
    SYSTEM
    /opt/oracle/oradata/ORCLCDB/system01.dbf
    
    SYSAUX
    /opt/oracle/oradata/ORCLCDB/sysaux01.dbf
    
    UNDOTBS1
    /opt/oracle/oradata/ORCLCDB/undotbs01.dbf
    
    USERS
    /opt/oracle/oradata/ORCLCDB/users01.dbf

تمكين تشفير TDE في قاعدة البيانات المصدر

يتيح لك تشفير البيانات الشفاف (TDE) تشفير البيانات الحساسة المخزنة في الجداول ومساحات الجداول. يتم فك تشفير البيانات المشفرة بشفافية لمستخدم قاعدة بيانات أو تطبيق لديه صلاحية الوصول إلى البيانات.

  1. انتقل إلى دليل $ORACLE_BASE في قاعدة البيانات المصدر.
    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB
  2. تكوين دليل يسمى wallet.
    $ mkdir wallet
  3. قم بتكوين الحافظة، مع كلمة سر آمنة تستخدم مزيجًا من الحروف الأبجدية الرقمية.
    تقوم هذه الخطوة بتكوين الحافظة وفتحها. بعد فتح قاعدة البيانات، تظل الحافظة مفتوحة حتى يتم إغلاق الحافظة بشكل صريح أو إغلاق قاعدة البيانات، وفي ذلك الوقت يتم إغلاق الحافظة تلقائيًا.
    SQL> alter system set encryption key identified by "wallet_password";
  4. أعد فتح حافظة مغلقة بعد إعادة بدء قاعدة البيانات.
    SQL> alter system set wallet open identified by "wallet_password";
  5. تشفير مساحة الجدول.
    تستخدم التعليمة البرمجية التالية تشفير AES-128.
    alter tablespace system encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/system01.dbf','/opt/oracle/oradata/ORCLCDB/system01_enc.dbf');
    
    alter tablespace sysaux encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/sysaux01.dbf','/opt/oracle/oradata/ORCLCDB/sysaux01_enc.dbf');
    
    alter tablespace undotbs1 encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/undotbs01.dbf','/opt/oracle/oradata/ORCLCDB/undotbs01_enc.dbf');
    
    alter tablespace users encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/users01.dbf','/opt/oracle/oradata/ORCLCDB/users01_enc.dbf');
    
  6. تحقق من تشفير مساحة الجدول.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    ستبدو المخرجات مشابهة لما يلي:

    TABLESPACE_NAME 	       ENC
    ------------------------------ ---
    SYSTEM			    YES
    SYSAUX			    YES
    UNDOTBS1                       YES
    TEMP			      NO
    USERS			     YES
  7. تحقق من تشفير ملفات بيانات قاعدة البيانات المقترنة (.dbf) في نظام الملفات.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    ستبدو المخرجات مشابهة لما يلي:

    TABLESPACE_NAME
    ------------------------------
    FILE_NAME
    
    SYSTEM
    /opt/oracle/oradata/ORCLCDB/system01_enc.dbf
    
    SYSAUX
    /opt/oracle/oradata/ORCLCDB/sysaux01_enc.dbf
    
    UNDOTBS1
    /opt/oracle/oradata/ORCLCDB/undotbs01_enc.dbf
    
    USERS
    /opt/oracle/oradata/ORCLCDB/users01_enc.dbf

تكوين حافظة في قاعدة البيانات المصدر

قم بتكوين حافظة، مع كلمة سر آمنة.

  1. قم بتشغيل الأوامر التالية في نقطة التوصيل 1 لقاعدة البيانات الأساسية والمحلية لتكوين الحافظة:
    SQL>
            ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/admin/db1/wallet/' IDENTIFIED BY
            "wallet-password";
    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE
            '/u01/app/oracle/admin/db1/wallet/' IDENTIFIED BY "wallet-password";
    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE
            OPEN IDENTIFIED BY "wallet-password";
    SQL> ADMINISTER KEY MANAGEMENT SET
            KEY USING TAG 'master_key' IDENTIFIED BY "wallet-password” WITH BACKUP USING
            'masterbackup';
    SQL> SELECT KEY_ID,creation_time,activation_time,tag FROM V$ENCRYPTION_KEYS;
  2. عرض معلمات حافظة التشفير.
    SQL> select * from v$encryption_wallet;

    وينبغي أن يكون الناتج مماثلا لما يلي:

    WRL_TYPE
    --------------------
    WRL_PARAMETER
    --------------------------------------------------------------------------------
    STATUS       WALLET_TYPE    WALLET_OR KEYSTORE 
    FULLY_BAC
    ------------------------------ -------------------- --------- --------  ---------
        CON_ID
    ----------
    FILE
    /u01/app/oracle/admin/db1/wallet/
    OPEN       AUTOLOGIN    SINGLE    NONE     NO
  3. تحقق من موقع الحافظة.
    [oracle@exa11db01 wallet]$ ls -lrttotal

    وينبغي أن يكون الناتج مماثلا لما يلي:

    total 20
    -rw------- 1 oracle dba 2987 Feb  2 15:37 ewallet_2021020223374667_masterbackup.p12
    -rw------- 1 oracle dba 5419 Feb  2 15:37 ewallet.p12
    -rw------- 1 oracle dba 5464 Feb  2 15:37 cwallet.sso
  4. نسخ ملفات الحافظة إلى نقطة التوصيل الثانية للطبعة المحلية.
    [oracle@exa11db01 wallet]$ scp *.* exa11db02:/u01/app/oracle/admin/db1/wallet/

    وينبغي أن يكون الناتج مماثلا لما يلي:

    cwallet.sso                                        100% 5464     8.7MB/s   00:00    
    ewallet_2021020223374667_masterbackup.p12          100% 2987    12.1MB/s   00:00    
    ewallet.p12                                         100% 5419    18.2MB/s   00:00 
  5. في نقطة التوصيل 1، احصل على حالة قاعدة البيانات.
    [oracle@exa11db01 db1]$ srvctl status database -d db1

    وينبغي أن يكون الناتج مماثلا لما يلي:

    Instance db11 is running on node exa11db01
    Instance db12 is running on node exa11db02
  6. في نقطة التوصيل 1، قم بإيقاف قاعدة البيانات وبدئها لإتمام إعداد الحافظة.
    [oracle@exa11db01 db1]$ srvctl stop database -d db1
    [oracle@exa11db01db1]$ srvctl start database -d db1
  7. تكوين مساحة الجدول المشفرة.
    تقوم التعليمة البرمجية التالية بإعداد مساحة جدول مشفرة مع تشفير aes128:
    alter tablespace system encryption online using 'aes128' encrypt;
    alter tablespace sysaux encryption online using 'aes128' encrypt;
    alter tablespace undotbs1 encryption online using 'aes128' encrypt;
    alter tablespace undotbs2 encryption online using 'aes128' encrypt;
    alter tablespace users encryption online using 'aes128' encrypt;
  8. تحقق من تشفير اسم مساحة الجدول وdbf.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    عند التشفير، يكون للملفات أرقام تسلسل مختلفة.

تكوين حافظة في قاعدة بيانات النسخ الاحتياطي

قم بتكوين حافظة في كل نقطة توصيل في Oracle Database Exadata Cloud Service للنسخة الاحتياطية. يجب أن تكون الحافظة متماثلة في كل نقطة توصيل.

  1. في قاعدة البيانات الاحتياطية في OCI، تحقق من موقع ملف الحافظة.
    SQL> select * from V$ENCRYPTION_WALLET;
  2. نسخ ملفات الحافظة من قاعدة البيانات المصدر المحلية إلى قاعدة البيانات الاحتياطية في السحابة.
    [oracle@exa11db01 ~]$ scp -i FedExKey.ssh /u01/app/oracle/admin/db1/wallet/*.* 
    opc@10.255.195.131:/tmp/
  3. تحقق من ظهور الحافظة في الدليل في Oracle Database Exadata Cloud Service.
    [oracle@exacs82-vm3sv1 admin]$ cd /var/opt/oracle/dbaas_acfs/DB1/wallet_root/tde
    [oracle@exacs82-vm3sv1 tde]$ ls -lrt

    وينبغي أن يكون الناتج مماثلا لما يلي:

    total 72
    drwxr-xr-x 2 oracle oinstall 20480 Jan 23 13:50 Backup
    -rwxr-xr-x 1 oracle oinstall  5419 Feb  3 13:38 ewallet.p12
    -rwxr-xr-x 1 oracle oinstall  2987 Feb  3 13:38 ewallet_2021020223374667_masterbackup.p12
    -rw------- 1 oracle oinstall  5464 Feb  3 13:39 cwallet.sso
  4. نسخ ملفات الحافظة إلى نقطة التوصيل الثانية.