0

データベースへの役割ベースのアクセスが必要です。新しいユーザーを作成し、このユーザーにテーブルへのアクセスのみを選択させたいのですが、これもデフォルトでコピーされます。このユーザーへのこのコピー アクセス権を取り消したいです。この文脈での助けは本当にかなりのものです。

どうもありがとう!!!

4

1 に答える 1

3

PostgreSQL はあなたが望むものを直接サポートしていません - そしてそれは理論的にもかなり疑わしいです。

PostgreSQL を変更してCOPYアクセス許可を追加したとしても、ユーザーはXML テーブル関数、新しいJSON サポート、または単純な古いSELECT ... FROM tablename;ものを使用してデータを抽出するだけです。

誰かがSELECTテーブルに対する権利を持っている場合COPY ... TO stdout、そのテーブルを使用でき、どこでも権利SELECT ... INTOを持っていれば別のテーブルを使用できます。CREATE意味あり; 結局のところ、いつでもSELECT * FROM tablename;クライアント側で処理できます。

個々の列に対して選択的に権限を付与できますGRANTが、それでも実行できるSELECT allowedcol1, allowedcol2, ... FROM tablenameため、COPY (SELECT allowedcol1, allowedcol2, ... FROM tablename) TO stdout.

COPYユーザーがorを実行するのを (ほとんどの場合) 停止する唯一の方法は、テーブルへの非常に限定的なアクセスを定義するストアド プロシージャをSELECT INTO介してすべてのアクセスを強制することです。SECURITY DEFINER

賢いユーザーCOPY (SELECT ...) TO stdoutは、ストアド プロシージャ API を使用してキーをループし、それぞれを要求するクエリを使用して を作成できます。遅くなりますが、テーブル内のすべてのキーをリストする方法を提供する限り、機能します。

最終的に、それらSELECTを与えると、何らかの方法でコピーする能力が与えられます。

于 2012-08-01T13:10:39.987 に答える