sql >> Databáze >  >> RDS >> Mysql

Poskytování uživatelům MySQL jen s minimálními oprávněními

Zde nesouhlasím s Billem a způsob myšlení Atomix je vhodnější. Pokud nelze prokázat opak, Billova odpověď značně zvyšuje riziko ohrožení databáze.

Možná, že pro velmi zkušené vývojáře existuje jiné zabezpečení, ale pro ostatní vývojáře je poskytnutí plného a neomezeného přístupu skriptu k provádění ~cokoli~ k databázi spojeno s problémy, když to není potřeba.

Zde by měl být použit princip nejmenšího privilegia. Pro MySQL mějte super uživatele se všemi oprávněními, který se používá pro vytváření tabulek, drop databáze a tak dále. V ideálním případě není toto uživatelské jméno a heslo nikdy vidět v žádném souboru PHP ani žádném souboru na webovém serveru. (Jako příklad používám PHP, ale to platí i pro jiné webové aplikace). Toto uživatelské jméno a heslo byste použili pouze s něčím jako PHPMyAdmin nebo MySQL Workbench.

Pak pro skripty PHP pořiďte jeden s minimálním požadovaným množstvím, například pouze INSERT, SELECT, UPDATE, možná ani DELETE, v závislosti na vašem skriptu PHP. To by bylo v souborech PHP, to znamená ve skutečnosti pouze JEDEN soubor MIMO kořen dokumentu, jak většina doporučuje.

Důvod je následující:ano, nepotřebujete uživatele MySQL pro každého uživatele webové aplikace. Ale princip nejmenšího privilegia ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) by mělo platit. Pokud je nějak ohrožen váš superuživatel MySQL, protože jste omylem pojmenovali svůj skript připojení k MySQL jako .txt místo .php nebo někdo získal přístup k souborům webového serveru, přinejmenším to „nejhorší“, co může udělat, je SELECT, UPDATE a INSERT. .. Což může způsobit velké problémy tak jako tak, není tak špatné, jako dát jim DROP DATABASE, DROP TABLES a mnohem horší věci.

Navíc v mém současném projektu kvůli agilním vývojovým postupům (nepracuji pro, ale doporučuji http://www.agilealliance .org/ ), jeden nebo dva „netechnickí“ členové týmu přímo používají PHPMyAdmin k provádění přímých změn v databázi MySQL. Je to proto, že není vyžadováno vytvoření CMS pro jednoduché přímé zadávání dat. V tomto případě je pro něj vhodný třetí uživatel MySQL s rozumnými, ale opět „tak akorát“ oprávněními. Nechceme člena týmu ochromit příliš malými oprávněními, ale samozřejmě by neměli mít možnost věci náhodně smazat nebo změnit.

Vzhledem k tomu, že MySQL nemá ROLE (v době, kdy byla položena původní otázka, a podle zákona), je povolení libovolného webového skriptu pouze přistupovat k MySQL pouze s jedním superuživatelem velmi riskantní.



  1. Jak získat seznam nativních funkcí Oracle (NVL, ABS atd.)

  2. Jak změnit sloupec bez vypuštění tabulky v SQL 2008

  3. Při dokončení kurzu aktualizujte externí databázi

  4. SQL:Jak najít duplikáty na základě dvou polí?