トップ回答者
Com+ コンポーネントの実行アカウントについて

質問
-
Com+ コンポーネントを作成(環境:.NET2.0 VS2005で作成)して、サーバ(2003rs)でコンポーネントサービスに登録しました。
この状態でデフォルトの実行アカウント(IDタグで確認)はシステムアカウント・対話ユーザになります。
この場合、サーバを再起動して、管理者がログインしない場合の実行アカウントは何になりますでしょうか?
やりたいこと
サーバを再起動するだけで、管理者がログインしなくてもCom+コンポーネントサービスを使ってサーバマシンの
ファイルにフルアクセスしたいです。
「たぶん、IDタグでローカルシステムを指定すればできるかなと思いますが、ローカルシステムはなぜか
グレー(選択不可)の状態です。」
もちろん、「このーユーザ」で管理者ユーザを指定して実行できることも可能と思いますが、
これは管理者ID・パスワードを指定するので、これをやりたくないというのもあります。
回答
-
-
こんにちは。
# 途中のやり取りについていけなかった感がありますので、
# 最初の質問にレスしたいとおもいます(汗)
対話ユーザを選択している場合、誰もローカルログインしていなかったら COM+ コンポーネントは実行できないと思います。
おっしゃるとおり、「このユーザ」 で管理者ユーザを指定されると良いと思います。
(セキュリティの話はさておき、ですが)
ご参考になりましたら幸いです。
-----------------------------------------------
だどさん http://keicode.com/
すべての返信
-
Wolfgang&al さんからの引用 Com+ コンポーネントを作成(環境:.NET2.0 VS2005で作成)して、サーバ(2003rs)でコンポーネントサービスに登録しました。
この状態でデフォルトの実行アカウント(IDタグで確認)はシステムアカウント・対話ユーザになります。
この場合、サーバを再起動して、管理者がログインしない場合の実行アカウントは何になりますでしょうか?
やりたいこと
サーバを再起動するだけで、管理者がログインしなくてもCom+コンポーネントサービスを使ってサーバマシンの
ファイルにフルアクセスしたいです。
「たぶん、IDタグでローカルシステムを指定すればできるかなと思いますが、ローカルシステムはなぜか
グレー(選択不可)の状態です。」
もちろん、「このーユーザ」で管理者ユーザを指定して実行できることも可能と思いますが、
これは管理者ID・パスワードを指定するので、これをやりたくないというのもあります。
サービスとしてCOM+が動くわけですから、管理者としてログインしなくてもCOM+コンポーネントは使えると思いますけど。
システムアカウントとして設定されている理由としては、(おそらくは)[管理ツール]-[サービス]でCOM+関連のサービスが[ローカルシステム]として設定されているためで、グレーアウトされていること自体は問題ないと思います。
※もしかして質問の意図を外していますでしょうか?
-
CatTailさん
こんにちは、投稿ありがとうございます。
わかりにくい書き込みですみません。
補足説明すると
IIS(WEBサイト)→「Com+ コンポーネント」をコールしてサーバの任意の場所のファイルをダウンロードまたはアップロードを行う。
(→設計はこれできまりなので、これはいま変更不可。)
(→「Com+ コンポーネント」が担当するのが、サーバファイルの書き込み、読み取り。)
(→現状は「Com+ コンポーネント」の呼び出すができるが、ファイルに対してアクセス権限ないと怒られる(たぶんIISのユーザで実行されちゃうので、))
もちろん、プロパティの「ID」タグの「このーユーザ」で管理者ユーザを指定して実行できることも可能と思いますが、
これは管理者ID・パスワードを指定するので、これをやりたくない。
CatTailさん
余談ですが、「サービス」と「コンポーネントサービス」はまだちょっと違うと思います。
-
-
Wolfgang&al さんからの引用 補足説明すると
IIS(WEBサイト)→「Com+ コンポーネント」をコールしてサーバの任意の場所のファイルをダウンロードまたはアップロードを行う。
(→設計はこれできまりなので、これはいま変更不可。)
(→「Com+ コンポーネント」が担当するのが、サーバファイルの書き込み、読み取り。)
(→現状は「Com+ コンポーネント」の呼び出すができるが、ファイルに対してアクセス権限ないと怒られる(たぶんIISのユーザで実行されちゃうので、))
もちろん、プロパティの「ID」タグの「このーユーザ」で管理者ユーザを指定して実行できることも可能と思いますが、
これは管理者ID・パスワードを指定するので、これをやりたくない。
逆にCOM+コンポーネントがアクセスするフォルダに対して、IISユーザーに対して許可を与える方法もあると思います。
が、IISが管理するフォルダ以外に対してアクセス権を与える事はセキュリティ上、まずいような気が…。
(もちろん、外部に後悔しない場合は別ですけど)
Wolfgang&al さんからの引用 CatTailさん
余談ですが、「サービス」と「コンポーネントサービス」はまだちょっと違うと思います。
ごめんなさい。サービスの中にある「COM+ Event System」「COM+ System Application」と勘違いしていました。
-
CatTail さんからの引用 逆にCOM+コンポーネントがアクセスするフォルダに対して、IISユーザーに対して許可を与える方法もあると思います。
が、IISが管理するフォルダ以外に対してアクセス権を与える事はセキュリティ上、まずいような気が…。
(もちろん、外部に後悔しない場合は別ですけど)
これは逆ですね。IIS user に高い権限を与えることはそれだけ攻撃できる範囲が広がるのでお勧めできません。
COM+ 側で高い権限を与える方がよっぽど望ましいです。
また、そもそも任意の場所を扱えるようにするという設計自体がダメですね。
どうしても、必要であるならばそれができるのは管理者ということになりますから、Windows 統合認証で処理するべきでしょうね。
-
ちゃっぴ さんからの引用 これは逆ですね。IIS user に高い権限を与えることはそれだけ攻撃できる範囲が広がるのでお勧めできません。
COM+ 側で高い権限を与える方がよっぽど望ましいです。
また、そもそも任意の場所を扱えるようにするという設計自体がダメですね。
どうしても、必要であるならばそれができるのは管理者ということになりますから、Windows 統合認証で処理するべきでしょうね。
そうでした。各サービスアカウントには必要最小限の権限しか与えないようにするという、基本的なことを失念していました。
「IIS Userに権限を…」のくだりに関しては撤回します。
> また、そもそも任意の場所を扱えるようにするという設計自体がダメですね。
これには完全に同意します。
昔ですが、隠しCGIでサーバーの情報が漏洩した事故(事件?)もあったことですし。
-
ちゃっぴさん
投稿ありがとうございます。
まさに「COM+ 側で高い権限を与える」方針で開発しているプログラムです。
ごめんなさい、設計の話はここで遠慮させていただきたい。そもそも設計いろいろむずかしい・・・・
では、「管理者ということになりますから、Windows 統合認証で処理するべきでしょうね」
の意味あまり理解できていないが、もうちょっと教えてもらってもいいですか?
要は「IISの設定をWindows統合認証」にすれば、「COM+」でわざわざ管理者権限つけなくても
サーバ内の任意の場所のファイルがアクセスできるということでしょうか?
今のプログラムは「Form認証」です。
よろしくお願いいたします。
-
こんにちは。
# 途中のやり取りについていけなかった感がありますので、
# 最初の質問にレスしたいとおもいます(汗)
対話ユーザを選択している場合、誰もローカルログインしていなかったら COM+ コンポーネントは実行できないと思います。
おっしゃるとおり、「このユーザ」 で管理者ユーザを指定されると良いと思います。
(セキュリティの話はさておき、ですが)
ご参考になりましたら幸いです。
-----------------------------------------------
だどさん http://keicode.com/
-
このスレッド自体はちょっとテーマから離れたましたが、
回答としては下記スレッドになります。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=4264845&SiteID=7