C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: サーバサイドでの管理者権限でのアプリ実行


(過去ログ 177 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■101584 / inTopicNo.1)  サーバサイドでの管理者権限でのアプリ実行
  
□投稿者/ HON (1回)-(2023/03/17(Fri) 13:54:43)

分類:[.NET 全般] 

こんにちは。

超初心者です。

VisualStudio 2022を用いてクライアントサーバアプリを作成しております。
クライアント側:VB.net コンソールアプリケーション(.netFramework)
サーバー側:C# MVCコントローラ(.NET6.0)

クライアント側からサーバに対してhttpでファイルをアップロードして、アップロードしたファイルに対してさらにバッチ処理を行います。

クライアント端末でコマンドラインからアプリを実行 引数にアップロードファイルパスとサーバ上で実行するバッチファイルのパスを指定
サーバサイドアプリでアップロードされたファイルを保存 バッチファイルを実行
という流れです。

現在困っているのが、サーバサイドのアプリにてバッチを実行する際に管理者権限で行う必要がありますが、
どうしてもアクセスが拒否されてしまいます。
process.StartInfo.Verb = "RunAs";
を記述しておりますが、結果は変わりません。

ちなみに管理者権限が必要ないバッチファイルをテストとして作成して引数に指定すると問題なく実行できるため、
あとは管理者権限で実行できるかどうかというところまでにはなっています。

有識者の方ご助力いただけませんでしょうか。
よろしくお願いいたします。
引用返信 編集キー/
■101585 / inTopicNo.2)  Re[1]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer (2647回)-(2023/03/17(Fri) 14:19:29)
No101584 (HON さん) に返信

> サーバー側:C# MVCコントローラ(.NET6.0)

ホスティングモデルはどうなっているんですか?

Linux 系の OS の場合は、Nginx とか Apache をリバースプロキシに使って、Kestrel
で ASP.NET Core アプリをホストするということになるはずです。

Windows OS で IIS 上でで動かしているとすると、「インプロセス ホスティング」と
「アウトプロセス ホスティング」という 2 つのモデルがあります。

参考:
ASP.NET Core アプリの Web サーバー
http://surferonwww.info/BlogEngine/post/2020/06/29/web-server-used-in-aspnet-core-application.aspx


引用返信 編集キー/
■101586 / inTopicNo.3)  Re[2]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HON (2回)-(2023/03/17(Fri) 14:23:16)
No101585 (WebSurfer さん) に返信
> ■No101584 (HON さん) に返信
>
>>サーバー側:C# MVCコントローラ(.NET6.0)
>
> ホスティングモデルはどうなっているんですか?
>
> Linux 系の OS の場合は、Nginx とか Apache をリバースプロキシに使って、Kestrel
> で ASP.NET Core アプリをホストするということになるはずです。
>
> Windows OS で IIS 上でで動かしているとすると、「インプロセス ホスティング」と
> 「アウトプロセス ホスティング」という 2 つのモデルがあります。
>
> 参考:
> ASP.NET Core アプリの Web サーバー
> http://surferonwww.info/BlogEngine/post/2020/06/29/web-server-used-in-aspnet-core-application.aspx
>
>

ありがとうございます。
説明不足ですみません。
サーバサイドはIISのインプロセスホスティングかと思います。
引用返信 編集キー/
■101588 / inTopicNo.4)  Re[3]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer (2649回)-(2023/03/17(Fri) 16:15:36)
No101586 (HON さん) に返信

無駄に全文を引用するのは止めてください。以下のように必要な部分のみに
とどめてください。

> 現在困っているのが、サーバサイドのアプリにてバッチを実行する際に管理者
> 権限で行う必要がありますが、どうしてもアクセスが拒否されてしまいます。

> サーバサイドはIISのインプロセスホスティングかと思います。

ASP.NET は IIS のワーカープロセスで動きますが、ワーカープロセスはデフォ
ルトで「アプリケーションプール ID」になり、権限は低いものになります。

アプリケーション プール ID
https://technet.microsoft.com/ja-jp/library/ee886292.aspx

また、デフォルトのワーカープロセスには Process.Start でプロセスを起動する
権限がありません。

権限が低いのはセキュリティ上の理由です。

ワーカープロセスに管理者権限を与えるばどということはやりすぎですので、管
理者権限を与えなくて済むようにやり方を考え直すことをお勧めします。

例えば、特定のフォルダのファイルの読み書きだけできればいいなら、ワーカー
プロセスにそのフォルダだけに対する読み書き権限を与えるだけにとどめるとか。

どうしてもと言うなら、以下の記事に書いてあるようにして、プロセスモデルの
ID に必要な管理者権限を持つユーザーアカウントを設定することは可能ですが、
お勧めできません。

ユーザー対話モード
http://surferonwww.info/BlogEngine/post/2022/09/18/user-interactive-mode.aspx

ただし、そうした場合でも、上音記事にも書いてある通りプロセスはユーザー対
話モードで実行されないので、グラフィカル UI を使用すると例外がスローされ
ます。

そこは何ともなりませんので、グラフィカル UI を使わないように考える他ない
と思います。

引用返信 編集キー/
■101592 / inTopicNo.5)  Re[4]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HON (3回)-(2023/03/17(Fri) 17:43:38)
No101588 (WebSurfer さん) に返信
> ■No101586 (HON さん) に返信
>
> 例えば、特定のフォルダのファイルの読み書きだけできればいいなら、ワーカー
> プロセスにそのフォルダだけに対する読み書き権限を与えるだけにとどめるとか。

→フォルダとバッチに対してワーカープロセスのユーザの権限をあててみましたがうまくいきませんでした。
 もう少し調べてみます。ありがとうございました。
引用返信 編集キー/
■101593 / inTopicNo.6)  Re[5]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer (2651回)-(2023/03/17(Fri) 17:53:47)
No101592 (HON さん) に返信

> →フォルダとバッチに対してワーカープロセスのユーザの権限をあててみましたがうまくいきませんでした。

その「バッチ」で何をしたいのかを具体的に書くことはできませんか?
引用返信 編集キー/
■101595 / inTopicNo.7)  Re[6]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB (63回)-(2023/03/18(Sat) 10:44:16)
No101593 (WebSurfer さん) に返信
> その「バッチ」で何をしたいのかを具体的に書くことはできませんか?
横槍失礼。
管理者権限を突破して、その先で何か実行させようとする行為について、
具体的に衆目に晒すという事は、
悪意みたいなもんに具体性を与えて、第三者に閲覧される可能性があるとおもうので、
このへんでお開きにするのがよろしいかと。

質問者さんも終わりたがってるようだし。
引用返信 編集キー/
■101596 / inTopicNo.8)  Re[7]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer (2652回)-(2023/03/18(Sat) 11:35:32)
No101595 (HattariB さん) に返信

> 管理者権限を突破して、その先で何か実行させようとする行為について、
> 具体的に衆目に晒すという事は、
> 悪意みたいなもんに具体性を与えて、第三者に閲覧される可能性があるとおもうので、
> このへんでお開きにするのがよろしいかと。

どう考えると「管理者権限を突破」とか「悪意みたいなもんに具体性を与えて」といういう
話になるのですか?

ASP.NET Web アプリで権限の問題で必要な処理ができないということは良くある話です。例
えばアップロードしたファイルをサーバーで保存するというような操作でさえ、デフォルト
のワーカープロセスでは権限が低くでできないのですよ。

管理者権限を与えるケースもないわけではないのですよ。
引用返信 編集キー/
■101597 / inTopicNo.9)  Re[8]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB (65回)-(2023/03/18(Sat) 15:37:03)
No101596 (WebSurfer さん) に返信

> どう考えると「管理者権限を突破」とか「悪意みたいなもんに具体性を与えて」といういう
> 話になるのですか?
正しい管理者権限を持っているなら、クライアントから実行させた際に、サーバー側にもその権限を
移譲できるんじゃ無いすか?

サーバーサイドで動作するバッチファイルが、それを実行させたプロセスから離れているので
管理者権限が消えてるんじゃぁ無いすか?
もしくはアクセスしたセッションそのものに管理者権限がなかったんじゃぁ無いの?

httpプロトコルではなく、httpsプロトコルだったら管理者権限が消える事は無いと思うんだけど、
サーバーサイドで起動したバッチに管理者権限が必要だという事は、
アクセスしたセッションが管理者では無いという事だと思ったんですよ。

だから、httpで、管理者権限無しでアクセスして、管理者が実行できないバッチファイルが、実行できない事は、
セキュリティが動いているという事で、「そのセキュリティを突破するにはどうしたら?」という
主旨だと読んだんですよ。わたしわ。

> 管理者権限を与えるケースもないわけではないのですよ。
そうか。IISではhttpプロトコルに対しても任意に管理者権限を与える事が出来るのか。


・・・・まずくないすか?
引用返信 編集キー/
■101598 / inTopicNo.10)  Re[9]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB (66回)-(2023/03/18(Sat) 16:06:05)
ちなみに、HTTPSを引き合いに出したのは、暗号化云々ではなくて、
SSL証明書のやり取りが出来てるかどうかについて着目してたからです。

SSL証明書のやり取りが出来てない鯖蔵で、管理者権限でのやり取りが行われて良いのかは非常に疑問に思ってる。
引用返信 編集キー/
■101599 / inTopicNo.11)  Re[9]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer (2653回)-(2023/03/18(Sat) 17:07:54)
No101597 (HattariB さん) に返信

> 正しい管理者権限を持っているなら、クライアントから実行させた際に、サーバー側にもその権限を
> 移譲できるんじゃ無いすか?

クライアントが管理者権限を持っていて、Web アプリのプロセスもその権限で動くと言ってます?

Active Directory ドメイン環境で Windows 統合認証を利用してシングルサインオンが実現されて
いて、偽装・委任が設定されているとかでなければそういうことはあり得ません。

今回の件は、コンソールアプリから ASP.NET MVC にファイルをアップロードするという話で、コ
ンソールアプリのユーザーの権限と Web サーバー上での Web アプリのプロセスの権限は違うも
のです。

> サーバーサイドで動作するバッチファイルが、それを実行させたプロセスから離れているので
> 管理者権限が消えてるんじゃぁ無いすか?

違います。

今回の件では、バッチファイルは Web アプリのプロセスが起動するという話のはずです。

Web アプリのデフォルトのプロセスの権限が低いから、起動したバッチファイルが必要な処置が
できないという話です。権限が消えたわけではなくて、最初から必要な権限がないのです。

> もしくはアクセスしたセッションそのものに管理者権限がなかったんじゃぁ無いの?

意味不明です。「アクセスしたセッション」って何ですか?

Web アプリのプロセスの権限は、偽装・委任という設定をしてない限り、デフォルトでは常に
「アプリケーションプール ID」という権限が低いものになります。

> httpプロトコルではなく、httpsプロトコルだったら管理者権限が消える事は無いと思うんだけど、

それも意味不明です。Web アプリのデフォルトのプロセスの権限と http / https には何の
関係もありません。上に述べた偽装・委任とかをしていても http / https とは関係ないの
は同じです。

> サーバーサイドで起動したバッチに管理者権限が必要だという事は、
> アクセスしたセッションが管理者では無いという事だと思ったんですよ。

ここも意味不明ですが、何にせよ上に述べた通り、デフォルトでは常に「アプリケーションプー
ル ID」という権限が低いものになります。

> だから、httpで、管理者権限無しでアクセスして、管理者が実行できないバッチファイルが、実行できない事は、
> セキュリティが動いているという事で、「そのセキュリティを突破するにはどうしたら?」という
> 主旨だと読んだんですよ。わたしわ。

たとえば、クライアントから受け取ったファイルをサーバーのどこかフォルダに保存するだけで
もデフォルトの「アプリケーションプール ID」ではできないのですよ。書き込み権限がないから。

そういう場合は「そのセキュリティを突破するにはどうしたら?」という話ではなくて、Web ア
プリが要件を満たすための処置を行うために必要な権限を与えるという話になるのですよ。

>>管理者権限を与えるケースもないわけではないのですよ。
> そうか。IISではhttpプロトコルに対しても任意に管理者権限を与える事が出来るのか。

http / https 何も関係ないです。

> ・・・・まずくないすか?

Web アプリが要件を満たすための処置を行うために必要な権限を与えるということであれば何も
まずくはないです。

もちろん権限を与えればリスクは増えますので、必要最低限ということになると思いますが。
引用返信 編集キー/
■101600 / inTopicNo.12)  Re[10]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB (67回)-(2023/03/18(Sat) 17:50:58)
No101599 (WebSurfer さん) に返信
返信ありがとうございます。
オイラの勉強不足を自分自身で痛感できたので、
ここは礼を申し述べるしかありません。
ありがとうございました。


> デフォルトの「アプリケーションプール ID」ではできないのですよ。書き込み権限がないから。
でも保存はできて、そのあとのバッチ実行が出来ないっておっしゃって無いですか?
書き込み権限が無いとしたら、保存すらできないですよね。
という事は、アプリケーションプールIDというレベルの話ではないのではないですか?



> アプリが要件を満たすための処置を行うために必要な権限を与えるという話になるのですよ。
なるほど。だから必要な権限を判断するために、具体的な用途を問い合わせたわけですね。

まぢで横槍失礼しました。ごめんなさい。
引用返信 編集キー/
■101601 / inTopicNo.13)  Re[11]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer (2654回)-(2023/03/18(Sat) 19:10:12)
No101600 (HattariB さん) に返信

>>デフォルトの「アプリケーションプール ID」ではできないのですよ。書き込み権限がないから。
> でも保存はできて、そのあとのバッチ実行が出来ないっておっしゃって無いですか?
> 書き込み権限が無いとしたら、保存すらできないですよね。

保存はできないです。Process.Start もできないので、多分質問者さんの「バッチ」とやらも
動かないと思うのですが、最初の質問に管理者権限が必要なければ動いたという話があるので
なんだかよくわかりませんが。
引用返信 編集キー/
■101602 / inTopicNo.14)  Re[12]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB (68回)-(2023/03/18(Sat) 20:20:21)
No101601 (WebSurfer さん) に返信
>管理者権限が必要なければ動いたという話があるのでなんだかよくわかりませんが。

$ chmod 764
ではなく、
# chmod 777を、
エラー無く適用させたいから、root権限取る方法を教えてくれ

みたいな質問に思えたので、オイラもよくわかんないや。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -