GNU/Linux >> Belajar Linux >  >> Linux

Memahami Otentikasi Pluggable MySQL

MySQL mendukung sejumlah mekanisme otentikasi yang tersedia melalui otentikasi pluggable. MySQL menggunakan sejumlah algoritma untuk mengenkripsi kata sandi yang disimpan di tabel pengguna:

  • Plugin mysql_native_password mengimplementasikan format sandi standar, hash selebar 41-byte.
  • Plugin mysql_old_password mengimplementasikan format lama yang kurang aman, dengan lebar 16 byte.
  • Plugin sha256_password mengimplementasikan algoritme hashing SHA-256 yang banyak digunakan dalam komputasi aman.

Nilai variabel sistem old_passwords menentukan algoritme yang PASSWORD() fungsi yang digunakan untuk membuat password, sebagai berikut:

  • 0 :Algoritma standar, seperti yang digunakan sejak MySQL 4.1.1
  • 1 :Algoritma lama, seperti yang digunakan sebelum MySQL 4.1.1
  • 2 :Algoritma SHA-256

Mulai server dengan default-authentication-plugin opsi disetel ke sha256_password untuk menggunakan sandi SHA-256 untuk semua pengguna baru, atau gunakan BUAT PENGGUNA dengan IDENTIFIED WITH sha256_password klausa untuk menentukan sandi SHA-256 untuk pengguna tertentu.

Plugin Otentikasi Cleartext Sisi Klien

Beberapa metode otentikasi, seperti otentikasi PAM (Pluggable Authentication Modules), mengharuskan klien untuk mengirim kata sandi teks biasa ke server sehingga server dapat memproses kata sandi dalam bentuk normalnya. mysql_clear_password plugin mengaktifkan perilaku ini.

Pustaka klien MySQL menyertakan plugin Cleartext Authentication bawaan, mysql_clear_password. Plugin ini digunakan untuk mengirim kata sandi teks biasa ke server – Kata sandi biasanya di-hash. Plugin Diaktifkan oleh variabel lingkungan LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN dan menentukan –enable-cleartext-plugin saat menjalankan aplikasi klien MySQL seperti mysql dan mysqladmin. Opsi MYSQL_ENABLE_CLEARTEXT_PLUGIN dari fungsi mysql_options() C API juga dapat digunakan untuk mengaktifkan plugin.

Plugin Otentikasi yang Dapat Dimuat

Selain plugin bawaan bawaan, MySQL menyediakan beberapa plugin yang dapat dimuat:

  • Plugin Uji Otentikasi (test_plugin_server ) mengautentikasi menggunakan autentikasi sandi asli atau lama, dan ditujukan untuk tujuan pengujian dan pengembangan.
  • Plugin Socket Peer-Credential (auth_socket) memungkinkan pengguna untuk terhubung melalui file soket UNIX hanya jika nama pengguna Linux mereka cocok dengan akun MySQL mereka.
  • Plugin autentikasi PAM (authentication_pam) adalah plugin Edisi Perusahaan yang memungkinkan Anda masuk menggunakan mekanisme autentikasi eksternal. MySQL tidak menyimpan kata sandi Anda, tetapi menggunakan mekanisme UNIX PAM (Pluggable Authentication Modules) untuk mengirimkan nama pengguna dan kata sandi yang disediakan klien untuk otentikasi oleh sistem operasi.

Anda dapat mengembangkan plugin otentikasi Anda sendiri. Plugin Uji Otentikasi dimaksudkan untuk digunakan oleh pengembang untuk membuat plugin mereka sendiri; kode sumbernya tersedia sebagai bagian dari distribusi kode sumber MySQL. Muat plugin autentikasi yang dapat dimuat dengan memulai server dengan plugin-load pilihan pada baris perintah atau pada file my.cnf, seperti pada contoh berikut:

[mysqld] 
plugin-load=authentication_pam.so

PAM Otentikasi Plugin

Plugin Otentikasi PAM adalah plugin Edisi Perusahaan yang mengotentikasi akun MySQL terhadap sistem operasi. PAM mendefinisikan layanan yang mengkonfigurasi otentikasi. Ini disimpan di /etc/pam.d . PAM mencari di /etc/pam.d untuk layanan yang diautentikasi. Misalnya, untuk membuat layanan PAM bernama mysql-pam, buat file /etc/pam.d/mysql-pam dengan konten berikut:

#%PAM-1.0
auth     include  password-auth 
account  include  password-auth

Selain otentikasi MySQL, PAM terintegrasi dengan metode otentikasi lainnya termasuk LDAP dan Active Directory, sehingga Anda dapat menggunakan PAM untuk mengotentikasi banyak layanan (termasuk MySQL) terhadap satu toko di jaringan Anda. Untuk membuat pengguna MySQL yang memetakan langsung ke pengguna sistem operasi, gunakan pernyataan seperti berikut:

CREATE USER bob@localhost
IDENTIFIED WITH authentication_pam AS 'mysql-pam';

Ketika bob masuk, MySQL meneruskan nama pengguna dan kata sandi yang diterimanya dari klien ke PAM, yang diautentikasi terhadap sistem operasi. Klien harus mengirim kata sandi dalam teks yang jelas. Aktifkan plugin Cleartext Authentication sisi klien untuk memenuhi tujuan ini:

shell> mysql --enable-cleartext-plugin -ubob -p 
Enter password: bob’s_OS_password

Untuk mengaktifkan login berbasis grup dengan plugin Otentikasi PAM, buat akun proxy anonim berkemampuan PAM yang tidak cocok dengan pengguna, tetapi tentukan satu set pemetaan dari grup sistem operasi ke pengguna MySQL:

CREATE USER ''@'' IDENTIFIED WITH authentication_pam AS 'mysql-pam, sales=m_sales, finance=m_finance';

Contoh sebelumnya mengasumsikan bahwa Anda memiliki grup sistem operasi penjualan dan keuangan serta pengguna MySQL m_sales dan m_finance. Anda kemudian harus memberikan hak istimewa PROXY ke akun proxy anonim, memberinya hak untuk masuk sebagai pengguna MySQL m_sales dan m_finance:

GRANT PROXY ON m_sales@localhost TO ''@'';
GRANT PROXY ON m_finance@localhost TO ''@'';

Pengguna yang menjadi anggota grup penjualan dan keuangan sekarang dapat memberikan kredensial sistem operasi mereka pada prompt baris perintah mysql, yang memasukkan mereka sebagai pengguna MySQL m_sales atau m_finance, masing-masing, memberi mereka semua hak istimewa yang diberikan ke akun tersebut. Misalnya, jika peter adalah anggota grup penjualan, ia dapat masuk sebagai berikut:

shell> mysql --enable-cleartext-plugin -upeter -p
Enter password: peter’s_OS_password
Welcome to the MySQL monitor. Commands end with ; or \g. 
...
mysql> SELECT CURRENT_USER(); 
+-------------------+
| CURRENT_USER()    | 
+-------------------+
| m_sales@localhost | 
+-------------------+ 
1 row in set (0.01 sec)
Panduan Pemula untuk Manajemen Pengguna MySQL
Memahami Hak Istimewa MySQL


Linux
  1. Langkah-langkah untuk menginstal plugin pemantauan MySQL Percona untuk Zabbix

  2. Langkah-langkah untuk menginstal plugin pemantauan MySQL Percona untuk Zabbix

  3. Memahami Jika?

  1. Penjadwal Acara MySQL

  2. Pencadangan MySQL 1.1

  3. MySQL gagal:mysql ERROR 1524 (HY000):Plugin 'auth_socket' tidak dimuat

  1. Instal MariaDB atau MySQL di Linux

  2. Memahami YAML untuk Ansible

  3. Memperbaiki database MySQL InnoDB