sql >> Database teknologi >  >> RDS >> Mysql

Giver MySQL-brugere kun de mindste privilegier

Jeg er uenig med Bill her, og Atomix' tankegang er mere passende. Medmindre det kan påvises andet, øger Bills svar i høj grad risikoen for, at databasen kompromitteres.

Måske for meget erfarne udviklere er der anden sikkerhed på plads, men for andre udviklere er det at give et script fuld, ubegrænset adgang til at gøre ~hvad som helst~ til en database at bede om problemer, når der ikke er behov for det.

Princippet om mindste privilegium bør være i brug her. For MySQL skal du have en superbruger med alle privilegier, som bruges til at oprette tabeller, slippe database og så videre. Ideelt set ses dette brugernavn og adgangskode aldrig i nogen PHP-fil eller nogen fil på webserveren. (Jeg bruger PHP som et eksempel, men det gælder for andre webapplikationer). Du ville kun bruge dette brugernavn og adgangskode med noget som PHPMyAdmin eller MySQL Workbench.

Så, for PHP-scripts, skal du have et med det minimum, der kræves, såsom bare INSERT, SELECT, UPDATE, måske ikke engang DELETE, afhængigt af dit PHP-script. Dette ville være i PHP-filerne, det vil sige faktisk kun EN fil UDEN FOR dokumentroden, som det anbefales af de fleste.

Årsagen er således:ja, du behøver ikke en MySQL-bruger for hver webapplikationsbruger. Men princippet om mindste privilegium ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) skal gælde. Hvis din MySQL-superbruger på en eller anden måde er kompromitteret, fordi du ved et uheld har navngivet dit MySQL-forbindelsesscript som .txt i stedet for .php, eller hvis nogen har fået adgang til webserverfilerne, er i det mindste det "værste" de kan gøre SELECT, UPDATE og INSERT. .. Hvilket kan give store problemer alligevel, er ikke så slemt som at give dem DROP DATABASE, DROP TABELLER og meget værre ting.

Derudover, i mit nuværende projekt på grund af agil udviklingspraksis (jeg arbejder ikke for, men anbefaler http://www.agilealliance. .org/ ), bruger et eller to "ikke-teknologiske" teammedlemmer direkte PHPMyAdmin til at foretage direkte ændringer i MySQL-databasen. Dette skyldes, at det ikke er nødvendigt at oprette et CMS til simpel direkte dataindtastning. I dette tilfælde er en tredje MySQL-bruger med rimelige, men igen "lige nok" privilegier egnet til dem. Vi ønsker ikke at lamme teammedlemmet med for få privilegier, men de skal selvfølgelig ikke være i stand til ved et uheld at slette eller ændre ting.

Da MySQL ikke har ROLLER (på det tidspunkt, hvor det oprindelige spørgsmål blev stillet, og som pr. Bill), så er det meget risikabelt at tillade ethvert webscript at få adgang til MySQL med kun én superbruger.



  1. MySQL - Max() returnerer forkert resultat

  2. Prag PostgreSQL Meetup

  3. Hvorfor kan jeg ikke afinstallere mysql-5.5 og installere mysql-5.6 på Amazon Linux-maskine?

  4. MySQL ALTER TABLE tager lang tid i lille bord