SQL Server での認証 (ADO.NET)

更新 : November 2007

SQL Server は、Windows 認証モードと混合モードの 2 つの認証モードをサポートしています。

  • Windows 認証は既定の認証モードです。この SQL Server セキュリティ モデルは、Windows と緊密に統合されていることから統合セキュリティと呼ばれることもあります。特定の Windows ユーザーおよび Windows グループが、信頼されたアカウントとして SQL Server へのログインが許可されます。既に認証済みの Windows ユーザーは別途資格情報を提示する必要はありません。

  • 混合モードは、Windows による認証と SQL Server による認証の両方がサポートされます。SQL Server 内でユーザー名とパスワードのペアが管理されます。

Bb669066.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

できるだけ Windows 認証を使用することをお勧めします。Windows 認証では、暗号化された一連のメッセージを使用して SQL Server のユーザーを認証します。SQL Server ログインを使用した場合、SQL Server のログイン名とパスワードがネットワーク経由で渡されるためセキュリティが低下します。

Windows 認証では、既に Windows にログオンしているユーザーが別途 SQL Server にログオンする必要はありません。次の SqlConnection.ConnectionString では、Windows 認証が指定されているため、ユーザー名もパスワードも不要です。

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
Bb669066.alert_note(ja-jp,VS.90).gifメモ :

ログインは、データベース ユーザーとは異なります。ログインまたは Windows グループは、別個の操作でデータベース ユーザーまたはロールにマップする必要があります。その後、ユーザーまたはロールに対してデータベース オブジェクトにアクセスするための権限を付与することになります。

認証のシナリオ

通常、以下の状況では Windows 認証が最良の選択肢です。

  • ドメイン コントローラが存在する。

  • アプリケーションとデータベースが同じコンピュータ上に存在する。

  • SQL Server Express のインスタンスを使用している。

次の状況では、SQL Server ログインを使用することがよくあります。

  • ワークグループが存在する。

  • ユーザーが別の信頼されていないドメインから接続する。

  • ASP.NET などのインターネット アプリケーション。

Bb669066.alert_note(ja-jp,VS.90).gifメモ :

Windows 認証を指定しても、SQL Server ログインは無効になりません。高い権限を持つ SQL Server ログインを無効にするには、Transact-SQL ステートメント ALTER LOGIN DISABLE を使用します。

ログインの種類

SQL Server 2000 では、次の 3 種類のログインがサポートされています。

  • ローカル Windows ユーザー アカウントまたは信頼されたドメイン アカウント。SQL Server が Windows に依存する形で Windows ユーザー アカウントを認証します。

  • Windows グループ。Windows グループへのアクセス権を付与すると、そのグループに属しているすべての Windows ユーザー ログインにアクセス権が付与されます。

  • SQL Server ログイン。SQL Server はユーザー名およびパスワードのハッシュを master データベースに格納し、内部の認証方法を使ってログイン試行を検証します。

Bb669066.alert_note(ja-jp,VS.90).gifメモ :

SQL Server 2005 では、証明書または非対称キーから作成されたログインが追加されています。このログインはコード署名にのみ使用されます。SQL Server への接続には使用できません。

混合モード認証

混合モード認証を使用する場合は、SQL Server に格納される SQL Server ログインを作成する必要があります。さらに、SQL Server のユーザー名とパスワードを実行時に指定する必要があります。

Bb669066.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

SQL Server をインストールすると、sa ("system administrator" の略) という名前の SQL Server ログインが作成されます。sa ログインには強力なパスワードを割り当て、アプリケーションで sa ログインを使用することは避けてください。sa ログインは、サーバー全体に対する取り消し不可能な管理者の資格情報を持つ sysadmin 固定サーバー ロールにマップされます。システム管理者のアクセス権が攻撃者によって取得された場合の潜在的な損害は計り知れません。既定では、Windows BUILTIN\Administrators グループ (ローカル管理者のグループ) のすべてのメンバが sysadmin ロールに所属しますが、sysadmin ロールから Windows の Administrators グループのメンバを削除することもできます。

Windows Server 2003 以降のバージョンで SQL Server 2005 を実行している場合、SQL Server ログインに Windows のパスワード ポリシー メカニズムが適用されます。パスワードの複雑性ポリシーは、使用可能なパスワードの数を増やすことにより、ブルート フォース攻撃を防ぐようにデザインされています。SQL Server 2005 では、SQL Server 内部で使用されるパスワードに、Windows Server 2003 で使用されているものと同じ複雑性ポリシーおよび有効期限ポリシーを適用できます。

Bb669066.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

ユーザー入力から文字列を連結することによって接続文字列を構築している場合、接続文字列のインジェクション攻撃に対して脆弱になります。SqlConnectionStringBuilder を使用すると、構文的に正しい接続文字列を実行時に作成できます。詳細については、「接続文字列ビルダ (ADO.NET)」を参照してください。

外部リソース

詳細については、次のリソースを参照してください。

リソース

内容

プリンシパル (SQL Server 2008 オンライン ブック)

SQL Server 2008 のログインおよびその他のセキュリティ プリンシパルについて説明します。

プリンシパル (SQL Server 2005 オンライン ブック)

SQL Server 2005 のログインおよびその他のセキュリティ プリンシパルについて説明します。

ログイン (SQL Server 2000 オンライン ブック)

SQL Server 2000 のログインおよび認証について説明します。

参照

概念

SQL Server におけるアプリケーション セキュリティのシナリオ (ADO.NET)

その他の技術情報

ADO.NET アプリケーションのセキュリティ保護

データ ソースへの接続 (ADO.NET)

接続文字列 (ADO.NET)