2012-03-18 12 views
1

私が取り組んでいるSaaSプラットフォームを持っています。 PHPで書かれ、MySQLデータベースを使用します(PHP PDOクラスを使用)。SaaSプラットフォーム - 各ユーザーまたは1つのマスターアカウントごとに異なるデータベースユーザー

アプリケーションはすでに機能しており、インスタンスごとに個別のデータベースを使用することに決めました。

複数のデータベースを使用する理由の1つは、クライアントデータが分離されていることを保証することです。これにより、インスタンスをオンプレミス版に簡単に移行することもできます。

セキュリティは常に私が心配するものです。私はこのシステムが生きる前に可能な限り安全であることを保証したい。

現在、私たちは単一のMySQLユーザ名&を使用しており、そのデータベースには(特定のMySQLファーム上の)すべてのデータベースにアクセスできます。

理論上、攻撃者が別のデータベースにアクセスする可能性があります(ユーザー名&、PDO /データベース接続後にパスワードが設定されていませんが、「使用」などのクエリを実行できる可能性があります。データベースB ")。

これは私が気にするべきことですか?たとえば、単純なSQLエラーがクライアント・データを公開する可能性があるため、データベース・パーティショニングを使用するSaaSプラットフォームでは、セキュリティはあまり安全ではありません。

私はすでに異なるデータベースユーザ名&のパスワードを使用して調べ始めましたが、SaaSプラットフォームの複雑さに加えて、物事を単純にすることは常に良い考えです。

ありがとうございます!


私は、各インスタンスごとに異なるユーザー名とパスワードを使用することに決めました。

これはセキュリティの別の層であり、傷つけることはありません。理論的に

+0

このシステムでPMを送信する方法がわかりません。専有物を作るか、または会社/チームの一部ですか? – phpmeh

+0

こんにちはPhpmeh。返信いただきありがとうございます。私はあなたが何を意味するか分からない、私はこの製品(それは社内に建設されている)の主な開発者です。システムの準備が整うと、外部企業にホストされる可能性があります。 –

+0

はい、私はちょうど興味がありました。私はSaaSスタイルを導入する予定のビジネス管理ソフトウェアを構築しています。私はジュニア開発者が私のために働いており、私たちは6ヶ月間プロジェクトに取り組んできました。それでも、それは非常に遅いです。潜在的に人々と力を合わせることを常に望んでいます。 – phpmeh

答えて

1

セキュリティ違反があった場合、PDO /データベースの接続が行われたが、彼らは 実行aにできる可能性があります後、攻撃者は (別のデータベースにアクセスすることができ、ユーザ名&パスワードは 設定されていないかもしれません「データベースBを使用する」などのクエリ)。

これは私が気にするべきことですか?たとえば、単にデータベース分割を使用するSaaS プラットフォームでは、単純なSQLエラーがクライアントデータを公開する可能性があるため、セキュリティはあまり保護されていません。

1)セキュリティ上の権利を行使している場合は、手動でクエリを書き込むことは非常に困難ではありません。
2)あなたがレイアウトした問題は、DB間で異なるユーザー/パスワードを提唱する理由です。
3)私は複数のDB接続を奨励するもう一つの理由...私は操作で約10人の会社を持つ製造制御ソフトウェアを作った。データベースが巨大になるのにそれほど時間はかかりませんでした。複数のデータベースでは、1より大きいサイズのコントロールが維持されます。
4)1つのデータベースしか使用していないと、クライアントが別の会社の情報に誤ってアクセスしてしまうという問題が発生します。

私はまだデータベースのパーティション化に関して残っている質問はまだありません(私はまだ研究していません)... 1つのデータベースへの100の接続を処理する方法をよく理解しています。代わりに何百ものデータベースへの接続を処理するとどうなりますか?

+0

1)もちろん、すべてのクエリはPHP PDOクラスのバウンドパラメータを経由します。 2)これは私の主な質問です。 3)はい、複数のデータベースを使用します。 4)合意しました。これが複数のDBを使用している別の理由です。 私は接続が大きな問題を引き起こすとは思わないが、余分な接続には多少のメモリが必要になるだろう。 –

関連する問題