PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengintegrasikan PostgreSQL Dengan Sistem Otentikasi

PostgreSQL adalah salah satu database paling aman di dunia. Keamanan basis data memainkan peran penting dalam lingkungan kritis misi dunia nyata. Penting untuk memastikan database dan data selalu aman dan tidak terkena akses yang tidak sah sehingga membahayakan keamanan data. Sementara PostgreSQL menyediakan berbagai mekanisme dan metode bagi pengguna untuk mengakses database dengan cara yang aman, PostgreSQL juga dapat diintegrasikan dengan berbagai sistem otentikasi eksternal untuk memastikan persyaratan keamanan database standar perusahaan terpenuhi.

Selain menyediakan mekanisme otentikasi aman melalui SSL, MD5, pgpass dan pg_ident dll., PostgreSQL dapat diintegrasikan dengan berbagai sistem otentikasi eksternal kelas perusahaan yang populer. Fokus saya di blog ini adalah pada LDAP, Kerberos dan RADIUS dengan SSL dan pg_ident.

LDAP

LDAP mengacu pada Protokol Akses Direktori Ringan yang merupakan sistem otentikasi terpusat yang populer digunakan. Ini adalah penyimpanan data yang menyimpan kredensial pengguna dan berbagai detail terkait pengguna lainnya seperti Nama, Domain, Unit Bisnis, dll. dalam bentuk hierarki dalam format tabel. Pengguna akhir yang terhubung ke sistem target (Misalnya, database) harus terlebih dahulu terhubung ke server LDAP untuk melewati otentikasi yang berhasil. LDAP adalah salah satu sistem otentikasi populer yang saat ini digunakan di seluruh organisasi yang menuntut standar keamanan yang tinggi.

LDAP + PostgreSQL

PostgreSQL dapat diintegrasikan dengan LDAP. Dalam pengalaman konsultasi pelanggan saya, ini dianggap sebagai salah satu kemampuan utama PostgreSQL. Karena otentikasi nama pengguna dan kata sandi dilakukan di server LDAP, untuk memastikan pengguna dapat terhubung ke database melalui LDAP, akun pengguna harus ada di database. Dengan kata lain, ini berarti pengguna ketika mencoba untuk terhubung ke PostgreSQL dirutekan ke server LDAP terlebih dahulu dan kemudian ke database Postgres setelah otentikasi berhasil. Konfigurasi dapat dibuat di file pg_hba.conf untuk memastikan koneksi dirutekan ke server LDAP. Di bawah ini adalah contoh entri pg_hba.conf -

host    all    pguser   0.0.0.0/0    ldap ldapserver=ldapserver.example.com ldapprefix="cn=" ldapsuffix=", dc=example, dc=com"

Di bawah ini adalah contoh entri LDAP di pg_hba.conf:

host    all    pguser   0.0.0.0/0    ldap ldapserver=ldapserver.example.com ldapprefix="cn=" ldapsuffix=", ou=finance, dc=example, dc=com"

Saat menggunakan port ldap dan TLS non-default:

ldap ldapserver=ldapserver.example.com ldaptls=1 ldapport=5128 ldapprefix="uid=" ldapsuffix=",ou=finance,dc=apix,dc=com"

Memahami Entri LDAP Di Atas

  • LDAP menggunakan berbagai atribut dan istilah untuk menyimpan/mencari entri pengguna di penyimpanan datanya. Juga, seperti yang disebutkan di atas, entri pengguna disimpan dalam hierarki.
  • Entri pg_hba.conf ldap di atas terdiri dari atribut yang disebut CN (Common Name), OU (Organization Unit) dan DC (Domain Component) yang disebut sebagai Relative Distinguished Names (RDN), urutan RDN ini bersama-sama menjadi sesuatu disebut DN (Nama Terhormat). DN adalah objek berbasis LDAP yang, pencarian dilakukan di penyimpanan data LDAP.
  • Nilai atribut LDAP seperti CN, DC, OU, dll. ditentukan dalam Kelas Objek LDAP, yang dapat diberikan oleh pakar sistem yang membuat lingkungan LDAP.

Apakah Itu Membuat LDAP Cukup Aman?

Mungkin tidak. Kata sandi yang dikomunikasikan melalui jaringan di lingkungan LDAP tidak dienkripsi, yang dapat menjadi risiko keamanan karena kata sandi terenkripsi dapat diretas. Ada opsi untuk membuat komunikasi kredensial lebih aman.

  1. Pertimbangkan untuk mengonfigurasi LDAP di TLS (Transport Layer Security)
  2. LDAP dapat dikonfigurasi dengan SSL yang merupakan opsi lain

Kiat untuk mencapai integrasi LDAP dengan PostgreSQL

(untuk sistem berbasis Linux)

  • Instal modul openLDAP yang sesuai berdasarkan versi sistem operasi
  • Pastikan perangkat lunak PostgreSQL diinstal dengan pustaka LDAP
  • Pastikan LDAP terintegrasi dengan baik dengan Active Directory
  • Membiasakan dengan BUG yang ada di modul openLDAP yang digunakan. Ini bisa menjadi bencana besar dan dapat membahayakan standar keamanan.
  • Direktori Aktif Windows juga dapat diintegrasikan dengan LDAP
  • Pertimbangkan untuk mengonfigurasi LDAP dengan SSL yang lebih aman. Instal modul openSSL yang sesuai dan waspadai BUG seperti heart-bleed yang dapat mengekspos kredensial yang dikirimkan melalui jaringan.

Kerberos

Kerberos adalah sistem otentikasi terpusat standar industri yang populer digunakan dalam organisasi dan menyediakan mekanisme otentikasi berbasis enkripsi. Kata sandi diautentikasi oleh server autentikasi pihak ketiga yang disebut sebagai KDC (Pusat Distribusi Kunci). Kata sandi dapat dienkripsi berdasarkan berbagai algoritma dan hanya dapat didekripsi dengan bantuan kunci pribadi bersama. Ini juga berarti, kata sandi yang dikomunikasikan melalui jaringan dienkripsi.

PostgreSQL + Kerberos

PostgreSQL mendukung otentikasi berbasis GSSAPI dengan Kerberos. Pengguna yang mencoba terhubung ke database Postgres, akan dialihkan ke server KDC untuk otentikasi. Otentikasi antara klien dan database KDC ini dilakukan berdasarkan kunci pribadi bersama dan setelah otentikasi berhasil, klien sekarang akan memegang kredensial berbasis Kerberos. Kredensial yang sama dikenakan validasi antara server Postgres dan KDC yang akan dilakukan berdasarkan file keytab yang dihasilkan oleh Kerberos. File tab kunci ini harus ada di server database dengan izin yang sesuai untuk pengguna yang memiliki proses Postgres.

Konfigurasi Kerberos dan proses koneksi -

  • Akun pengguna berbasis Kerberos harus membuat tiket (permintaan koneksi) menggunakan perintah “kinit”.

  • File keytab harus dibuat menggunakan perintah “kadmin” untuk akun pengguna (prinsipal) berbasis Kerberos yang memenuhi syarat dan kemudian Postgres akan menggunakan file keytab yang sama untuk memvalidasi kredensial. Prinsipal dapat dienkripsi dan ditambahkan ke file keytab yang ada menggunakan perintah “ktadd”. Enkripsi Kerberos mendukung berbagai algoritme enkripsi standar industri.

    File keytab yang dihasilkan harus disalin ke server Postgres, itu harus dapat dibaca oleh proses Postgres. Parameter postgresql.conf di bawah ini harus dikonfigurasi:

    krb_server_keyfile = '/database/postgres/keytab.example.com'

    Jika Anda khusus tentang sensitivitas huruf besar-kecil, gunakan parameter di bawah ini

    krb_caseins_users which is by default “off”  (case sensitive)
  • Entri harus dibuat di pg_hba.conf untuk memastikan koneksi dirutekan ke server KDC

    Contoh entri pg_hba.conf

    # TYPE DATABASE       USER    CIDR-ADDRESS            METHOD
    host     all                     all         192.168.1.6/32            gss include_realm=1 krb_realm=EXAMPLE.COM

    Contoh entri pg_hba.conf dengan entri peta

    # TYPE DATABASE       USER    CIDR-ADDRESS            METHOD
    host     all                     all         192.168.1.6/32            gss include_realm=1 krb_realm=EXAMPLE.COM map=krb
  • Akun pengguna yang mencoba untuk terhubung harus ditambahkan ke database KDC yang disebut sebagai prinsipal dan akun pengguna yang sama atau akun pengguna pemetaan harus ada di database juga

    Di bawah ini adalah contoh prinsip Kerberos

    [email protected]

    pguser adalah nama pengguna dan "example.com" adalah nama ranah yang dikonfigurasi dalam konfigurasi Kerberos (/etc/krb5.conf) di server KDC.

    Di dunia kerberos, kepala sekolah berada dalam format seperti email ([email protected]) dan pengguna database tidak dapat dibuat dalam format yang sama. Hal ini membuat DBA berpikir untuk membuat pemetaan nama pengguna database dan memastikan prinsipal terhubung dengan nama yang dipetakan menggunakan pg_ident.conf.

    Di bawah ini adalah contoh entri nama peta di pg_ident.conf

    # MAPNAME           SYSTEM-USERNAME               GP-USERNAME
       mapuser               /^(.*)EXAMPLE\.DOMAIN$      admin

Apakah Itu Membuat Kerberos Cukup Aman ?

Mungkin tidak. Kredensial pengguna yang dikomunikasikan melalui jaringan dapat diekspos, diretas. Meskipun Kerberos mengenkripsi prinsipal, mereka dapat dicuri, diretas. Ini membawa kebutuhan untuk menerapkan keamanan lapisan jaringan. Ya, SSL atau TLS adalah caranya. Sistem otentikasi Kerberos dapat diintegrasikan dengan SSL atau TLS. TLS adalah penerus SSL. Disarankan agar Kerberos dikonfigurasi dengan SSL atau TLS sehingga komunikasi melalui jaringan aman.

TIPS

  • Pastikan pustaka krb* sudah terpasang
  • Library OpenSSL harus diinstal untuk mengonfigurasi SSL
  • Pastikan Postgres diinstal dengan opsi berikut
    ./configure --with-gssapi --with-krb-srvnam --with-openssl
Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

RADIUS

RADIUS adalah protokol jaringan layanan otentikasi jarak jauh yang menyediakan

. terpusat

Otentikasi, Otorisasi dan Akuntansi (AAA). Pasangan nama pengguna / kata sandi diautentikasi di server RADIUS. Cara otentikasi terpusat ini jauh lebih mudah dan sederhana dibandingkan dengan sistem otentikasi lain seperti LDAP dan Kerberos yang melibatkan sedikit kerumitan.

RADIUS + PostgreSQL

PostgreSQL dapat diintegrasikan dengan mekanisme otentikasi RADIUS. Akuntansi belum didukung di Postgres. Ini membutuhkan akun pengguna basis data yang ada di basis data. Koneksi ke database diotorisasi berdasarkan rahasia bersama yang disebut sebagai "radiussecret".

Entri dalam konfigurasi pg_hba.conf sangat penting untuk mengarahkan koneksi ke server radius untuk otentikasi.

Contoh entri pg_hba.conf

hostssl             all        all        0.0.0.0/0         radius  radiusserver=127.0.0.1 radiussecret=secretr radiusport=3128

Untuk memahami entri di atas -

"radiusserver" adalah alamat IP host dari server RADIUS tempat pengguna diarahkan untuk otentikasi. Parameter ini dikonfigurasi di /etc/radiusd.conf di server RADIUS.

Nilai "radiussecret" diambil dari clients.conf. Ini adalah kode rahasia yang secara unik mengidentifikasi koneksi klien radius.

"radiusport" dapat ditemukan di file /etc/radiusd.conf. Ini adalah port tempat koneksi radius akan mendengarkan.

Pentingnya SSL

SSL (Secure Socket Layer) memainkan peran penting dengan sistem otentikasi eksternal di tempat. Sangat disarankan untuk mengkonfigurasi SSL dengan sistem otentikasi eksternal karena akan ada komunikasi informasi sensitif antara klien dan server melalui jaringan dan SSL dapat lebih memperketat keamanan.

Dampak Kinerja Menggunakan Sistem Otentikasi Eksternal

Sistem keamanan yang efektif dan efisien datang dengan mengorbankan kinerja. Saat klien/pengguna yang mencoba terhubung ke database diarahkan ke sistem otentikasi untuk membuat koneksi, mungkin ada penurunan kinerja. Ada beberapa cara untuk mengatasi hambatan kinerja.

  • Dengan mekanisme autentikasi eksternal, mungkin ada penundaan saat membuat koneksi ke database. Ini bisa menjadi masalah nyata ketika ada sejumlah besar koneksi yang dibuat ke database.
  • Pengembang perlu memastikan bahwa jumlah koneksi yang tinggi yang tidak perlu tidak dibuat ke database. Beberapa permintaan aplikasi yang dilayani melalui satu koneksi akan menguntungkan.
  • Selain itu, berapa lama waktu yang dibutuhkan setiap permintaan di ujung basis data memainkan peran penting. Jika permintaan membutuhkan waktu lebih lama untuk diselesaikan, maka permintaan berikutnya akan mengantre. Penyesuaian kinerja proses dan arsitektur infrastruktur yang cermat akan menjadi kuncinya!
  • Database dan infrastruktur harus dirancang secara efisien dan memiliki kapasitas yang memadai untuk memastikan kinerja yang baik.
  • Saat melakukan tolok ukur kinerja, pastikan SSL diaktifkan dan waktu rata-rata pembuatan koneksi kemudian harus dievaluasi.

Mengintegrasikan Sistem Otentikasi Eksternal Dengan ClusterControl - PostgreSQL

Instans PostgreSQL dapat dibuat dan dikonfigurasi secara otomatis melalui GUI ClusterControl. Mengintegrasikan sistem otentikasi eksternal dengan Instans PostgreSQL yang disebarkan melalui ClusterControl hampir mirip dibandingkan dengan integrasi dengan instans PostgreSQL tradisional dan sebenarnya sedikit lebih sederhana. Di bawah ini adalah ikhtisar yang sama -

  • ClusterControl menginstal library PostgreSQL yang diaktifkan dengan kemampuan LDAP, KRB, GSSAPI, dan OpenSSL
  • Integrasi dengan sistem otentikasi eksternal memerlukan berbagai perubahan konfigurasi parameter pada server database postgresql yang dapat dilakukan menggunakan GUI ClusterControl.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL INSERT tanpa menentukan kolom. Apa yang terjadi?

  2. Pembaruan alat pengujian PostgreSQL dengan arsip benchmark

  3. Ikhtisar pgModeler untuk PostgreSQL

  4. Kiat untuk Menyimpan Cadangan PostgreSQL di Amazon AWS

  5. Cara Membuat Bilangan Ordinal di PostgreSQL