Keamanan Database PostgreSQL: Yang Perlu Anda Ketahui

Keamanan Database PostgreSQL: Yang Perlu Anda Ketahui – Ketika kita berbicara tentang keamanan basis data, itu mencakup modul yang berbeda dari area yang berbeda. Ini adalah topik yang sangat luas karena, dengan database, kita perlu mengamankan seluruh ekosistem, bukan hanya node database. Gambar di bawah menunjukkan rincian utama dari “bagian” yang perlu diamankan.

Keamanan Database PostgreSQL: Yang Perlu Anda Ketahui

pgsql – Jelas terlihat bahwa database itu sendiri hanyalah bagian 1/6 dari itu. Anda perlu mengamankan (1) Jaringan (2) Node Jaringan (3) Data (4) Basis Data (5) Pengguna dan (6) Aplikasi. Basis data yang aman berarti aman dengan segala cara.

Keamanan Basis Data PostgreSQL

Basis data biasanya dibagi menjadi Otentikasi, Otorisasi, dan Akuntansi (AAA). Sistem basis data perlu mengotentikasi pengguna, kedua, mengotorisasi apa yang dapat dilakukan pengguna dengan basis data, dan ketiga, menjelaskan apa yang dilakukan pengguna dengan basis data. PostgreSQL dianggap sebagai salah satu database paling aman, menyediakan kemampuan AAA.

Autentikasi

Otentikasi berarti pengguna mana yang diizinkan untuk mengakses database. Dalam istilah teknis, pengguna mana yang dapat “masuk” ke sistem basis data. PostgreSQL memiliki konsep yang kuat tentang proses otentikasi yang seharusnya. Metode otentikasi PostgreSQL dibagi menjadi tiga kategori: (1) Otentikasi Internal PostgreSQL (2) Otentikasi Sistem Operasi dan (3) Otentikasi Server Eksternal. Gambar 3 menunjukkan semua metode otentikasi yang didukung yang diurutkan berdasarkan kategori.

Baca Juga : Tips Untuk Migrasi Yang Lancar Ke PostgreSQL

Otorisasi

Bagian kedua dari AAA adalah otorisasi, yang berarti setelah login aktivitas apa yang dapat dilakukan pengguna di database. PostgreSQL memiliki kontrol berbeda untuk mengelola pengguna apa yang dapat dan tidak dapat dilakukan oleh pengguna. Kontrol ini bisa berbasis objek atau bisa berbasis baris. Berikut adalah kategori utama fitur otorisasi PostgreSQL:

  • Peran, Pengguna, dan Grup
  • HIBAH/PENCABURAN
  • Keamanan Tingkat Baris

Akuntansi

Bagian terakhir dan ketiga dari AAA adalah akuntansi. Setelah “login” ke sistem database, pencatatan aktivitas pengguna disebut akuntansi. Berikut ini adalah daftar kategori logging yang perlu diperhatikan.

  • Pencatatan Basis Data
  • Pencatatan Jaringan
  • Aplikasi
  • Pencatatan Sistem Operasi

Money adalah inti dari semua yang kami lakukan di Xendit. Menjadi organisasi yang teliti dan berpusat pada pelanggan, kami ingin solusi penyimpanan kami untuk nilai pecahan tersebut menjadi tanpa kerugian dan berkinerja. Oleh karena itu, kami menghabiskan banyak upaya untuk desain skema database PostgreSQL kami.

Numerik? Bilangan bulat?

Misalkan kita perlu menyimpan transaksi dengan nilai moneter dan mata uangnya. Karena kami tidak dapat mentolerir masalah pembulatan apa pun, tipe data pertama yang muncul dalam pikiran adalah numeric , yang membuat tabel terlihat seperti ini:

Transaksi dengan US$13,67 akan disimpan sebagai satu catatan transaksi , dengan jumlah “13,67” dan mata uang menjadi “USD”.

Masalah terpecahkan? Kami rasa tidak, karena dokumen resmi mengatakan:

  • (untuk numerik) Persyaratan penyimpanan sebenarnya adalah dua byte untuk setiap kelompok empat digit desimal, ditambah tiga hingga delapan byte overhead.
  • Sepertinya itu bisa memakan lebih banyak ruang daripada bilangan bulat ukuran tetap untuk angka dengan lebih banyak digit. Kita mungkin terkena ini karena kita berurusan dengan IDR! (FYI, pada saat penulisan, 1 USD adalah sekitar Rp 14.300)
  • Namun, perhitungan nilai numerik sangat lambat dibandingkan dengan tipe integer, atau tipe floating-point yang dijelaskan di bagian berikutnya.

Transaksi yang sama dengan US$13,67 akan disimpan sebagai satu catatan transaksi dengan magnified_amount menjadi “1367” dan mata uang menjadi “USD”, bersama dengan record pada kaca pembesar dengan mata uang “USD” dan kaca pembesar menjadi “100”, seperti yang diilustrasikan di bawah ini.

Dalam istilah yang lebih sederhana, kami menyimpan ini sebagai 1367 sen daripada 13,67 dolar.

Rupanya, ini juga tidak sempurna, rentangnya dibatasi (walaupun biasanya cukup besar), dan yang lebih penting, denominasi terbaik adalah semacam dikunci oleh kaca pembesar, misalnya, untuk membuat pabrik pendukung tabel di atas , kita harus untuk melakukan migrasi. Plus, pengembang harus selalu mengingat nilai yang diperbesar (itulah sebabnya kami menamai bidang magnified_amount sebagai pengingat).

Kesimpulan

Posting blog ini adalah yang pertama dari seri Keamanan PostgreSQL. Di blog ini, saya mencoba untuk membahas ikhtisar utama keamanan, yang akan menjadi dasar untuk topik keamanan saya berikutnya. Posting blog berikutnya adalah tentang Otentikasi (PostgreSQL Internal Authentication).