4

Ruby と MySQL を使用して単純なデータベース Web アプリケーションを作成しているとします。データベースへのアクセスは、Ruby コードによって制御されます。Ruby コードがデータへのアクセスに使用するユーザー名は、データベース上の唯一の正規ユーザーです。そのユーザーが「root」であることは理にかなっていますか? または、アプリケーション専用の 2 番目のユーザーを作成する際に、追加のセキュリティがありますか?

4

6 に答える 6

3

シンプルです。root をすべての操作ができるメイン ユーザーと考えてください (デフォルト)。

彼がデータベース全体をダンプしたい場合は、銀行システムを通過するための偽のアカウントを作成するためのデータを作成したい場合は、そうすることができます。したがって、コードが十分に安全でない場合 (これは通常、非常によくあることです)、重大なセキュリティ上の問題があります。

通常、「基本的な」セキュリティ (本当に基本的なもの) は次のようになります。単純なユーザーを作成し、特定のデータベースで SELECT、INSERT、UPDATE、および DELETE の権限を (GRANTS を使用して) 彼に付与します。

テーブルを選択してロックし、ビューを表示してダンプ (データベースの保存) を実行できる別のユーザーを作成します。

より「複雑な」システムでは、アクセスする対象に応じて、多くのユーザーを作成する必要があります。これは単純な理由によるものです。誰かが SQL インジェクション アクセスを取得した場合、ユーザーが単一のビューにしかアクセスできない場合 (たとえば)、データベース全体ではなく、これはセキュリティ上の問題ですが、最悪の問題ではありません...また、ビューはそのためによく使用されます...

最後に、必要に応じてトリガーを忘れないでください (ログテーブルなど)。テーブルでの挿入または更新または削除を無効にします 。アップデート

于 2012-06-15T23:57:30.323 に答える
2

データベース内のすべてのデータを編集または削除するだけでなく、root ユーザーには、以下にアクセスできるFILE権限もあります。

  • LOAD DATA INFILEサーバーマシン上の任意のファイルを読み取るために使用できます。
  • LOAD DATA LOCAL INFILEクライアント マシン (Web サーバー マシン) 上のファイルを読み取ることができます。
  • SELECT ... INTO OUTFILEサーバーマシン上にファイルを作成できます。

これが、アプリケーションが必要な権限のみを持つ必要がある理由であり、MySQL サーバー デーモンをサーバー マシン上で権限のないユーザーとして実行する必要がある理由でもあります。

マニュアルの一般的なセキュリティの問題も参照してください。

于 2012-06-16T14:56:37.260 に答える
1

全員/モノがルートである場合、監査可能性が失われ、攻撃を阻止するためにアプリを制限する機能が失われます (つまり、アプリは機密情報のこのセグメントを必要とせず、ユーザーから隔離します)。誰かがアプリを侵害した場合、アカウントを一時停止することができます。

于 2012-06-15T23:48:06.190 に答える
0

ユーザーを「root」 にはしません。

そのアプリケーション専用の別のユーザー名とパスワードを作成し、その仕事を行うために必要なアクセス許可のみを付与します。

于 2012-06-15T23:48:22.220 に答える
0

新しいユーザーを作成し、必要な権限のみを与えます (通常、SELECT、UPDATE、INSERT、および DELETE でうまくいきます)。そのようにして、コードが意図しない方法で操作される可能性を制限します。

于 2012-06-15T23:50:56.180 に答える
0

「root」、または一般的に言えば、スーパー ユーザー権限を持つユーザーは、パスワードを変更したり、アカウントを削除したりできるため、自分のデータベースにアクセスできなくなります。

サーバーがアプリケーションを 1 つしかホストしていない場合は、権限の低いアカウントをいくつか作成する必要はないかもしれません。ただし、アプリケーションごとに少なくとも 1 人のユーザーを作成するのが一般的です。これにより、1 つのアプリケーションが危険にさらされても、他のアプリケーション (および基になるデータ) が危険にさらされることはありません。

于 2012-06-16T02:15:38.393 に答える