- PR -

Wndows Server 2003SP1上でASP.NET2.0+ADO.NET

1
投稿者投稿内容
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-07-04 11:38
こんにちは。
Wndows Server 2003SP1にVisual Studio 2005 Professionalをインストールし、
Webサイト(WebSite1)をASP.NET2.0にて作成しました。
そのWebサイトは、SQL Server 2005 Developer Editionからあるテーブルのデータ
一覧を取得し、表示します。
作成したWebサイトは仮想ディレクトリ作成時に、スクリプトの実行等、全てを許可し
ました。
F5にてデバッグ実行したら、ちゃんと表示されました。web.configのdebug="false"
にして、別のマシンから
http://ホスト名/WebSite1
にアクセスしたら、セキュリティエラーが発生します。以下がエラーです。
セキュリティ関係で何か設定が必要でしょうか?

--エラー内容
'/WebSite1' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------

セキュリティ設定により、ID 'SqlDataSource1' が指定されたデータ ソースで ADO.net マネージ プロバイダ 'SqlClientFactory' へのアクセスが拒否されました。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-04 11:57
> F5にてデバッグ実行したら、ちゃんと表示されました。

これはIISを利用した実行でしょうか、それとも開発サーバ上での実行でしょうか。
IIS上で実行して動作してるのであれば、あとはあやしいのはweb.configの
authenticationの設定かなぁ?
authenticationのmodeは何になってますか?
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-07-04 13:00
>それとも開発サーバ上での実行でしょうか。
開発サーバ上での実行です。
authenticationのmodeはWindowsになっています。

DBにアクセスしないASP.NETのアプリケーションは、他マシンから接続でき、ちゃんと表示できたのですが。
他PC->ASP.NET->DB
という順の、ASP.NET->DBの部分でエラーが起きているのでしょうか。

DBへのアクセスは、SQL Server認証です。web.configには、
<connectionStrings>
<add name="WdDBConnectionString1" connectionString="Data Source=ホスト名;Initial Catalog=DB名;Persist Security Info=True;User ID=ユーザ名;Password=パスワード" providerName="System.Data.SqlClient"/>
</connectionStrings>
のようになっています。

[ メッセージ編集済み 編集者: koji 編集日時 2006-07-04 13:04 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-04 13:09
> 開発サーバ上での実行です。

じゃあ、ちゃんと動いてるかどうかの確認はできていない、と
考えるべきですね。
開発サーバはIISとは別のものですし、特にASP.NETを実行する
ユーザが異なるためにセキュリティまわりはまったく別の
動きをしていると考えたほうがよいです。

> 作成したWebサイトは仮想ディレクトリ作成時に、スクリプトの実行等、
> 全てを許可しました。

普通は「読み取り」と「ASPなどのスクリプトを実行する」だけに
許可が入っていれば十分です。

あとはどこかなぁ。
サーバ上からlocalhostとしてアクセスしたときはどうなります?

koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-07-04 13:19
> じゃあ、ちゃんと動いてるかどうかの確認はできていない、と
> 考えるべきですね。
> 開発サーバはIISとは別のものですし、特にASP.NETを実行する
> ユーザが異なるためにセキュリティまわりはまったく別の
> 動きをしていると考えたほうがよいです。
なるほど。ユーザが異なるのですね。
そのあたりが良くわかっていないのですが、IISでASP.NETのアプリケーションを実行する場合、例えば、他PCから、
http://ホスト名/WebSite1
にアクセスがあった場合は、サーバー上のASPNETユーザが実行する事になるのでしょうか?
で、そのASPNETユーザにSQL Server 2005にアクセスする権限が無い、と理解すればよろ
しいのでしょうか?

> 普通は「読み取り」と「ASPなどのスクリプトを実行する」だけに
> 許可が入っていれば十分です。
なるほど。このように変更してみましたが、問題無く、実行させる事が出来ました。
(DBにアクセスしない、ASP.NETアプリケーションで試しました。)

> サーバ上からlocalhostとしてアクセスしたときはどうなります?
やはり、同じエラーが発生しました。

[ メッセージ編集済み 編集者: koji 編集日時 2006-07-04 13:42 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-04 13:42
> IISでASP.NETのアプリケーションを実行する場合、サーバー上のASPNETユーザが
> 実行する事になるのでしょうか?

2003サーバの場合は NT AUTHORITY\NETWORK SERVICE というユーザになりますね。
偽装等を行っていなければ、ですが。

で、アクセス権がない場合はメッセージが異なるはずです。
しかもSQL認証にしているのであれば、実行ユーザは関係ないのでそのあたりの
問題ではなさそうですね。。。

さて、なんだろ。。。
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-07-04 13:49
どっとねっとふぁんさん、ありがとうございます。

> で、アクセス権がない場合はメッセージが異なるはずです。
> しかもSQL認証にしているのであれば、実行ユーザは関係ないのでそのあたりの
> 問題ではなさそうですね。。。
そうですか。
以前、Webサービス(PC1)にアクセスする、Flashアプリケーション(PC2)を作成して、
クライアント(PC3)からアクセスした時も、Flashアプリケーションが実行できません
でした。FlashアプリケーションがあるサーバーPC2はWindows Server 2003です。
Windows Server 2003のセキュリティの問題が何かあるのでしょうかね。

Windows Server2003SP1+ASP.NET2.0+SQL Server2005でWebアプリケーションを作成
する場合、このような現象が必ず起こるような気がするのですが、そうではないのでし
ょうか。皆さんは、どのようにしているのでしょう?

色々、調べてみます。
1

スキルアップ/キャリアアップ(JOB@IT)