1

UNIX ボックスで PostgreSQL を実行しており、個々の UNIX アカウントと個々のデータベース ログインの両方を持つ複数のユーザーがいます。これらのユーザーに対して有効にしようとしているワークフローの種類は次のとおりです。

  1. 大きなファイルをサーバーに転送する (通常は Samba 経由)
  2. ユーザーの PC から PostgreSQL へのリモート接続を確立する
  3. 大きなファイルを(できれば一時的な)テーブルに読み込み、分析を行います

問題は、PostgreSQL にログインしているときにファイルにアクセスする方法です。一見したところ、これを安全に行うことは不可能に思えます。なぜなら、データベースは、postgres他の UNIX アカウントに属するファイルにアクセスすることさえできないアカウントで実行されているからです。すぐに使える状態で、PostgreSQL ユーザーがローカル ファイルにアクセスできる唯一の方法は、postgres(a) UNIX アカウントでファイルを読み取り可能にし、(b) データベース ユーザーに昇格された権限を与えて、COPY FROMコマンドを使用できるようにすることだと思います。 Postgres。これは問題外です。ユーザーが互いのデータを読み取ることができてはなりません。

現在使用している回避策は、サーバーにシェルインして を実行するpsqlことです。これにより、ユーザーは\copyメタコマンドを使用してローカル ファイルからデータを丸呑みすることができます。しかし、これはワークフローを複雑にし、UNIX に不慣れなユーザーにとっては満足のいくものではありません。代わりに、ODBC 経由で Postgres に直接接続できる SAS と呼ばれる PC ベースの分析パッケージからプロセス全体を駆動したいと考えています。

この問題に対する創造的な解決策を探しています。明らかに、上に挙げた単純なワークフローは、UNIX のセキュリティ モデルと完全に矛盾しています。しかし、ユーザーの観点から同様に機能する代替手段はありますか? ストアド プロシージャ、man-in-the-middle プロキシなどを喜んで検討します。

4

1 に答える 1

1

ユーザーが SAS 経由で接続している場合、SAS-PSQL 接続経由でファイル自体をアップロードできますか? SAS ユーザーとして言えば、これは確かに可能です。何かのようなもの

libname psql odbc (connection-string);
data psql.mytable;
set sastable;
run;

もちろん、最初にローカルで SAS に読み込まれる必要がありますが、それはおそらく些細なことです。ここで考えられる主な問題は時間です。間違いなく、SAMBA 経由よりもこの方法での転送の方が遅くなります。しかし、おそらく、単純さのためにかかる時間はそれだけの価値がありますか?

于 2013-02-22T08:41:36.170 に答える