私は自分のサイトを作成し、ページにそれを作成して、フォーラム ページが mydb.forum_table、mydb_forum_table2 に対する権限を持つフォーラム mysql ユーザーを使用するようにします。mydb.users や mydb.profiefields などへのアクセス権を持つプロファイル ユーザーをフォトギャラリー、ブログ、チャットなどで使用するためのプロファイル ページ...これが正しい方法です。私は最小権限の原則を考えていますが、他の有名な CMS がそれを行うのを見たことがないのはなぜでしょうか!
2 に答える
データベースの重要なリソースの 1 つは接続です。通常、データベースは最大数の接続で構成されており、プロセスがクエリを作成する必要があるたびに、そのために接続が必要になります。データベース接続は、作成するのに費用のかかるオブジェクトです。時間とメモリが必要です。また、最も重要なことは、特定のユーザーに対して接続が確立されることです。一般に受け入れられている Web アプリケーションの「ベスト プラクティス」は、アプリケーションがデータベース接続を必要とする場合に、使用可能な接続のプールをチェックすることです。プールに空き接続がある場合、Web アプリはその接続をプルし、必要に応じて使用してから、プールに戻して再利用します。空き接続がない場合、アプリは新しい接続を作成して使用し、再利用のためにプールに配置します。
複数のデータベース ユーザーを (特権管理のために) 使用するアプリケーションを扱っていて、接続プーリングを使用する必要がある場合、アプリケーションは多くのプール (ユーザーごとに 1 つ) を確立する必要があります。使用しているデータベース ユーザーごとに少なくとも 1 つの接続。これは非効率的で、エラーが発生しやすく、不必要に複雑です。
アプリケーションからデータへのアクセスを制限することを真に意図している場合は、データベースがビューに対してどの程度サポートしているかを調査する必要があります。ビューが十分にサポートされている場合は、アプリケーションの任意の部分のニーズに合わせてカスタマイズされたビューを作成できます。
私のお勧めは、1 人のデータベース ユーザーに固執し、空いた時間をアプリケーションのデバッグに費やすことです。より良い結果が得られ、悪化する DBA が少なくなります。
私の理解が正しければ、質問は、モジュールが使用するテーブルのアクセス許可に基づいてモジュール アクセス制御を実装することです。
モジュールとテーブルの間のリンクを維持するのは複雑で、モジュールがアクセスする各テーブルのアクセス許可を確認する必要があるのは時間がかかると思います。