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
ataubastion
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 iniENCRYPTION_WALLET_LOCATION
atauWALLET_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.
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
Pastikan Anda telah mengonfigurasi kunci enkripsi master TDE. Anda dapat memeriksanya di bagian Buat kunci master awal di bagian prasyarat.
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 fileinit.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
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).
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 parameterSALT
atauNO SALT
yang ditentukan dengan klausaENCRYPT
.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 algoritmaAES128
, atau algoritma yang ditentukan oleh parameter dinamisTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
, jika Anda menghilangkan klausaENCRYPTION
dariCREATE TABLESPACE
untuk skenario cloud dan lokal. Namun, jika Anda memberikan klausaENCRYPTION
, algoritma yang Anda tentukan akan lebih diutamakan daripadaAES128
.DDL
mengenkripsi tablespace menggunakan setelan yang ditentukan dalam klausaENCRYPTION
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
Siapkan Oracle Wallet.
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 perintahCONFIGURE ENCRYPTION
yang menggunakan enkripsi transparan secara default.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.