4

SQL サーバー認証を使用してデータベースに接続するアプリケーションを開発しました。インストールのセットアップでは、管理者の資格情報 (SQL サーバー認証用) を要求し、新しいユーザーを作成します (アプリケーション固有)。セットアップには、特定のユーザーのみを作成するための管理者資格情報が必要です。また、セットアップによってデータベースが作成され、このデータベースが新しく作成されたユーザーにマップされます。MIXED モード認証 (Windows と SQL サーバーの両方) をサポートするように要件が変更されました。つまり、インストールのセットアップには、Windows モードまたは SQL モードを選択するオプションがあります。ユーザーは、Windows または SQL のいずれかを選択できます。SQL を選択した場合、ユーザー名とパスワードを入力する必要があります。私の質問は次のとおりです。

1- ユーザーが WINDOWS モードを選択した場合、アプリケーション固有のユーザーを作成する必要がありますか? はいの場合、新しいユーザーを作成する方法を教えてください。

2-アプリケーション全体で、「ユーザー名」(インストールのセットアップ中に作成されたアプリケーション固有のユーザー)と「パスワード」で接続文字列を使用しました。目的を果たすために別の接続文字列を作成する必要がありますか?

4

2 に答える 2

1

[1] いいえ、その必要はありません。あなたはそうかもしれませんし、それはうまくいきますが、これは必須ではありません。Windows 認証では、プロセスは、現在コードを実行しているユーザーの SQL サーバーに資格情報を提供します。ほとんどの場合、これはプロセスを開始したユーザーになります。必要に応じて、各スレッドのユーザーを変更できます。 Thread.CurrentPrincipalを参照してください。しかし、これは物事を非常に複雑にするため、そうしないことをお勧めします。

ほとんどの場合、アプリをサービス、Windows サービス、または IIS アプリケーションとしてデプロイします。その後、SQL サーバーで許可する必要がある特定の Windows システム アカウントで実行されます。

Windows システム アカウントを使用しない場合は、パスワードの有効期限切れ、パスワードの安全な保存、他の実行可能ファイルを実行するためのユーザー名の不正使用などの問題に直面します。

Windows にユーザーを追加するのは簡単です。 「ユーザー アカウントを Windows [バージョン エディション] に追加する方法」を検索するだけですが、最初にシステム アカウント (Local Service、Network Service など) の使用を検討してください。

[2] 接続文字列を名前で参照するように、アプリケーションをリファクタリングすることをお勧めします。


構成管理を実行可能ファイルから分離する必要があります。つまり、1 つのアプリケーションが構成を準備し、別のアプリケーションがそれを使用します。たとえば、インストーラーが構成文字列を書き込み、アプリケーションが構成文字列を使用し、データベースへのアクセスが許可されている限り、アプリケーションは内部の内容を気にしません。

于 2013-09-09T14:07:01.893 に答える