Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyediakan pengguna MySQL hanya dengan hak istimewa minimum

Saya tidak setuju dengan Bill di sini dan pemikiran Atomix lebih cocok. Kecuali jika dapat ditunjukkan sebaliknya, jawaban Bill sangat meningkatkan risiko database disusupi.

Mungkin untuk pengembang yang sangat berpengalaman ada keamanan lain, tetapi untuk pengembang lain yang memberikan skrip penuh, akses tanpa batas untuk melakukan ~apa saja~ ke database meminta masalah, ketika tidak perlu.

Prinsip hak istimewa paling rendah harus digunakan di sini. Untuk MySQL, memiliki super user dengan semua hak istimewa yang digunakan untuk membuat tabel, drop database, dan sebagainya. Idealnya nama pengguna dan kata sandi ini tidak pernah terlihat di file PHP atau file apa pun di server web. (Saya menggunakan PHP sebagai contoh tetapi ini berlaku untuk aplikasi web lain). Anda hanya akan menggunakan nama pengguna dan sandi ini dengan sesuatu seperti PHPMyAdmin atau MySQL Workbench.

Kemudian, untuk script PHP, milikilah dengan minimum yang dibutuhkan, seperti hanya INSERT, SELECT, UPDATE, bahkan mungkin tidak DELETE, tergantung pada script PHP Anda. Ini akan berada di file PHP, yaitu, sebenarnya hanya SATU file DI LUAR root dokumen, seperti yang direkomendasikan oleh kebanyakan orang.

Alasannya demikian:ya, Anda tidak memerlukan pengguna MySQL untuk setiap pengguna aplikasi web. Tetapi prinsip dengan hak istimewa paling rendah ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) harus diterapkan. Jika entah bagaimana pengguna super MySQL Anda disusupi karena Anda secara tidak sengaja menamai skrip koneksi MySQL Anda sebagai .txt alih-alih .php, atau seseorang memperoleh akses ke file server web, setidaknya yang "terburuk" yang dapat mereka lakukan adalah SELECT, UPDATE, dan INSERT. .. Yang walaupun dapat menyebabkan masalah besar, tidak seburuk memberi mereka DROP DATABASE, DROP TABLES dan hal-hal yang lebih buruk lagi.

Selain itu, dalam proyek saya saat ini karena praktik pengembangan tangkas (saya tidak bekerja untuk tetapi merekomendasikan http://www.agilealliance .org/ ), satu atau dua anggota tim "non-teknologi" langsung menggunakan PHPMyAdmin untuk membuat perubahan langsung ke database MySQL. Ini karena membuat CMS untuk entri data langsung sederhana tidak diperlukan. Dalam hal ini, pengguna MySQL ketiga dengan hak istimewa yang masuk akal tetapi sekali lagi, "cukup" cocok untuk mereka. Kami tidak ingin melumpuhkan anggota tim dengan hak istimewa yang terlalu sedikit, tetapi tentu saja mereka tidak boleh secara tidak sengaja menghapus atau mengubah sesuatu.

Karena MySQL tidak memiliki PERAN (pada saat pertanyaan awal diajukan, dan sesuai Bill) maka mengizinkan skrip web apa pun untuk mengakses MySQL hanya dengan satu Pengguna Super sangat berisiko.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah bahasa pesan kesalahan MySQL

  2. Cara mencari bidang tanggal untuk String menggunakan API Kriteria JPA

  3. InnoDB:indeks duplikat ditemukan - apakah ini sangat buruk?

  4. Menggunakan gabungan dengan tiga tabel saat bidang mungkin nol

  5. Nodejs mengungkapkan dan berjanji tidak melakukan apa yang saya harapkan