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

Użytkownicy aplikacji MySQL a użytkownicy baz danych

Walczyłem z tym wiele lat temu, więc oto odpowiedź, której chciałbym mieć:

Ogólnie rzecz biorąc, jest to zbyt skomplikowane, a odpowiedź nagłówka dla podstawowej aplikacji brzmi:uprawnienia użytkowników będą zarządzane przez kod PHP w wywołaniach API, które wykonujesz, a jeden użytkownik DB jest w porządku. Wszyscy użytkownicy powinni generalnie unikać bezpośredniej interakcji z bazą danych dla tworzenia aplikacji, aby zapobiec naruszeniu świętości danych.

Dobrze jest pomyśleć o bezpieczeństwie i ograniczeniach, ale najważniejsza jest prostota — im bardziej ją skomplikowasz, tym trudniej jest ją utrzymać, a tym samym łatwiej przeoczyć ważne przypadki.

Czy powinienem tworzyć nowego użytkownika bazy danych za każdym razem, gdy rejestruję nowego użytkownika internetowego?

Nie, użytkowników bazy danych wyróżniają ich uprawnienia. W rezultacie wszyscy użytkownicy podlegają zbiorowi grup o różnych poziomach uprawnień. Konta bazy danych są oddzielone od kont internetowych - połączenie z bazą danych odbywa się w tle i nie ma połączenia z używanym kontem internetowym.

Dobrym podejściem byłoby utworzenie konta DB dla każdej usługi łączącej się bezpośrednio z DB. Dla zdecydowanej większości będzie to jedna usługa, Twój serwer WWW. Jeśli aplikacja się rozrośnie i wyizoluje usługi, takie jak audyty, mikroserwisy, bezpieczeństwo, IOT, prawdopodobnie powinny mieć własne konta.

Czy uprawnienia CRUD są bezpieczne dla wszystkich użytkowników witryny?

Pytanie jest błędne - przekazujesz CRUD na konto DB, które będzie go potrzebować. W przypadku uprawnień CRUD zarządzanych w PHP naprawdę zależy to od Twojej aplikacji i określonych punktów końcowych. Na przykład prawdopodobnie nie chcesz, aby wszyscy Twoi użytkownicy mogli usuwać rekordy użytkowników, więc Twój kod PHP powinien temu zapobiegać.

Ile powinno być różnych typów użytkowników bazy danych?

Liczba zależy od Twojej bazy danych. Ogólnie rzecz biorąc, istnieją 4 grupy

  • Administratorzy bazy danych
  • Projektanci baz danych
  • Zwykli użytkownicy końcowi
  • Rodziwi użytkownicy końcowi

Jeśli jednak chcesz przyznać uprawnienia na poziomie tabeli, być może będziesz musiał trochę bardziej się rozgałęzić. Sugerowałoby to, że 10 kont DB to dość mała ilość, kilkaset jest bardziej prawdopodobne .

Im więcej uprawnień, tym więcej miejsca jest wymagane, ale jest to dość drobna uwaga i nie powinna odgrywać dużej roli w wydajności. Kolejną kwestią jest złożoność — zastanów się dokładnie, ile grup i permutacji chcesz przetestować. W przypadku powyższego pytania byłem samotnym programistą-hobbystą - jedno konto jako DBA jest prawdopodobnie w porządku. Jeśli wielu użytkowników miało bezpośredni dostęp do bazy danych (prawdopodobnie zły pomysł na tworzenie aplikacji), to może podziel ich z różnymi uprawnieniami.

Mówienie o uprawnieniach na poziomie tabeli dla prostej aplikacji to po prostu przesada!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Min/maks MySQL dla typu DOUBLE

  2. pokazywanie danych w jednym wierszu (z wielu wierszy)

  3. Wykonaj wiele aktualizacji w jednym zapytaniu SQL przy użyciu PHP

  4. szyny LICZENIE WYBIERZ WYRÓŻNIENIE

  5. JQuery do wypełnienia <tabeli> na podstawie <select>