2006年05月25日

ユーザー 'NT AUTHORITY\\NETWORK SERVICE' はログインできませんでした

  
Windows Server 2003 では ASP.NET の実行時アカウントは "NT AUTHORITY\NETWORK SERVICE" のため、SQL Server へのアクセス権を "NT AUTHORITY\NETWORK SERVICE" アカウントへ許可する必要があります。

僕は、SQL Management Studio を使っちゃたけど。

http://www.microsoft.com/japan/msdn/vstudio/productinfo/tour/
によれば、

osql -E -Q "sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'"
osql -E -d データベース -Q "sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'"
osql -E -d データベース -Q "sp_addrolemember 'db_owner','NT AUTHORITY\NETWORK SERVICE'"

とコマンドを発行すればよい?


追記 2006/5/27
実際には、渋木さんがコメントしてくれたように、NETWORK SERVICE に全面的に SQL Server へのアクセスを許可するのはセキュリティ上問題あり。
僕が最終的にどう対応したかは、その結論が出た時点で、日記に公開します。って、かなり長いスパンの開発なので、結論でるのは、まだまだ先ですが。



この記事へのコメント
NETWORK SERVICE に全面的に SQL Server へのアクセスを許可するのは危険ではないですか?
それに、IIS と SQL Server が別マシンの場合はこれだけでは設定が不足のはずです。
(NETWORK SERVICES には外部リソースに対するアクセス許可が無い)
SQL Server へのアクセスを必要とするアプリケーションがあるなら、アプリケーション実行専用のアカウントを作成して Web アプリケーションを偽装し、そのアカウントに対して SQL Server へ接続を許可した方が安全だと思います。
Posted by 渋木宏明(ひどり) at 2006年05月25日 22:02
渋木様、コメントありがとうございます。
いままで、お遊び程度にしか、ASP.NET+SQLServerを触っていなかったので、特にセキュリティ部分は、弱い部分です。(って、弱いところばっかりだけど)
たしかに、'db_owner' というのはいただけませんね。
複数の業務がある場合、当然設定するセキュリティがそれぞれ異なりますから、NETWORK SERVICE だけでの対応は不可能ですし...
MSのどこかのページには、特定のストアドプロシージャのみに権限を付与するっていう方法が書かれていたように思いますが、ADO.NETとの相性がわるそうだし。結局、1種類の特権で動作させることになるし...
最終的に行き着くのは「偽装」なのでしょうか。
カスタムサービスアカウントを利用する方法もあるらしい。
今やろうとしている仕事では、まだ、SQL認証なのか、統合認証なのかも決めていないので、認証、認定でどの方法を使うのが良いのかじっくり考えてみます。
Posted by Gushwell at 2006年05月27日 13:18
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50475656