2

ユーザーがファイルを保存および取得できるWindowsデスクトップアプリ(Delphiで作成)があります。

  1. アプリケーションは、これらのファイルを単一のネットワーク共有フォルダー (Active Directory) に保存します。
  2. アプリのさまざまなユーザーがすべてのファイルを表示する権限を持っているわけではありません。これらの権限はアプリによって制御されます。

現在、アプリのすべてのユーザーに共有フォルダーへのアクセスを許可する必要があるため、悪意のあるユーザーがディレクトリを見つけてすべてのファイルにアクセスできるようになっています。

「ユーザーとしてのアプリ」のみが共有フォルダーへのアクセス許可を必要とせずに、アプリが特定のユーザーとして機能できる方法はありますか?

4

3 に答える 3

5

次のいずれかを行う必要があります。

1) 目的のユーザーとしてアプリを実行します。

LogonUser()2) 共有フォルダーにアクセスする前に、およびImpersonateLoggedOnUser()、または他の同様の関数を使用して、プログラムで目的のユーザーになりすますコードを作成します。フォルダーの使用が終了したら、偽装を停止することを忘れないでください。

于 2013-05-08T17:38:50.920 に答える
1

直接ではありません。アプリには、ユーザーとまったく同じ権限があります。これは、OS のセキュリティ モデルの一部です。このようなことに対処しなければならない場合は、次のようにします。

サービスとして実行する 2 つ目のプログラムを作成し、共有フォルダーにアクセスできるユーザー アカウントで実行するように設定します。ある種の検証ロジックを実装し、着信メッセージをリッスンする必要があります。(これにどのような正確な方法を使用するかはあなた次第ですが、基本的にはサーバーを作成しています。)

デスクトップ アプリは、制限されたユーザー アカウントで実行されます。ファイルを要求するために、サーバーにメッセージを送信します。このメッセージでは、ユーザーと作成中の要求を識別します。

サーバーはリクエストをチェックし、有効な場合はファイルを取得してユーザー アプリに返します。そうでない場合は、何らかのエラー メッセージを返す必要があります。

于 2013-05-08T17:23:45.967 に答える
1

標準のファイル共有ではありません。アプリケーションは常に、ログインしているユーザーのセキュリティ コンテキストで実行されます。

私が見ることができる2つの明らかな解決策があります:

  1. 共有フォルダー内のファイルに対する権限を変更するために、既に用意されている AD セキュリティとユーザー アカウントを使用します。これは、アプリケーションのセキュリティがすでに AD セキュリティ オブジェクトにマップされている場合にのみ機能します。偽装を許可する必要がある場合 (たとえば、管理者が別のユーザー セッションから自分自身としてアプリに "ログイン" する場合)、さまざまな Windows セキュリティ API に慣れる必要があります。
  2. アプリケーションの認証メカニズムを処理し、ファイル リストとコンテンツをクライアントに提供するサーバー側コンポーネントを記述します。

#2は、WebDAV、FTP / SFTP / FTPS、または他の「すでに完了している」ファイル転送プロトコルなどで実装でき、作業を節約するためにピギーバックできる可能性があります.

于 2013-05-08T17:25:42.007 に答える