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

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

Ringkasan

Oracle Advanced Security TDE secara transparan mengenkripsi data dalam penyimpanan di Database Oracle dan mencegah akses tanpa izin 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 memperoleh data terenkripsi dan kunci yang cocok, penyerang 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, disimpan di luar database yang dapat berupa dompet keystore software Oracle atau keystore modul keamanan hardware (HSM), dan dikelola langsung oleh administrator keamanan database dalam keystore.

Ada dua opsi keystore yang tersedia bagi TDE untuk mendukung beragam lingkungan pelanggan. Secara default, TDE menyimpan kunci masternya di Oracle Wallet, file penyimpanan kunci berbasis standar PKCS#12. Dompet memberikan solusi mudah untuk sejumlah kecil {i>database<i} terenkripsi.

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

Anda dapat melakukan operasi enkripsi pada tingkat kolom dan tingkat Tablespace. Anda juga dapat menerapkan TDE pada cadangan RMAN.

Aktifkan 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 di 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 disetel dengan benar.

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

    $ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
    
  • Gunakan Utilitas orapki untuk membuat dompet dan mengaktifkan login otomatis sehingga kita tidak perlu mengaktifkan wallet 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 perlu menetapkan jalur alternatif dalam file sqlnet.ora. Anda perlu 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 wallet dalam 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;
    

    Periksa apakah status dompet 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 pada tingkat Tablespace

Anda dapat menjalankan 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 versi 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 Buat kunci master awal di bagian prasyarat.

  3. Membuat Tablespace Terenkripsi

    Untuk memeriksa jalur datafile, 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);
    

    ENKRIPSI MENGGUNAKAN ENCRYPT 'AES256' menentukan panjang kunci enkripsi dan algoritma 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 guna menentukan algoritma enkripsi default untuk operasi pembuatan tablespace di masa 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 di file init.ora.

    Untuk memeriksa apakah enkripsi tablespace sudah dikonfigurasi atau tidak, Anda dapat memeriksa kolom ENCRYPTED dari tampilan DBA_TABLESPACES dan USER_TABLESPACES yang menunjukkan apakah tablespace 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. Uji 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 buffer untuk memastikan data ditulis ke datafile.

      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 pada tingkat kolom tabel

Enkripsi kolom TDE dapat digunakan untuk mengenkripsi data kolom tertentu dalam tabel database yang rahasia, seperti nomor kartu kredit, nomor jaminan sosial (SSN), dan nomor rekening 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 merupakan cara untuk memperkuat keamanan data terenkripsi. Ini adalah string acak yang ditambahkan ke data sebelum dienkripsi, menyebabkan pengulangan teks secara jelas terlihat berbeda saat dienkripsi. SALT menghapus 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 dalam database:

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

    Untuk mengenkripsi kolom yang ada di dalam tabel dalam 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 dalam database:

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

    Untuk menghapus SALT dari kolom terenkripsi dalam tabel dalam {i>database<i},

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

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

    SQL> ALTER TABLE employee rekey;
    Table altered.
    

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

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

Mengenkripsi tablespace mendatang

Anda dapat mengonfigurasi Database Oracle 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 akan otomatis mengenkripsi tablespace menggunakan algoritma AES128, atau algoritma yang ditentukan oleh parameter dinamis TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM, jika Anda menghilangkan klausa ENCRYPTION dari CREATE TABLESPACE untuk skenario cloud dan lokal. Namun, jika Anda memberikan klausa ENCRYPTION, algoritma yang Anda tentukan akan lebih diutamakan daripada AES128.

  • DDL mengenkripsi tablespace menggunakan setelan yang ditentukan dalam klausa ENCRYPTION CREATE TABLESPACE, untuk lingkungan cloud dan lokal.

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

Enkripsi Tablespace TDE atau Enkripsi Kolom TDE?

PILIH ENKRIPSI KOLOM TDE JIKA PILIH ENKRIPSI TDE TABLESPACE JIKA
Lokasi informasi sensitif diketahui Lokasi informasi sensitif tidak diketahui
Kurang dari 5% dari semua kolom aplikasi merupakan 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
Kandidat enkripsi bukan kolom kunci asing Kandidat enkripsi adalah kolom kunci asing
Indeks pada kandidat enkripsi adalah indeks pohon B normal Indeks kandidat enkripsi adalah indeks fungsional
Aplikasi tidak melakukan pemindaian rentang pada data terenkripsi Penelusuran aplikasi untuk rentang data sensitif
Peningkatan penyimpanan sebesar 1 hingga 52 byte per nilai terenkripsi Tidak ada peningkatan penyimpanan yang dapat diterima
Dampak terhadap performa bergantung pada persentase kolom yang dienkripsi; seberapa sering nilai yang dienkripsi dipilih atau diperbarui, ukuran data yang dienkripsi, dan variabel lainnya Dampak performa berkelanjutan 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 secara transparan mengenkripsi data yang ditulis ke kumpulan cadangan dan mendekripsi set cadangan tersebut saat diperlukan dalam operasi RESTORE. RMAN menawarkan tiga mode enkripsi: transparent, password protected, dan mode ganda.

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

  • Untuk menggunakan mode sandi, sandi harus disediakan oleh DBA yang akan digunakan dalam enkripsi. Anda dapat menyetel mode sandi paling lambat SET ENCRYPTION ON IDENTIFIED BY password only.

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

Mengonfigurasi Enkripsi Cadangan RMAN

  1. Siapkan Oracle Wallet.

  2. Konfigurasikan RMAN Untuk menggunakan enkripsi.

    Mengonfigurasi 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
    

    Sambungkan ke RMAN.

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

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

  3. Mengonfigurasi algoritma enkripsi cadangan default.

    Untuk membuat daftar algoritma enkripsi RMAN yang dapat diperoleh, 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
    

    Ambil 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, cadangan terenkripsi akan otomatis didekripsi selama pemulihan dan pemulihan. Setiap set cadangan mendapatkan kunci terpisah. Kunci disimpan dalam bentuk terenkripsi di ruang cadangan. Cadangan didekripsi dengan kunci yang diperoleh dengan sandi yang disediakan pengguna atau keystore software Oracle.

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

  • Jika Anda menggunakan keystore login otomatis, jangan mencadangkannya bersama dengan data cadangan terenkripsi Anda, karena pengguna dapat membaca cadangan terenkripsi jika mereka mendapatkan cadangan dan keystore autologin. Anda dapat mencadangkan keystore Oracle 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 kumpulan cadangan didekripsi selama operasi pemulihan, kolom terenkripsi akan ditampilkan ke bentuk terenkripsi aslinya.

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