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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.101584 の関連記事表示

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

    分類:[.NET 全般] 

    こんにちは。

    超初心者です。

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

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

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

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

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

    有識者の方ご助力いただけませんでしょうか。
    よろしくお願いいたします。
親記事 /過去ログ177より / 関連記事表示
削除チェック/

■101585  Re[1]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer -(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

記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101586  Re[2]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HON -(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のインプロセスホスティングかと思います。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101588  Re[3]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer -(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 を使わないように考える他ない
    と思います。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

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

    →フォルダとバッチに対してワーカープロセスのユーザの権限をあててみましたがうまくいきませんでした。
     もう少し調べてみます。ありがとうございました。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101593  Re[5]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer -(2023/03/17(Fri) 17:53:47)
    No101592 (HON さん) に返信

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

    その「バッチ」で何をしたいのかを具体的に書くことはできませんか?
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

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

    質問者さんも終わりたがってるようだし。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101596  Re[7]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer -(2023/03/18(Sat) 11:35:32)
    No101595 (HattariB さん) に返信

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

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

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

    管理者権限を与えるケースもないわけではないのですよ。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101597  Re[8]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB -(2023/03/18(Sat) 15:37:03)
    No101596 (WebSurfer さん) に返信

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

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

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

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

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


    ・・・・まずくないすか?
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101599  Re[9]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer -(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 アプリが要件を満たすための処置を行うために必要な権限を与えるということであれば何も
    まずくはないです。

    もちろん権限を与えればリスクは増えますので、必要最低限ということになると思いますが。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101600  Re[10]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB -(2023/03/18(Sat) 17:50:58)
    No101599 (WebSurfer さん) に返信
    返信ありがとうございます。
    オイラの勉強不足を自分自身で痛感できたので、
    ここは礼を申し述べるしかありません。
    ありがとうございました。


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



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

    まぢで横槍失礼しました。ごめんなさい。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101601  Re[11]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ WebSurfer -(2023/03/18(Sat) 19:10:12)
    No101600 (HattariB さん) に返信

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

    保存はできないです。Process.Start もできないので、多分質問者さんの「バッチ」とやらも
    動かないと思うのですが、最初の質問に管理者権限が必要なければ動いたという話があるので
    なんだかよくわかりませんが。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101602  Re[12]: サーバサイドでの管理者権限でのアプリ実行
□投稿者/ HattariB -(2023/03/18(Sat) 20:20:21)
    No101601 (WebSurfer さん) に返信
    >管理者権限が必要なければ動いたという話があるのでなんだかよくわかりませんが。

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

    みたいな質問に思えたので、オイラもよくわかんないや。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/

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

    SSL証明書のやり取りが出来てない鯖蔵で、管理者権限でのやり取りが行われて良いのかは非常に疑問に思ってる。
記事No.101584 のレス /過去ログ177より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -