Men-deploy dan mengelola Transparent Data Encryption (TDE) Oracle di Solusi Bare Metal

Halaman ini menjelaskan cara men-deploy Oracle Advanced Security Transparent Data Encryption (TDE) dan mengelola Oracle Wallet dan kunci di Solusi Bare Metal.

Ringkasan

Oracle Advanced Security TDE mengenkripsi data dalam penyimpanan di Oracle Database secara transparan dan mencegah akses tidak sah ke file database. TDE dapat mengenkripsi seluruh cadangan database (RMAN) dan ekspor Data Pump serta ruang tabel dan kolom tertentu.

Cara kerja Enkripsi Data Transparan

TDE membuat dan mengelola beberapa kunci yang digunakan untuk enkripsi. Kunci ini harus dilindungi karena jika penyerang mendapatkan data terenkripsi dan kunci yang cocok, mereka dapat dengan mudah mendekripsi untuk melihat data yang jelas.

TDE memiliki arsitektur kunci dua tingkat, dengan kunci enkripsi data yang digabungkan oleh satu kunci master database. Kunci master dipisahkan dari data terenkripsi, yang disimpan di luar database yang dapat berupa dompet keystore software Oracle atau keystore modul keamanan hardware (HSM), dan dikelola langsung oleh administrator keamanan database di keystore.

Ada dua opsi keystore yang tersedia untuk TDE guna mendukung berbagai lingkungan pelanggan. Secara default, TDE menyimpan kunci masternya di Oracle Wallet, file penyimpanan kunci berbasis standar PKCS#12. Wallet memberikan solusi mudah untuk sejumlah kecil database terenkripsi.

Aktifkan TDE untuk database Oracle 11g di server Solusi Bare Metal:

Anda dapat melakukan operasi enkripsi di tingkat kolom dan di tingkat ruang tabel. Anda juga dapat menerapkan TDE pada pencadangan RMAN.

Mengaktifkan Prasyarat TDE

Anda perlu menyiapkan database dengan menetapkan keystore (Oracle Wallet untuk 11g) dan membuat kunci master awal.

Mengonfigurasi Oracle Wallet di server Solusi Bare Metal

  • Hubungkan ke salah satu server Solusi Bare Metal dari mesin jump host atau bastion dalam project Anda.

        $ ssh customeradmin@192.168.1.10
        $ su - oracle
    
  • Tetapkan variabel lingkungan.

    [oracle@svr002 ~]$ . oraenv
     ORACLE_SID = [tdedb] ? DB11G
     The Oracle base has been changed from   /u01/app/oracle to /apps/oracle/oracle_base
    
    [oracle@svr002 ~]$ export ORACLE_SID=DB11G1
    
  • Hubungkan sebagai sysdba.

    [oracle@svr002 ~]$ sqlplus / as sysdba
    
  • Pastikan semua variabel lingkungan berikut ditetapkan dengan benar.

    $ echo $ORACLE_HOME
    $ echo $ORACLE_BASE
    $ echo $DB_UNIQUE_NAME
    
  • Buat direktori baru untuk file dompet.

    $ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
    
  • Gunakan orapki Utility untuk membuat dompet dan mengaktifkan login otomatis sehingga kita tidak perlu mengaktifkan dompet saat memulai ulang.

    $ orapki wallet create -wallet $ORACLE_BASE/admin/DB11G/wallet -auto_login -pwd Oracle2020
    
  • Oracle menggunakan jalur default untuk dompet.

    $ ORACLE_BASE/admin/$DB_UNIQUE_NAME/wallet
    $ ORACLE_HOME/admin/$DB_UNIQUE_NAME/wallet
    

    Jika tidak menggunakan jalur default, Anda harus menetapkan jalur alternatif dalam file sqlnet.ora. Anda harus menetapkan salah satu parameter ini ENCRYPTION_WALLET_LOCATION atau WALLET_LOCATION.

    Untuk menemukan jalur dompet:

    SQL> COL wrl_type FORMAT a12
         COL wrl_parameter FORMAT a35
         COL status FORMAT a15
    
    SQL> select * from v$encryption_wallet;
    
    WRL_TYPE     WRL_PARAMETER           STATUS
    --------     -------------           -------
    file        /apps/oracle/oracle_base OPEN_NO_MASTER_KEY
                /admin/DB11G/wallet
    
  • Untuk menetapkan jalur dompet di file sqlnet.ora:

    $ vi sqlnet.ora
    
    ENCRYPTION_WALLET_LOCATION=
     (SOURCE=(METHOD=FILE)(METHOD_DATA=
     (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet))
    
    Or
    
    WALLET_LOCATION =
     (SOURCE=(METHOD=FILE)(METHOD_DATA=
    (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet))
    
  • Tambahkan nama pengguna dan sandi ke dompet. Untuk menambahkan nama pengguna dan sandi ke dompet yang ada, gunakan perintah mkstore dengan opsi -createCredential sebagai berikut:

    mkstore -wrl <wallet_location> -createCredential <TNS_alias> <username> <password>
    
    $ mkstore -wrl apps/oracle/oracle_base/admin/DB11G/wallet -createCredential DB11G testuser testtest123
    

    Anda dapat login dengan testuser@SID tanpa memasukkan sandi.

  • Buat kunci master awal.

    SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY Oracle2020;
    

    Pastikan status wallet adalah OPEN.

    SQL> COL wrl_type FORMAT a12
         COL wrl_parameter FORMAT a35
         COL status FORMAT a15
    
     SQL> select * from v$encryption_wallet;
    
          WRL_TYPE  WRL_PARAMETER             STATUS
          --------  -------------             ------
          file      /apps/oracle/oracle_base/ OPEN
              admin/DB11G/wallet
    
  • Untuk membuka dan menutup dompet:

    SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Password";
    SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
    

Mengaktifkan TDE di tingkat Tablespace

Anda dapat melakukan operasi enkripsi menggunakan pernyataan CREATE TABLESPACE SQL.

Mengenkripsi Tablespace Baru

Saat membuat ruang tabel baru, Anda dapat mengonfigurasi setelan enkripsinya selama proses pembuatan.

  1. Pastikan Parameter Inisialisasi KOMPATIBEL untuk Enkripsi ruang Tabel adalah 11.2.0.0 atau yang lebih tinggi

    SQL> SHOW PARAMETER COMPATIBLE
    
         NAME        TYPE     VALUE
         ----        ----     ------
         compatible  string   11.2.0.4.0
    
  2. Pastikan Anda telah mengonfigurasi kunci enkripsi master TDE. Anda dapat memeriksanya di bagian Membuat kunci master awal di bagian prasyarat.

  3. Membuat Membuat Tablespace Terenkripsi

    Untuk memeriksa jalur file data, gunakan:

    SQL> select * from dba_data_files ;
    

    Jalankan pernyataan CREATE TABLESPACE, menggunakan klausa enkripsinya

      SQL> create TABLESPACE encrypted_ts
           DATAFILE '+DATA/db11g/datafile/encrypted_ts01.dbf' SIZE 5 M
           AUTOEXTEND on NEXT 64K
           ENCRYPTION USING 'AES256'
           DEFAULT STORAGE(ENCRYPT);
    

    ENCRYPTION USING 'AES256' ENCRYPT menentukan algoritma enkripsi dan panjang kunci untuk enkripsi. Klausa ENCRYPT mengenkripsi tablespace.

    Jika klausa USING dihilangkan, algoritma enkripsi akan ditetapkan secara default ke 'AES128'. Selain itu, klausa penyimpanan default ENCRYPT harus ditentukan. Selain itu, Anda dapat menetapkan parameter dinamis TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM untuk menentukan algoritma enkripsi default untuk operasi pembuatan tablespace mendatang menggunakan pernyataan ALTER SYSTEM:

      sql> ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value;
    

    Nilai dapat berupa salah satu algoritma enkripsi berikut: AES128, AES192, AES256, 3DES168, ARIA128, ARIA192, ARIA256, SEED128, dan GOST256. Nilai defaultnya adalah AES128.

    Atau, Anda dapat menetapkan TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM sebagai parameter inisialisasi dalam file init.ora.

    Untuk memeriksa apakah enkripsi ruang tabel dikonfigurasi atau tidak, Anda dapat memeriksa kolom ENCRYPTED dari tampilan DBA_TABLESPACES dan USER_TABLESPACES yang menunjukkan apakah ruang tabel dienkripsi atau tidak.

    SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces;
    
          TABLESPACE_NAME                ENC
          -----------------------------------
          SYSTEM                         NO
          SYSAUX                         NO
          UNDOTBS1                       NO
          TEMP                           NO
          USERS                          NO
          UNDOTBS2                       NO
          ENCRYPTED_TS                   YES
    
  4. Menguji Enkripsi

    SQL> CREATE TABLE test (id NUMBER(10),data VARCHAR2(50))TABLESPACE encrypted_ts;
    Table created.
    
    SQL> CREATE INDEX test_idx ON test(data) TABLESPACE encrypted_ts;
    Index created.
    
    SQL> INSERT INTO test  (id, data) VALUES (1, 'Test  Encryptio');
    1 row created.
    
    SQL> COMMIT;
    Commit complete
    

    Hapus cache buffering untuk memastikan data ditulis ke file data.

      SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
    

    Baca data di dalam file data menggunakan perintah string.

      export ORACLE_SID=+ASM
      asmcmd
      ASMCMD> strings +DATA/db11g/datafile/encrypted_ts01.dbf
    

    Data ditampilkan dalam format biner.

Mengaktifkan TDE di tingkat kolom tabel

Enkripsi kolom TDE dapat digunakan untuk mengenkripsi data kolom tertentu di tabel database yang bersifat rahasia, seperti nomor kartu kredit, nomor jaminan sosial (SSN), dan nomor akun pribadi (PAN).

  1. Membuat tabel dengan kolom terenkripsi

    SQL> CREATE TABLE employee (
         first_name VARCHAR2(128),
         last_name VARCHAR2(128),
         empID NUMBER ENCRYPT NO SALT,
         salary NUMBER(6) ENCRYPT USING '3DES168'
         );
    Table created.
    

    SALT adalah cara untuk memperkuat keamanan data terenkripsi. Ini adalah string acak yang ditambahkan ke data sebelum dienkripsi, sehingga menyebabkan pengulangan teks yang jelas terlihat berbeda saat dienkripsi. SALT menghapus salah satu metode yang digunakan penyerang untuk mencuri data, yaitu, mencocokkan pola teks terenkripsi. Anda dapat menggunakan parameter SALT atau NO SALT yang ditentukan dengan klausa ENCRYPT.

    Anda dapat menggunakan perintah ALTER TABLE untuk mengenkripsi kolom dalam tabel yang ada dengan menambahkan kolom terenkripsi atau dengan mengenkripsi kolom yang sudah ada.

    Untuk menambahkan kolom terenkripsi ke tabel yang ada di database:

    SQL> ALTER TABLE employee ADD (credit_card_number VARCHAR2(16) ENCRYPT NO SALT);
    Table altered.
    

    Untuk mengenkripsi kolom yang ada dalam tabel di database:

    SQL> ALTER TABLE employee MODIFY (last_name encrypt);
    Table altered.
    

    Untuk menambahkan SALT ke kolom terenkripsi dalam tabel di database:

    SQL> ALTER TABLE employee MODIFY (last_name encrypt salt);
    Table altered.
    

    Untuk mendekripsi kolom yang ada dalam tabel di database:

    SQL> ALTER TABLE employee MODIFY (last_name decrypt);
    Table altered.
    

    Untuk menghapus SALT dari kolom terenkripsi dalam tabel di database,

    SQL> ALTER TABLE employee MODIFY (last_name encrypt no salt);
    Table altered.
    

    Untuk mengubah kunci terenkripsi untuk tabel yang berisi satu atau beberapa kolom terenkripsi:

    SQL> ALTER TABLE employee rekey;
    Table altered.
    

    Untuk mengubah algoritma enkripsi untuk tabel yang berisi satu atau beberapa kolom terenkripsi

    SQL> ALTER TABLE employee rekey USING '3DES168';
    Table altered.
    

Mengenkripsi tablespace mendatang

Anda dapat mengonfigurasi Oracle Database untuk otomatis mengenkripsi tablespace mendatang yang akan Anda buat menggunakan parameter inisialisasi database ENCRYPT_NEW_TABLESPACES.

Gunakan perintah ALTER SYSTEM berikut:

SQL> ALTER SYSTEM SET ENCRYPT_NEW_TABLESPACES=value;

Nilai dapat berupa:

  • ALWAYS otomatis mengenkripsi ruang tabel menggunakan algoritma AES128, atau algoritma yang ditentukan oleh parameter dinamis TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM, jika Anda menghapus klausa ENCRYPTION dari CREATE TABLESPACE untuk skenario cloud dan lokal. Namun, jika Anda memberikan klausa ENCRYPTION, algoritma yang Anda tentukan akan lebih diprioritaskan daripada AES128.

  • DDL mengenkripsi ruang tabel menggunakan setelan yang ditentukan dari klausa ENCRYPTION dari CREATE TABLESPACE, untuk lingkungan cloud dan lokal.

  • CLOUD_ONLY (tidak berlaku dalam kasus penggunaan kita) hanya berlaku untuk lingkungan Oracle Cloud. CLOUD_ONLY adalah defaultnya.

Enkripsi Tablespace TDE atau Enkripsi Kolom TDE?

CHOOSE TDE COLUMN ENCRYPTION IF CHOOSE TDE TABLESPACE ENCRYPTION IF
Lokasi informasi sensitif diketahui Lokasi informasi sensitif tidak diketahui
Kurang dari 5% dari semua kolom aplikasi adalah kandidat enkripsi Sebagian besar data aplikasi dianggap sensitif, atau beberapa mandat keamanan dan privasi nasional dan internasional berlaku untuk industri Anda
Jenis dan panjang data didukung oleh enkripsi kolom TDE Tidak semua jenis data yang menyimpan informasi sensitif didukung oleh enkripsi kolom TDE
Calon enkripsi bukan kolom kunci asing Calon enkripsi adalah kolom kunci asing
Indeks atas kandidat enkripsi adalah indeks B-tree normal Indeks kandidat enkripsi adalah indeks fungsional
Aplikasi tidak melakukan pemindaian rentang pada data terenkripsi Aplikasi menelusuri rentang data sensitif
Peningkatan penyimpanan sebesar 1 hingga 52 byte per nilai terenkripsi Peningkatan penyimpanan tidak dapat diterima
Dampak performa bergantung pada persentase kolom terenkripsi; seberapa sering nilai terenkripsi dipilih atau diperbarui, ukuran data terenkripsi, dan variabel lainnya Dampak performa konstan di bawah 10%
Jika Anda ingin mendapatkan manfaat dari akselerasi kripto hardware
Jika Anda ingin menikmati manfaat enkripsi dan kompresi secara bersamaan.

Enkripsi cadangan RMAN

Set cadangan dienkripsi menggunakan algoritma yang tercantum dalam V$RMAN_ENCRYPTION_ALGORITHMS. RMAN dapat mengenkripsi data yang ditulis ke set cadangan secara transparan dan mendekripsi set cadangan tersebut saat diperlukan dalam operasi RESTORE. RMAN menawarkan tiga mode enkripsi: transparan, dilindungi sandi, dan mode ganda.

  • Untuk menggunakan enkripsi mode transparan (default), Oracle Encryption Wallet harus digunakan.

  • Untuk menggunakan mode sandi, sandi harus diberikan oleh DBA yang akan digunakan dalam enkripsi. Anda dapat menetapkan mode sandi dengan SET ENCRYPTION ON IDENTIFIED BY password only.

  • Dengan menggunakan enkripsi mode ganda, Anda dapat menggunakan Oracle Wallet atau sandi untuk dekripsi. Anda dapat menetapkan mode ganda dengan SET ENCRYPTION ON IDENTIFIED BY password.

Mengonfigurasi Enkripsi Cadangan RMAN

  1. Siapkan Oracle Wallet.

  2. Mengonfigurasi RMAN untuk menggunakan enkripsi.

    Konfigurasikan mode Enkripsi RMAN. Contoh ini menggunakan mode ganda. Untuk melakukannya, hubungkan ke database target RMAN dan jalankan perintah SET ENCRYPTION ON IDENTIFIED BY password.

    [oracle@svr002 ~]$ . oraenv
      ORACLE_SID = [tdedb] ? DB11G
      The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base
    
      export ORACLE_SID=DB11G1
    

    Hubungkan ke RMAN.

      rman target /
      RMAN> SET ENCRYPTION ON IDENTIFIED BY <password>;
      executing command: SET encryption
    

    SET ENCRYPTION mengganti setelan enkripsi yang ditentukan oleh perintah CONFIGURE ENCRYPTION yang menggunakan enkripsi transparan secara default.

  3. Konfigurasikan algoritma enkripsi cadangan default.

    Untuk mendapatkan daftar algoritma enkripsi RMAN, buat kueri tampilan v$rman_encryption_algorithms:

     SQL> COL algorithm_name FORMAT a15
          COL algorithm_description FORMAT a15
          COL is_default FORMAT a15
     SQL> select algorithm_id, algorithm_name, algorithm_description, is_default from v$rman_encryption_algorithms;
    
          ALGORITHM_ID ALGORITHM_NAME  ALGORITHM_DESCR  IS_DEFAULT
          -----------  --------------  ---------------  ----------
          1             AES128          AES 128-bit key  YES
          2             AES192          AES 192-bit key  NO
          3             AES256          AES 256-bit key  NO
    

    Untuk mengubah algoritma default:

     RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256';
           using target database control file instead of recovery catalog
           new RMAN configuration parameters:
              CONFIGURE ENCRYPTION ALGORITHM 'AES256';
           new RMAN configuration parameters are successfully stored
    

    Buat cadangan terenkripsi menggunakan perintah pencadangan RMAN normal. Misalnya:

     RMAN> backup tablespace users;
    

    Untuk memulihkan cadangan menggunakan sandi enkripsi:

    RMAN> set decryption identified by <password>;
    RMAN> restore tablespace users;
    

Catatan penting

  • Jika kunci dekripsi yang diperlukan tersedia, pencadangan terenkripsi akan didekripsi secara otomatis selama pemulihan dan pemulihan. Setiap set cadangan mendapatkan kunci terpisah. Kunci disimpan dalam bentuk terenkripsi di ruang cadangan. Pencadangan didekripsi dengan kunci yang diperoleh dari sandi yang diberikan pengguna atau keystore software Oracle.

  • Enkripsi pencadangan transparan mendukung keystore software login otomatis dan keystore software berbasis sandi. Saat Anda menggunakan keystore software login otomatis, operasi pencadangan terenkripsi dapat dilakukan kapan saja, karena keystore login otomatis selalu terbuka. Saat Anda menggunakan keystore software berbasis sandi, keystore harus dibuka sebelum Anda dapat melakukan enkripsi cadangan.

  • Jika Anda menggunakan keystore login otomatis, jangan mencadangkannya bersama dengan data cadangan terenkripsi, karena pengguna dapat membaca cadangan terenkripsi jika mereka mendapatkan cadangan dan keystore login otomatis. Anda dapat mencadangkan keystore Oracle dengan aman karena bentuk keystore tersebut tidak dapat digunakan tanpa sandi keystore.

  • Jika beberapa kolom dalam database dienkripsi dengan enkripsi kolom Transparent Data Encryption (TDE), dan jika kolom tersebut dicadangkan menggunakan enkripsi cadangan, kolom tersebut akan dienkripsi untuk kedua kalinya selama pencadangan. Saat set cadangan didekripsi selama operasi pemulihan, kolom terenkripsi akan dikembalikan ke bentuk terenkripsi aslinya.

  • Jika keystore Oracle hilang, Anda tidak dapat memulihkan cadangan yang dienkripsi secara transparan. Selain itu, jika Anda lupa atau kehilangan sandi yang digunakan untuk mengenkripsi cadangan terenkripsi sandi, Anda tidak dapat memulihkan cadangan.