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
ataubastion
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 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 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.
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
Pastikan Anda telah mengonfigurasi kunci enkripsi master TDE. Anda dapat memeriksanya di bagian Membuat kunci master awal di bagian prasyarat.
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 fileinit.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
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).
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 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 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 algoritmaAES128
, atau algoritma yang ditentukan oleh parameter dinamisTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
, jika Anda menghapus klausaENCRYPTION
dariCREATE TABLESPACE
untuk skenario cloud dan lokal. Namun, jika Anda memberikan klausaENCRYPTION
, algoritma yang Anda tentukan akan lebih diprioritaskan daripadaAES128
.DDL
mengenkripsi ruang tabel menggunakan setelan yang ditentukan dari klausaENCRYPTION
dariCREATE 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
Siapkan Oracle Wallet.
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 perintahCONFIGURE ENCRYPTION
yang menggunakan enkripsi transparan secara default.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.