Keamanan data sangat penting pada saat GDPR, PCI DSS, atau HIPPA. Untuk mematuhi peraturan, seseorang harus sangat berhati-hati tentang bagaimana data harus disimpan dan dilindungi. Data, biasanya, bisa diam atau dalam perjalanan. Data in transit adalah data yang ditransfer dari atau ke database. Hasil kueri yang dikirim ke klien atau aplikasi atau data yang direplikasi antar node cluster adalah contoh kasus ketika data dalam perjalanan. Kami cenderung mengamankan data dalam keadaan tersebut menggunakan SSL atau TLS - koneksi terenkripsi antara node database atau database dan klien.
Di sisi lain spektrum, kami memiliki data dalam keadaan diam - kami akan mengatakan bahwa sebagian besar data, pada saat tertentu, dalam keadaan diam. Kita berbicara di sini tentang data yang disimpan pada disk di tablespace, struktur data yang berbeda (buffer gcache, redo log) dan log (log biner dan relai). Mari kita lihat pertimbangan seputar subjek ini di MariaDB.
Apa yang harus dienkripsi di MariaDB?
Idealnya, Anda perlu mengenkripsi semuanya. Database menyimpan data di tempat yang berbeda dan cara yang berbeda, seperti yang disebutkan di atas. Kumpulan data terbesar disimpan di tablespace - ini adalah lokasi "final" tempat data disimpan. Jelas, adalah mungkin untuk mengenkripsi tablespace - jika tidak, seluruh fitur akan sia-sia. MariaDB dapat menyimpan data dalam satu tablespace bersama, beberapa di antaranya atau setiap tabel dapat disimpan dalam tablespace terpisah - semua skenario tersebut didukung. Pengguna memiliki beberapa tingkat fleksibilitas saat memilih apa yang akan dienkripsi. Anda dapat mengenkripsi semuanya, tabel individual atau semuanya kecuali beberapa tabel individual.
MariaDB InnoDB mengulang log
Struktur lain yang menyimpan data adalah redo log InnoDB. Redo log InnoDB adalah tempat di mana data ditulis setelah baris tertentu ditingkatkan. Data dari redo log pada akhirnya akan ditransfer ke tablespace tetapi untuk sementara redo log InnoDB berisi semua modifikasi yang terjadi baru-baru ini. Seperti yang dapat Anda bayangkan, data ini juga penting dan harus dilindungi - MariaDB memungkinkan Anda mengenkripsi redo log InnoDB.
Log Biner MariaDB
Log biner (serta log relai) menyimpan informasi tentang kueri yang dieksekusi yang mengubah data. Karena informasi yang disertakan memungkinkan kami untuk merekonstruksi status baris saat ini yang telah mengalami modifikasi, ini adalah bentuk data lain yang harus dilindungi dan dienkripsi. Log biner dan relai dapat dienkripsi di MariaDB.
Cache Galera
Galera cache (gcache) adalah buffer pada disk di Galera Cluster yang menyimpan informasi tentang modifikasi yang dijalankan. Ini digunakan dalam kasus kegagalan node atau masalah jaringan sementara untuk memungkinkan node yang bergabung dengan cluster untuk mengejar hanya menggunakan data yang hilang, menghindari mentransfer seluruh dataset. Mirip dengan log biner atau log redo, gcache berisi daftar modifikasi dan, dengan demikian, dapat digunakan untuk memulihkan dan mengumpulkan potongan data. Dalam versi komunitas MariaDB Galera Cluster gcache tidak dapat dienkripsi. Opsi tersebut tersedia di MariaDB Galera Cluster versi Perusahaan.
Apa yang tidak dapat dienkripsi di MariaDB?
Masih ada beberapa tempat di mana potongan data mungkin muncul yang tidak dapat dienkripsi, setidaknya sampai sekarang, di MariaDB. Pertama, log kesalahan mungkin berisi contoh kueri yang berpotensi mengekspos beberapa data. Tidak mungkin untuk mengenkripsi log kesalahan, tetapi dimungkinkan untuk mengarahkan log kesalahan ke syslog dan menerapkan beberapa mekanisme perlindungan di luar MariaDB.
Log dari Plugin Audit
Audit Plugin juga menghasilkan log - log ini mungkin berisi informasi sensitif, termasuk kueri persis yang telah dijalankan di database. Tidak mungkin untuk mengenkripsi log ini, tetapi dapat diarahkan ke syslog dan mengenkripsi di sana.
Log Kueri
Log kueri umum dan lambat - log tersebut akan berisi kueri (atau setidaknya sampelnya) yang dijalankan oleh MariaDB. Sampai sekarang, tidak mungkin untuk mengenkripsi log tersebut.
Kolam buffer InnoDB
Memori - MariaDB melakukan enkripsi hanya untuk halaman yang disimpan di disk. Semua data yang disimpan di kumpulan buffer InnoDB tidak akan dienkripsi. Kumpulan buffer InnoDB dimaksudkan untuk menjaga baris yang baru saja dimodifikasi atau diakses oleh kueri SELECT - baris tersebut jelas akan berisi sampel data. Sampai sekarang, tidak ada opsi untuk mengenkripsi kumpulan buffer InnoDB di MariaDB. Harap diingat bahwa seseorang akan memerlukan akses ke sistem untuk membaca memori langsung. Ini bukan tugas yang sepele, meskipun bukan tidak mungkin untuk dicapai juga.
Harap diingat bahwa kami telah membahas opsi enkripsi yang disertakan dalam MariaDB. Selalu ada kemungkinan untuk menggunakan lapisan enkripsi lain. Misalnya, mengenkripsi seluruh penyimpanan akan membuat log tidak dapat dibaca oleh siapa pun yang memiliki akses fisik ke disk. Di sisi lain, itu tidak akan melindungi data dari seseorang yang dapat masuk ke sistem.
Kompatibilitas Dengan Alat Eksternal
Hal lain yang perlu dipertimbangkan adalah kompatibilitas. Jika Anda memutuskan untuk mengenkripsi MariaDB Anda, Anda harus ingat bahwa ini dapat memengaruhi cara Anda beroperasi. Tidak mungkin menggunakan alat eksternal seperti XtraBackup atau mysqlbinlog untuk memproses data dan membuat cadangan atau untuk menangani log biner. Anda harus tetap menggunakan alat yang dibuat oleh MariaDB (seperti Mariabackup), yang ditulis dengan mempertimbangkan mekanisme enkripsi. Mereka dapat menangani data saat enkripsi diam diterapkan di MariaDB.
Merencanakan Proses Enkripsi
Bagian ini tidak akan membahas proses secara mendetail, tetapi membahas apa yang harus Anda pertimbangkan saat merencanakan enkripsi, seperti sumber daya dan waktu. Utilisasi CPU akan meningkat serta aktivitas I/O selama proses berlangsung. Dari sudut pandang pengguna, semuanya bermuara pada pengaturan konfigurasi dan kemudian menjalankan perintah ALTER untuk membangun kembali dan mengenkripsi tabel yang ada. Untuk database besar, ini saja bisa menjadi tantangan signifikan yang membutuhkan perencanaan. Perubahan skema dapat menjadi beban yang serius, dan disarankan untuk menggunakan alat seperti pt-online-schema-change untuk mengurangi dampaknya pada sistem produksi dan mendapatkan kontrol yang lebih baik atas proses.
Pemikiran Terakhir
Seperti yang kami sebutkan, data sangat penting untuk semua organisasi, dan sangat penting untuk memastikan data aman dan terlindungi. Enkripsi data diam adalah salah satu elemen penting dalam keseluruhan gambar. Kami akan senang mendengar dari Anda tentang pengalaman Anda dengan enkripsi data saat istirahat di MariaDB. Jika Anda ingin membagikan pemikiran Anda, silakan tinggalkan komentar di bawah.