Seseorang mencadangkan memberikan log masuk PostgreSQL kepada pelanggan supaya tuntutan perbelanjaan bergerak tersulit dari hujung ke hujung. Pentadbir pangkalan data memerlukan sesi SQL sebenar, dan orang lain mencadangkan borang web sebagai gantinya. Kedua-dua cadangan menyelesaikan masalah yang salah, kerana tiada satu pun bermula daripada operasi yang sebenarnya dilakukan oleh pelanggan. Lalui ketiga-tiga keputusan mengikut urutan dan soalan sama ada TLS boleh menggantikan VPN akan terjawab sendiri.

Mulakan dengan operasi yang diperlukan oleh pelanggan

Tuliskan apa yang perlu dicapai oleh pelanggan. Menghantar tuntutan, membaca satu baris laporan dan menjalankan pertanyaan segera ialah tiga operasi berbeza dengan tiga profil risiko berbeza.

Kemudian tuliskan siapa yang membuat permintaan. Pelanggan, ejen sokongan dan pentadbir tidak boleh ditukar ganti walaupun mereka menyentuh jadual yang sama. Perbezaan itu menentukan berapa banyak bahasa pertanyaan yang patut dilihat oleh pelanggan.

Pasangan jawapan itu menentukan antara muka. Segala-galanya selepas itu ialah pelaksanaan, dan kebanyakan perdebatan tentang penyulitan sebenarnya perdebatan tentang antara muka mana yang dipilih.

Tiga kawalan, tiga keputusan

TLS yang disahkan melindungi sambungan dan menentukan identiti TLS mana yang diterima. Kemasukan rangkaian menentukan sumber mana yang boleh mencapai pendengar. Kebenaran pangkalan data menentukan objek dan tindakan mana yang boleh digunakan oleh sesuatu peranan.

Tiada satu pun daripada ketiga-tiganya menggantikan yang lain, seperti yang dinyatakan oleh jadual itu.

ControlWhat it decidesWhat it leaves open
Authenticated TLSConnection protection and which TLS identities are acceptedWhich tables a database user may touch
Restricted network entryWhich sources reach the listenerWhether an authenticated user should run a given statement
Database authorizationWhich objects and actions a role may useWhether the connection arrived by an approved path

Baca baris yang anda bergantung padanya sebelum membuang baris lain. Kebanyakan reka bentuk ini gagal kerana sesuatu kawalan diandaikan dan bukan dikonfigurasikan.

SQL langsung membiarkan dasar pangkalan data bertanggungjawab

Dengan sambungan langsung yang diluluskan, kekalkan pengesahan identiti perkhidmatan dan dasar akses yang dimaksudkan. Menghidupkan TLS menjadikan sambungan tersulit tersedia; ia tidak menolak sambungan tidak tersulit melainkan konfigurasi akses menyatakannya melalui entri hostssl.

Perbezaan itu wajar diperiksa dalam konfigurasi yang sedang berjalan dan bukan dalam templat. Pelayan yang menawarkan TLS dan menerima teks biasa bukanlah reka bentuk yang difikirkan kebanyakan orang telah mereka gunakan. Baca peraturan akses dan lihat entri mana yang benar-benar memerlukannya. Satu pemeriksaan itu memisahkan pelayan yang mampu menyulit daripada pelayan yang hanya tersulit.

Gunakan peranan dengan hanya keistimewaan yang diperlukan oleh kerja itu, dan semak pemilikan, keahlian warisan dan kebenaran yang diberikan secara meluas. Model keistimewaan PostgreSQL ialah sempadan kewibawaan untuk objek pangkalan data.

VPN boleh mengehadkan peranti mana yang mencapai perkhidmatan sebelum pengesahan pangkalan data berlaku, dan get laluan akses boleh melakukan sesuatu yang serupa. Kedua-duanya tidak menghapuskan keperluan untuk menyelenggara komponen yang terdedah, mengurus kelayakan dan mengehadkan penggunaan sumber.

Sijil pelanggan ialah kelayakan, bukan ACL

Sijil pelanggan boleh menambah syarat semasa sambungan. Tetapan clientcert boleh menuntut sijil yang dipercayai dan, dalam mod yang lebih ketat, hubungan antara nama sijil dan pengguna pangkalan data.

Itu kelayakan yang lebih kukuh. Ia bukan senarai kebenaran, dan ia tidak menjadikan pelayan tidak kelihatan, kerana komponen yang menerima sambungan masih memproses trafik rangkaian dan jabat tangan. Memperlakukan sijil sebagai senarai akses membiarkan kebenaran sebenar tidak tersentuh. Ia juga cenderung meluaskan pengedaran sijil, yang menimbulkan masalah seterusnya.

Sijil kukuh yang dilampirkan pada peranan dengan keistimewaan berlebihan menghasilkan pentadbir yang disahkan dengan baik. Periksa peranan itu sebelum meraikan sijil tersebut.

Pilih antara muka yang lebih sempit apabila sesuai

Bagi tuntutan perbelanjaan, titik akhir aplikasi yang menerima tuntutan, menguatkuasakan peraturan perniagaan dan memulangkan hasil yang dibenarkan bagi pengguna itu mewakili operasi itu dengan lebih baik daripada akaun SQL umum.

Aplikasi kemudian menggunakan identiti pangkalan datanya sendiri yang terhad, dan pelanggan tidak pernah menerima bahasa pertanyaan sebagai ciri. Itu permukaan yang lebih kecil dengan lebih sedikit cara untuk salah.

Ini pilihan reka bentuk dan bukan dakwaan bahawa kod aplikasi secara automatik lebih selamat. Kod itu perlu mengesahkan pemanggilnya, membenarkan setiap tindakan dan mengesahkan inputnya, dan kebenaran pangkalan datanya sendiri masih penting.

SQL langsung kekal betul bagi orang dan alat yang kerja mereka yang diluluskan memerlukannya. Hadkan reka bentuk itu dengan peranan, skop rangkaian dan had operasi, dan biarkan pelanggan lain mengekalkan antara muka yang lebih sempit. Mencampurkan kedua-dua kumpulan dalam satu peranan ialah tempat perdebatan bermula.

Artikel berkaitan