0

ユーザーが作成したデータをSQLAzure/ SQL Serverに保存し始めたい、ユーザーのPCにリッチクライアントプログラムをインストールしています。潜在的な匿名ユーザーは、名前、電子メールアカウント、およびSQL Azure /SQLServerに保存されるパスワードを入力します。それから彼らは彼ら自身のデータを生成し始めるでしょう。おそらく1000人のユーザーのボリュームを見込んでいます。

それらのユーザーが自分のデータに対して自分のクエリを実行したい場合がありますが、明らかに、他のユーザーのデータを表示できないようにする必要があります。

データのセキュリティを確保する最善の方法は、各ユーザーに独自のSQLAzureアカウントとパスワードを発行することだと思います。SQL Azureユーザーと自分だけが知っている長いパスワードを設定します。このパスワードには、SQL Serverアカウントを作成し、ログインしてユーザーを役割に追加するSPに適切なパラメーターを渡して、いくつかのストアドプロシージャを実行する権限しかありません。私が作成しました。

明らかに、デバッグツールを実行している誰かがユーザー名とパスワードを理解することができますが、これは大したことではないと思います。特定のSQLAzureアカウントで実行できるのは、いくつかのSPを実行することだけである場合、悪意のある個人がそれを実行し始めたらどうなるでしょうか。支払いが必要になる前に、非常に限られた量のデータのみをアップロードすることを許可します。

ユーザーは、以下を使用するストアドプロシージャを使用してのみレコードを挿入できます。

SELECT @uName=SYSTEM_USER 

適切な親レコードのみを選択します。ユーザーが実行できるすべてのストアドプロシージャには、必要に応じて上記があり、自分のレコードでのみ作業できるようになっています。

すべてのビューには、次のようなWHERE句が埋め込まれています。

WHERE tbLoginName = SYSTEM_USER.

私はSQLServerを初めて使用するため、いくつかの基本的な概念が欠落している可能性があるため、コメントをいただければ幸いです。

4

3 に答える 3

0

あなたが言及したアプローチの潜在的な問題を指摘したいと思います。マスターSQLAzureアカウントには、新しいアカウントを作成し、特定のテーブルへのアクセスを許可する権限が必要です。つまり、マスターアカウント自体も、これらすべてのテーブルにアクセスできる必要があります。マスターアカウントをクライアント側に保存すると、賢いユーザーがすべてのユーザーデータにアクセスできるようになります。

私の経験から、クライアント側のアプリケーションからデータベースに直接接続すると、ほとんどの場合、ソリューションの安全性が低下します。テスト目的でそれを行うこともできますが、実際のソリューションでは、サービスを使用することをお勧めします。WindowsAzureでサービスをホストできます。その後、サービスはデータベースにアクセスし、クライアントアプリケーションはサービスにのみアクセスできます。このようにして、ASP.NETメンバーシップなど、任意のメカニズムを使用してクライアントを認証できます。

よろしくお願いします、

明徐。

于 2012-05-18T06:37:59.680 に答える
0

基本的に、物理的な2層データベース接続を作成し、クライアントアプリケーションがデータベースに直接接続できるようにします。これは、セキュリティやパフォーマンスなど、さまざまな点で問題になります。セキュリティの観点から、顧客が接続する場所を制御するのではなく、世界中の誰もがすべての顧客のuid / pwdをハッキングしようとするために、ファイアウォールルールを広く開いておく必要があります。また、ユーザーIDを1つだけ使用するのではなく、ハッカーは最大1,000のユーザーIDを使用できます...

2番目の問題はパフォーマンスです。アプリケーションは接続プールを活用できなくなり、データベースサーバーに過度のストレスが発生し、ある時点でスロットルの問題が発生する可能性があります。Webサービスを使用し、ASP.NETメンバーシップを使用してログインを管理し、サービスアカウント(つまり、同じuid / pwd)を使用してデータを取得すると、すべての要求に対して接続文字列を同じに保つと、接続プールを正しく活用できるようになります。 。

Webサービス層を使用すると、2層アーキテクチャでは提供できない多数の新しいオプションをすぐに利用できます。これには、ビジネスとデータアクセスロジックの集中化、パフォーマンス向上のためのキャッシュの追加、集中化された場所での監査の追加、顧客の場所に何も再配置せずにアプリケーションの一部を更新できるようにすることなどが含まれます...

クラウドでは、Webサービスを活用する方がはるかに優れています。

私の2セント。

于 2012-05-18T12:42:44.797 に答える
0

http://msdn.microsoft.com/en-us/library/ms189751.aspxで指摘されているように、問題は次のとおりです。

SQL Azureでは、サーバーレベルのプリンシパルログイン(プロビジョニングプロセスによって作成される)またはマスターデータベースのloginmanagerデータベースロールのメンバーのみが新しいログインを作成できます。

これらのアカウントは、ログインを変更および削除することもできます。したがって、これらのアカウントをクライアントアプリケーションに埋め込むと、基本的にすべてのユーザーに他のユーザーアカウントを変更/削除する権限が付与されます。平均的なユーザーはそうしませんが、ハッカーはそうします。そのため、信頼できるユーザー(IT管理者など)のみがアプリの使用を許可されていない限り、クライアントアプリケーションにSQLAzureログインを管理させることはできません。

よろしくお願いします、

明徐。

于 2012-05-21T08:00:38.847 に答える