2009-07-29 13 views
2

ASP.NetアプリケーションはSQL Server 2008を使用します。ほとんどの場合、アプリケーションは非常に制限されたアクセス権を持つSQLアカウントを使用してSQL Serverに接続します。ASP.Netアプリケーションから新しいデータベースを作成する推奨される方法

しかし、しばらくして、新しいデータベースを即座に作成する必要があります。そのため、私たちは高い権限を必要とし、この接続文字列をDMZ内にあるWeb.configに格納するのはちょっと心配です。

SQL Serverマシン(つまり、DMZではなく)で実行するWindowsサービスを作成することで、新しいデータベースの作成要求のテーブルを監視することが考えられますが、過剰な使用のようです。

代替案または推奨される方法についてのご意見はありますか?

答えて

1

接続文字列をレジストリに格納し、指定されたレジストリキーへのアクセスを制限することで保護できます。それはアイデアの1つです。私はMicrosoftからの推薦として.Net 1.1に戻って走りました。このコンセプトは2.0以降でも同じです。ここにはドキュメンテーションへのリンクがあります。

http://msdn.microsoft.com/en-us/library/aa302406.aspx

すでにセキュリティが心配しているように聞こえるので、私はあなたを介して読み取りまたは少なくともMSDNライブラリの「ビルドセキュアASP.Netアプリケーション」セクション全体を実行しまし推測しています。上記のリンクは、そのガイドのハウツーセクションにあります。うまくいけば、これは役に立ちます。

また、web.configに接続情報を保存する場合は、少なくともこれらの部分を暗号化します。

私はちょうどこれを横断しました。おそらくあなたが探していたものにもっと似ています。

http://msdn.microsoft.com/en-us/library/aa302388.aspx#secnetch08_storingsecrets

1

あなたのデータベース接続文字列(つまり、ユーザ名とパスワード)で混合モード認証を使用しているなら、あなたはencrypt the web.configのconnectionStrings要素は、必要があります。

1

ストアドプロシージャを使用してデータベースを作成するとどうなりますか?私はそれを試していない。私が心配しているのは、変数を使ってデータベース名を指定することです。格納されたprocを使用することによって、格納されているprocに対してWeb IDの実行アクセスを許可するだけで済みます。

別の方法として、サービスではなくコンソールアプリケーションを作成する方法があります。その後、ジョブスケジューラを使用して、15分または30分ごとにジョブを実行します。それはサービスを書くよりずっと簡単です。それは単に「即時」のプロセスではありません。私は、Webサイトの更新を引き起こすActive Directoryの作業(私はWeb ID Domain Adminの特権を与えたくない)のためにこれを行います。

関連する問題