SQL Server をインストールするときのセーフ モードには 2 つのオプションがあります。両者の違いは、どのソフトウェアが認証プロセスを実行するかです。認証は、SQL Server に接続しているユーザーの ID を確認するプロセスです。認証が実行されると、SQL Server は、ユーザーがデータベースなどの要求されたリソースに接続する権限を持っているかどうかを確認できます。ユーザーがデータベースに接続する権限を持っている場合、SQL Server は接続要求の成功を許可します。それ以外の場合、接続は失敗します。ユーザーの権限を確認するこのプロセスは、承認とも呼ばれます。
· Windows 認証 (信頼できる認証または統合セキュリティとも呼ばれる) は、接続要求を行う Windows ユーザーの ID を使用して、データベースへの承認を実行します。この場合、接続文字列で明示的なユーザー名とパスワードを指定する必要はありません。 ASP.NET は、「ASPNET」(IIS 6.0 では「ネットワーク サービス」) という名前のローカル ユーザーとして実行されるため、Windows 認証を使用する場合、SQL はこのユーザーにデータベースを使用する権限があるかどうかを確認します。この時点では、すべての ASP.NET アプリケーションが同じユーザーで実行されているため、セーフ モードではそれらのアプリケーションが同等に扱われます。各アプリケーションを個別の ASP.NET プロセスで実行すること (各アプリケーションを個別のユーザーが実行すること) や、接続要求を行うブラウザ クライアントの Windows ユーザー ID を偽装することは可能ですが、これらは本書の範囲外です。 。ただし、クライアントの偽装は、Web アプリケーションにおける Windows 認証の最も一般的な使用法です。
· SQL 認証は、明示的に指定されたユーザー名とパスワードを、(オペレーティング システムを介さずに) SQL Server 内で構成されたユーザーと照合してチェックします。この場合、ASP.NET プロセスで実行されている各アプリケーションは個別の証明書を使用してデータベースに接続できるため、アプリケーションを合理的に分離できます (アプリケーション A は、B のユーザー名とパスワードを持っていない場合、データベースに接続できません)。 。B のデータベースに接続できません)。これは、デプロイされた Web アプリケーション、特に共有ホスティングの場合に使用される最も一般的な認証モードです。小さな欠点は、アプリケーションが接続に使用するユーザー アカウントのパスワードを保持する必要があり、このパスワードが悪意のあるユーザーによって取得された場合、データベースのセキュリティが危険にさらされることです。ただし、本書の後半で説明するように、ASP.NET では、SQL 認証パスワードを暗号化された形式で Web.config ファイルに保存する安全な方法が提供されているため、パスワードが取得されるリスクが軽減されます。
· 混合モードは、Windows 認証と SQL 認証の両方を許可する SQL Server の構成です。
SQL Server または SSE をインストールするときは、認証モードを選択する必要があります。 SQL Server には、セキュリティ手順中に選択を支援するウィザードがありますが、SSE では、デフォルトの選択は Windows 認証です。 SQL 認証をインストールする場合は、明示的に構成する必要があります。この記事では Windows 認証を使用します。
SQL Server または SSE をインストールしている場合は、RegEdit を開いて (もちろん最初にバックアップする必要があります)、HKey_Local_Machine/Software/Microsoft/Microsoft SQL Server を見つけて LoginMode を検索することで、指定された認証モードを表示できます。値 1 の登録サブキーは Windows 認証を表し、値 2 は混合認証モードを表します。
表 3-1 は、これらのモードの違いをまとめたものです。
表 3-1
Windows 認証 | SQL 認証 | ||
置換可能な名前 | 信頼された認証 統合セキュリティ | いいえ、ただし、混合モード認証では、Windows または SQL 認証の使用が許可されます。 | |
インターネット | ユーザー | の | |
リスト | と認証プロセス | のデフォルト | |
のインストールでは | 、 | インストール | |
接続文字列 | Trusted_connection=true | ||
=本当の | ユーザー=ユーザー名; パスワード=パスワード | ||
ASP.NET Web アプリケーション ユーザー | ASP.NET プロセス、ASPNET (IIS 5.x)、またはネットワーク サービス (IIS 6) | SQL ユーザーに | |
、ユーザーの SQL イベントと Windows アクティビティ追跡を制御できるという | 利点 | があります | 。オペレーティング システムに関係なく、新しいアカウントを作成せずにホスト マシンに展開できます。 ホストされているイントラネット サイトには中程度のスキルのみが必要です アプリケーションが異なる証明書を使用して各データベースに接続するためのより柔軟な方法を提供します。 |
欠点 | Web アプリケーションに Windows 証明書を与えると、OS のアクセス許可の範囲が大きくなりすぎる可能性があります。 | パスワードは Web アプリケーションに保存されます (これは、 Windows 認証の場合)。パスワードが Web.config ファイルに保存され、暗号化されていることを確認します。 sa 証明書を使用した Web アプリケーションの低レベルの操作を許可します。 ASP.NET Web アプリケーション用に常に新しい証明書を作成し、必要なアクセス許可のみを付与します。 |