« 【ADO.NET】DataSetから変更行を抽出 | メイン | 【.NET】String.IsNullOrEmptyの信じられないバグ »

【SQL Server】Windows統合認証とSQL Server認証

SQL Serverには2つの認証方式があります。

1. Windows統合認証
2. SQL Server認証

Javaから.NETに移行した開発者の方々は、Windows統合認証に馴染みがないのではないでしょうか。

.NETエンタープライズWebアプリケーション開発技術大全〈Vol.4〉セキュアアプリケーション設計編では以下のように
説明されています。<<以下、書籍から引用>>
-----------------------------------------------------
■Windows統合認証
ASP.NETアプリケーションのワーカープロセスを動作させているWindowsユーザーアカウントを利用して、SQL Serverに接続する方式

■SQL Server認証
SQL Server上に独自に定義されたユーザーアカウント(SQL Serverログインアカウント)
を明示的に指定して、SQL Serverに接続する方式。

------------------------------------------------------

SQL Server認証は、OracleやPostgreSQLに接続する方式と大差ありません。
(接続文字列はDBMSごとに異なりますが。)

Data Source=(local); Initial Catalog=pubs; User Id=sa; Password=pass;

あらかじめデータベース上に定義しておいたユーザー名とパスワードで
データベースに接続しにいきます。


それに比べて、Windows統合認証にはユーザー名やパスワードが必要ありません。

Data Source=(local); Initial Catalog=pubs; Integrated Security=True;

では、どうやってSQL Serverは認証を行うのでしょう。

Webアプリケーションの場合、SQL ServerはASP.NETを動作させているユーザーで認証を行います。タスクマネージャのaspnet_wp.exe、またはw3wp.exeのプロセスのユーザー名がそれにあたります。

Windows統合認証にするメリットは、接続文字列にパスワードが含まれなくなるので、パスワードが盗まれるリスクが少なくなります。
SQL Server認証の場合、接続文字列はデフォルトでapp.configに出力されると思いますが、app.configは多くの開発者が目にするファイルなので、接続文字列を暗号化するか、レジストリなどに移動する必要があります。

ただし、Windows統合認証の場合には、Webサーバー⇔DBサーバーの間に
DB接続ポート以外にWindows統合認証用のポートを空けなければなりません。
また、WebサーバーとDBサーバーを同一のドメインに含めなければなりません。

上記の事項がインフラ上の制約やセキュリティポリシーに違反する場合には、
必然的にSQL Server認証を使うことになるでしょう。

【参考文献】
(書籍).NETエンタープライズWebアプリケーション開発技術大全〈Vol.4〉セキュアアプリケーション設計編

トラックバック

このエントリーのトラックバックURL:
http://www.mojao.net/mt/mt-tb.cgi/56

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)