it-swarm-ja.com

ネットワーク共有を使用したASP.NETアプリケーションでのアクセス許可の問題

Windowsネットワーク共有に情報を格納しているIIS 7にASP.NETアプリケーションをインストールしました。正常にインストールされ、共有に必要なすべてのフォルダーが作成されました。アプリケーションはネットワークで実行されます。サービスアカウント。通常、これらのフォルダーにアクセス許可が設定されていますが、今回は設定されていないため、アクセス許可を割り当てました。

問題は、アプリケーションがフォルダの1つにアクセスできないため、ページに移動しようとするとアクセス拒否エラーが発生することです。全員に共有へのアクセス許可を割り当てました。これで問題は修正されましたが、削除すると問題が再発します。私は明らかに、このフォルダに全員のアクセス許可を残したくありません。

問題が何であるか、または全員のアカウントの代わりに何を使用できるかを誰かが知っていますか?

私はIISの専門家ではないので、これが曖昧またはあいまいな場所にある場合はお詫びします!

1
5lovak

共有内の特定のフォルダーだけでなく、ネットワーク共有全体に全員フルコントロールを割り当てていると想定しています。

あなたはおそらくすでにこれを知っていますが、Windowsは共有のための2つのアクセス許可を管理します-ファイルセキュリティと共有設定。ネットワーク共有にアクセスするには、両方を設定する必要があります。共有フォルダを右クリックする場合は、[共有]タブと[セキュリティ]タブの両方で権限を設定する必要があります。

この問題は、共有権限ではなく、実際にはNETWORKSERVICEアカウントの使用に関連していると思われます。サービスレベルアカウント(SYSTEMおよびNETWORK SERVICE)は、使用しているマシンに対してローカルであり、いくつかの結果があります。たとえば、完全修飾名を使用して権限がどのように設定されているかを検討してください。

アプリケーションサーバーでは、ASP.NETアプリケーションを実行しているアカウントは「5lovak'sServer\NETWORKSERVICE」です。別のマシン上にあるネットワーク共有では、ローカルアカウントは実際には「5lovakのネットワーク共有サーバー\ネットワークサービス」です。

アカウント名は同じですが、アカウントが異なるため、その方法で共有にアクセスすることはできません。

これを設定する適切な方法は、新しいWindowsユーザーアカウントを作成し、それをこの目的専用に使用することだと思います。 Windowsには、従来、ドメインのようなユーザーを偽造する「安価な」方法がありました。両方のマシンでローカルユーザーを作成し、両方が同じパスワードを持っていることを確認するだけです。これがネットワークサービスとシステムに当てはまらない理由はわかりませんが、正当な理由があると思います。

だから、これを試してみてください:

  1. IISマシンで、IUSR_SHARE(またはその他)というユーザーを作成します。パスワードを設定します。
  2. ネットワーク共有マシンで、IUSR_SHAREというユーザーを作成し、同じパスワードを設定します。
  3. IIS Managerで、Webアプリが使用しているアプリケーションプールを選択します(デフォルトのものを使用している場合は、新しいプールを作成します)。右側のアクションバーの[詳細設定]をクリックします。[プロセスモデル]の下、ユーザーをIUSR_SHAREに変更します。

これを簡単にテストできるセットアップはここにはありませんが、機能すると思います。

1
Stefan Mohr

正しい方法は

アプリプールにはApplicationPoolIdentityを使用します

そして、domain\machinename $のような指定するマシンIDにアクセス許可を与えます(「$」はマシン名に必要なサフィックスです)

共有フォルダーが同じマシン上にある場合は、IIS_IUSRSのアクセス許可もフォルダーに設定します。

0
maxisam