TLS, masuk jaringan, dan hak istimewa SQL menjawab pertanyaan yang berbeda
Mengenkripsi koneksi, mengizinkan sumber, dan memberikan tabel adalah tiga keputusan. Lalui semuanya berurutan sebelum bertanya apakah TLS dapat menggantikan VPN.
Seseorang mengusulkan memberikan login PostgreSQL kepada pelanggan agar klaim biaya berjalan terenkripsi dari ujung ke ujung. Administrator basis data membutuhkan sesi SQL sungguhan, dan orang lain mengusulkan formulir web sebagai gantinya. Kedua usulan memecahkan masalah yang salah, karena tidak ada yang dimulai dari operasi yang benar-benar dijalankan klien. Lalui ketiga keputusan itu berurutan dan pertanyaan apakah TLS dapat menggantikan VPN akan terjawab sendiri.
Mulai dari operasi yang dibutuhkan klien
Tuliskan apa yang harus dicapai klien. Mengirim klaim, membaca satu baris laporan, dan menjalankan kueri sewaktu-waktu adalah tiga operasi berbeda dengan tiga profil risiko berbeda.
Lalu tuliskan siapa yang membuat permintaan. Pelanggan, agen dukungan, dan administrator tidak dapat dipertukarkan meskipun mereka menyentuh tabel yang sama. Perbedaannya menentukan seberapa banyak bahasa kueri yang seharusnya pernah dilihat klien.
Pasangan jawaban itu menentukan antarmuka. Semua setelahnya adalah implementasi, dan sebagian besar perdebatan tentang enkripsi sebenarnya perdebatan tentang antarmuka mana yang dipilih.
Tiga kendali, tiga keputusan
TLS terautentikasi melindungi koneksi dan menentukan identitas TLS mana yang diterima. Masuk jaringan menentukan sumber mana yang boleh mencapai pendengar. Otorisasi basis data menentukan objek dan tindakan mana yang boleh digunakan suatu peran.
Tidak satu pun dari ketiganya menggantikan yang lain, seperti yang dinyatakan tabel secara gamblang.
| Control | What it decides | What it leaves open |
|---|---|---|
| Authenticated TLS | Connection protection and which TLS identities are accepted | Which tables a database user may touch |
| Restricted network entry | Which sources reach the listener | Whether an authenticated user should run a given statement |
| Database authorization | Which objects and actions a role may use | Whether the connection arrived by an approved path |
Bacalah baris yang Anda andalkan sebelum menghapus baris lain. Sebagian besar desain ini gagal karena suatu kendali diasumsikan alih-alih dikonfigurasi.
SQL langsung membiarkan kebijakan basis data tetap bertanggung jawab
Dengan koneksi langsung yang disetujui, pertahankan verifikasi identitas layanan dan kebijakan akses yang dimaksudkan. Menyalakan TLS membuat koneksi terenkripsi tersedia; ia tidak menolak koneksi tak terenkripsi kecuali konfigurasi akses menyatakannya melalui entri hostssl.
Perbedaan itu layak diperiksa di konfigurasi yang berjalan, bukan di templat. Server yang menawarkan TLS dan menerima teks polos bukanlah desain yang dianggap sebagian besar orang telah mereka terapkan. Bacalah aturan akses dan lihat entri mana yang benar-benar mewajibkannya. Satu pemeriksaan itu memisahkan server yang mampu mengenkripsi dari server yang hanya terenkripsi.
Gunakan peran hanya dengan hak istimewa yang dibutuhkan pekerjaan, dan tinjau kepemilikan, keanggotaan warisan, serta izin yang diberikan secara luas. Model hak istimewa PostgreSQL adalah batas kewenangan untuk objek basis data.
VPN dapat membatasi perangkat mana yang mencapai layanan sebelum autentikasi basis data terjadi, dan gerbang akses dapat melakukan hal serupa. Keduanya tidak menghilangkan kebutuhan untuk memelihara komponen yang terekspos, mengelola kredensial, dan membatasi penggunaan sumber daya.
Sertifikat klien adalah kredensial, bukan ACL
Sertifikat klien dapat menambahkan syarat pada saat koneksi. Pengaturan clientcert dapat menuntut sertifikat tepercaya dan, dalam mode yang lebih ketat, hubungan antara nama sertifikat dan pengguna basis data.
Itu kredensial yang lebih kuat. Ini bukan daftar otorisasi, dan tidak membuat server tak terlihat, karena komponen yang menerima koneksi tetap memproses lalu lintas jaringan dan jabat tangan. Memperlakukan sertifikat sebagai daftar akses membiarkan izin sebenarnya tak tersentuh. Ini juga cenderung memperlebar distribusi sertifikat, yang menimbulkan masalah berikutnya.
Sertifikat kuat yang melekat pada peran dengan hak berlebih menghasilkan administrator yang terautentikasi dengan baik. Periksa perannya sebelum merayakan sertifikat itu.
Pilih antarmuka yang lebih sempit bila cocok
Untuk klaim biaya, titik akhir aplikasi yang menerima klaim, menegakkan aturan bisnis, dan mengembalikan hasil yang diizinkan bagi pengguna itu mewakili operasi tersebut lebih baik daripada akun SQL umum.
Aplikasi kemudian memakai identitas basis datanya sendiri yang terbatas, dan pelanggan tidak pernah menerima bahasa kueri sebagai fitur. Itu permukaan yang lebih kecil dengan lebih sedikit cara untuk salah.
Ini pilihan desain, bukan klaim bahwa kode aplikasi otomatis lebih aman. Kode itu harus mengautentikasi pemanggilnya, mengotorisasi setiap tindakan, dan memvalidasi masukannya, dan izin basis datanya sendiri tetap penting.
SQL langsung tetap benar bagi orang dan alat yang pekerjaannya yang disetujui memerlukannya. Batasi desain itu dengan peran, cakupan jaringan, dan batas operasional, dan biarkan klien lain mempertahankan antarmuka yang lebih sempit. Mencampur kedua populasi dalam satu peran adalah tempat perdebatan dimulai.