W każdym systemie w skali rzeczywistej (tj. Nie jest to projekt osobisty), typy użytkowników będą się różnić w zależności od środowiska, więc nie jest to takie proste.
We wszystkich środowiskach aplikacja powinna mieć to, czego potrzebuje i nie więcej (ogólnie jest to „wybierz / wstaw / aktualizuj na wszystkich tabelach” i „wykonaj na wszystkich procedurach”. W większych systemach, w których możesz mieć oddzielnych użytkowników aplikacji do różnych zadań (dla instancja jedna aplikacja jest odpowiedzialna za wprowadzanie danych cenzora, a inna za generowanie raportów), powinieneś oddzielić ich uprawnienia, aby mieli najmniej potrzebnych im danych (użytkownik raportujący prawdopodobnie nie potrzebuje i nie pisze praw). Upewnij się, że replikujesz to w teście środowisk, jeśli je masz: widziałem, jak kod się przewraca, gdy awansował do Live, który działał w teście, ponieważ wszystko w środowisku testowym uzyskiwało dostęp do DB as sa
(odpowiednik MSSQL root
).Najlepiej byłoby, gdyby użytkownik aplikacji nie miał żadnych uprawnień, które pozwalałyby mu zmieniać schemat (CREATE
,, DROP
...) - są wyjątki, ale jest ich niewiele.
root
jest dobrze root
. W produkcji jest to tylko Twój DBA i powinien być rzadko używany - tylko do konserwacji systemu (aktualizacje do projektu DB itp.) I monitorowania. W przypadku dużego systemu, szczególnie w środowiskach regulowanych, w których musisz zachować ścisłą kontrolę nad osobami do celów rozliczeniowych, możesz w ogóle nie pozwolić jednemu root
użytkownikowi i spróbować rozdzielić uprawnienia na mniejsze rolki (nie jestem pewien, jak daleko możesz się posunąć z tym w mysql, ale możesz być dość drobnoziarnisty w MSSQL, Oracle i tak dalej).
Użytkownicy programiści: nie powinni mieć żadnego dostępu do środowiska na żywo. Jest to jeden z powodów, dla których użytkownicy aplikacji nie powinni mieć schematu wpływającego na prawa: ktoś mający dostęp do konta programisty może potencjalnie obejść blokadę w ten sposób. Również w środowiskach testowych zwykle nie mają dostępu: przesyłają łaty do QA, a DBA (prawdopodobnie używa root
użytkownika) do QA zastosuje aktualizacje do środowiska testowego (w rzeczywistości jest to często zautomatyzowane w dużych organizacjach, więc QA DBA jest w rzeczywistości zestawem skryptów, które kontrolują przebudowę środowiska testowego dla każdego cyklu). W środowiskach programistycznych, zwłaszcza jeśli deweloperzy mają własne lokalne kopie uruchomionej usługi, użytkownicy ci powinni oczywiście mieć pełny dostęp do wszystkiego, aby móc eksperymentować.
Powyższe zawiera jednak ogólne uwagi: aby sformułować jakieś konkretne zalecenia, musielibyśmy dowiedzieć się znacznie więcej o twoich aplikacjach i środowiskach, w których działają. Środowisko docelowe jest czasem ważniejsze niż mogłoby się wydawać: w zależności od środowiska biznesowego prawa użytkowników mogą być nawet podyktowane dość bezpośrednio przepisami prawa, nawet w fazie rozwoju, jeśli klienci kiedykolwiek dadzą ci dostęp do prawdziwych danych w celach diagnostycznych.