Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapewnienie użytkownikom MySQL minimalnych uprawnień

Nie zgadzam się tutaj z Billem i sposób myślenia Atomixa jest bardziej odpowiedni. O ile nie można wykazać inaczej, odpowiedź Billa znacznie zwiększa ryzyko włamania się do bazy danych.

Być może dla bardzo doświadczonych programistów istnieją inne zabezpieczenia, ale dla innych programistów zapewnienie pełnego, nieskrępowanego dostępu do skryptu w celu zrobienia ~wszystkich~ czynności z bazą danych oznacza proszenie się o kłopoty, kiedy nie ma takiej potrzeby.

Powinna tu obowiązywać zasada najmniejszych przywilejów. W przypadku MySQL miej superużytkownika ze wszystkimi uprawnieniami, które są używane do tworzenia tabel, usuwania bazy danych i tak dalej. W idealnym przypadku ta nazwa użytkownika i hasło nigdy nie są widoczne w żadnym pliku PHP ani w żadnym pliku na serwerze WWW. (Ja używam PHP jako przykładu, ale dotyczy to innych aplikacji internetowych). Używałbyś tej nazwy użytkownika i hasła tylko z czymś takim jak PHPMyAdmin lub MySQL Workbench.

Następnie, dla skryptów PHP, miej taki z wymaganym minimum, takim jak po prostu INSERT, SELECT, UPDATE, może nawet nie DELETE, w zależności od twojego skryptu PHP. Byłoby to w plikach PHP, czyli właściwie tylko JEDEN plik POZA katalogiem głównym, co jest zalecane przez większość.

Powód jest następujący:tak, nie potrzebujesz użytkownika MySQL dla każdego użytkownika aplikacji internetowej. Ale zasada najmniejszych uprawnień ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) powinno mieć zastosowanie. Jeśli w jakiś sposób Twój superużytkownik MySQL jest zagrożony, ponieważ przypadkowo nazwałeś swój skrypt połączenia MySQL jako .txt zamiast .php lub ktoś uzyskał dostęp do plików serwera WWW, przynajmniej „najgorsze”, jakie mogą zrobić, to WYBIERANIE, AKTUALIZACJA i WSTAWIANIE. .. Co i tak może powodować duże problemy, ale nie jest tak złe, jak dawanie im BAZY DANYCH DROP, TABEL DROP i znacznie gorszych rzeczy.

Dodatkowo w moim obecnym projekcie ze względu na zwinne praktyki programistyczne (nie pracuję, ale polecam http://www.agilealliance .org/ ), jeden lub dwóch członków zespołu „nietechnicznego” bezpośrednio używa PHPMyAdmin do wprowadzania bezpośrednich zmian w bazie danych MySQL. Dzieje się tak, ponieważ tworzenie CMS do prostego bezpośredniego wprowadzania danych nie jest wymagane. W tym przypadku odpowiedni jest dla nich trzeci użytkownik MySQL z rozsądnymi, ale „wystarczającymi” uprawnieniami. Nie chcemy okaleczać członka zespołu zbyt małymi uprawnieniami, ale oczywiście nie powinien on mieć możliwości przypadkowego usunięcia lub zmiany rzeczy.

Ponieważ MySQL nie ma ról (w momencie, gdy zadano pierwotne pytanie i zgodnie z Billem), zezwolenie każdemu skryptowi WWW na dostęp do MySQL tylko z jednym superużytkownikiem jest bardzo ryzykowne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Aktualizacja z licznikiem na podstawie podzapytania

  2. Odmowa dostępu dla użytkownika 'test'@'ip' (przy użyciu hasła:TAK)

  3. Zapytanie MySQL z wieloma tabelami

  4. Jak działają widoki MySQL?

  5. Wszystkie kolumny są ustawione na tę samą wartość