sql >> データベース >  >> RDS >> Mysql

MySQLユーザーに最小限の特権を提供する

    私はここでビルに同意しません、そしてアトミックスの考え方はより適切です。他の方法で実証できない限り、ビルの答えはデータベースが危険にさらされるリスクを大幅に高めます。

    おそらく非常に経験豊富な開発者にとっては他のセキュリティがありますが、他の開発者にとっては、データベースに「何でも」行うための完全で自由なアクセスをスクリプトに与えることは、必要がないときに問題を引き起こします。

    ここでは、最小特権の原則を使用する必要があります。 MySQLの場合、テーブルの作成、データベースの削除などに使用されるすべての権限を持つスーパーユーザーがいます。理想的には、このユーザー名とパスワードは、PHPファイルやWebサーバー上のファイルには表示されません。 (例としてPHPを使用していますが、他のWebアプリケーションにも適用されます)。このユーザー名とパスワードは、PHPMyAdminやMySQLWorkbenchなどでのみ使用します。

    次に、PHPスクリプトの場合、PHPスクリプトによっては、INSERT、SELECT、UPDATEだけでなく、DELETEでさえないなど、最低限必要なものを用意します。これはPHPファイルに含まれます。つまり、ほとんどの場合推奨されているように、実際にはドキュメントルートの外にあるファイルは1つだけです。

    したがって、理由は次のとおりです。はい、すべてのWebアプリケーションユーザーにMySQLユーザーは必要ありません。ただし、最小特権の原則( http://en.wikipedia.org/wiki/Principle_of_least_privilege )を適用する必要があります。誤ってMySQL接続スクリプトに.phpではなく.txtという名前を付けたため、または誰かがWebサーバーファイルにアクセスしたために、MySQLスーパーユーザーが危険にさらされた場合、少なくとも彼らが実行できる「最悪」はSELECT、UPDATE、およびINSERTです。 ..とにかく大きな問題を引き起こす可能性がありますが、DROP DATABASE、DROP TABLES、およびはるかに悪いものを与えるほど悪くはありません。

    さらに、アジャイル開発の実践のために私の現在のプロジェクトでは(私は働いていませんが、http://www.agileallianceをお勧めします.org / )、1人または2人の「非技術」チームメンバーがPHPMyAdminを直接使用して、MySQLデータベースに直接変更を加えています。これは、単純な直接データ入力用のCMSを作成する必要がないためです。この場合、妥当であるが「十分な」特権を持つ3番目のMySQLユーザーが適しています。特権が少なすぎるチームメンバーを不自由にしたくはありませんが、もちろん、誤って削除したり変更したりすることはできません。

    MySQLにはロールがないため(元の質問が行われた時点で、Billによると)、1人のスーパーユーザーだけで任意のWebスクリプトがMySQLにアクセスできるようにすることは非常に危険です。



    1. MySQLにビュークエリにINDEXを使用させるにはどうすればよいですか?

    2. バージョン782であるため、データベースを開くことができません。このサーバーはバージョン706以前をサポートしています。ダウングレードパスはサポートされていません

    3. MySQLのようなFirebaseからカウントデータを取得する

    4. array_push使用時のエラー-最初の引数は配列である必要があります