UNIX ボックスで PostgreSQL を実行しており、個々の UNIX アカウントと個々のデータベース ログインの両方を持つ複数のユーザーがいます。これらのユーザーに対して有効にしようとしているワークフローの種類は次のとおりです。
- 大きなファイルをサーバーに転送する (通常は Samba 経由)
- ユーザーの PC から PostgreSQL へのリモート接続を確立する
- 大きなファイルを(できれば一時的な)テーブルに読み込み、分析を行います
問題は、PostgreSQL にログインしているときにファイルにアクセスする方法です。一見したところ、これを安全に行うことは不可能に思えます。なぜなら、データベースは、postgres
他の UNIX アカウントに属するファイルにアクセスすることさえできないアカウントで実行されているからです。すぐに使える状態で、PostgreSQL ユーザーがローカル ファイルにアクセスできる唯一の方法は、postgres
(a) UNIX アカウントでファイルを読み取り可能にし、(b) データベース ユーザーに昇格された権限を与えて、COPY FROM
コマンドを使用できるようにすることだと思います。 Postgres。これは問題外です。ユーザーが互いのデータを読み取ることができてはなりません。
現在使用している回避策は、サーバーにシェルインして を実行するpsql
ことです。これにより、ユーザーは\copy
メタコマンドを使用してローカル ファイルからデータを丸呑みすることができます。しかし、これはワークフローを複雑にし、UNIX に不慣れなユーザーにとっては満足のいくものではありません。代わりに、ODBC 経由で Postgres に直接接続できる SAS と呼ばれる PC ベースの分析パッケージからプロセス全体を駆動したいと考えています。
この問題に対する創造的な解決策を探しています。明らかに、上に挙げた単純なワークフローは、UNIX のセキュリティ モデルと完全に矛盾しています。しかし、ユーザーの観点から同様に機能する代替手段はありますか? ストアド プロシージャ、man-in-the-middle プロキシなどを喜んで検討します。