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

Fornire agli utenti MySQL solo i privilegi minimi

Non sono d'accordo con Bill qui e la linea di pensiero di Atomix è più adatta. A meno che non possa essere dimostrato diversamente, la risposta di Bill aumenta notevolmente il rischio che il database venga compromesso.

Forse per gli sviluppatori molto esperti c'è un'altra sicurezza in atto, ma per altri sviluppatori che danno a uno script l'accesso completo e illimitato per fare ~qualsiasi cosa~ a un database è fonte di problemi, quando non ce n'è bisogno.

Il principio del privilegio minimo dovrebbe essere in uso qui. Per MySQL, avere un superutente con tutti i privilegi che viene utilizzato per creare tabelle, eliminare database e così via. Idealmente questo nome utente e password non vengono mai visti in nessun file PHP o in nessun file sul server web. (Sto usando PHP come esempio ma si applica ad altre applicazioni web). Utilizzeresti solo questo nome utente e password con qualcosa come PHPMyAdmin o MySQL Workbench.

Quindi, per gli script PHP, averne uno con il minimo richiesto, come INSERT, SELECT, UPDATE, forse nemmeno DELETE, a seconda del tuo script PHP. Questo sarebbe nei file PHP, cioè in realtà solo UN file FUORI dalla radice del documento, come raccomandato dalla maggior parte delle persone.

Il motivo è quindi:sì, non è necessario un utente MySQL per ogni utente di applicazioni web. Ma principio del privilegio minimo ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) dovrebbe applicarsi. Se in qualche modo il tuo super utente MySQL è compromesso perché hai accidentalmente chiamato il tuo script di connessione MySQL come .txt invece di .php, o qualcuno ha ottenuto l'accesso ai file del server web, almeno il "peggio" che possono fare è SELECT, UPDATE e INSERT. .. Che mentre può comunque causare grossi problemi, non è così male come fornire loro DROP DATABASE, DROP TABLES e cose molto peggiori.

Inoltre, nel mio attuale progetto a causa delle pratiche di sviluppo agile (non lavoro ma consiglio http://www.agilealliance. .org/ ), uno o due membri del team "non tecnici" utilizzano direttamente PHPMyAdmin per apportare modifiche dirette al database MySQL. Questo perché non è richiesta la creazione di un CMS per il semplice inserimento diretto dei dati. In questo caso, un terzo utente MySQL con privilegi ragionevoli ma, ancora una volta, "quanto basta" è adatto a loro. Non vogliamo paralizzare il membro del team con privilegi troppo limitati, ma ovviamente non dovrebbe essere in grado di eliminare o modificare le cose accidentalmente.

Dal momento che MySQL non ha RUOLI (al momento della domanda originale e come da Bill), consentire a qualsiasi script Web di accedere a MySQL con un solo Super User è molto rischioso.