データベースへの役割ベースのアクセスが必要です。新しいユーザーを作成し、このユーザーにテーブルへのアクセスのみを選択させたいのですが、これもデフォルトでコピーされます。このユーザーへのこのコピー アクセス権を取り消したいです。この文脈での助けは本当にかなりのものです。
どうもありがとう!!!
データベースへの役割ベースのアクセスが必要です。新しいユーザーを作成し、このユーザーにテーブルへのアクセスのみを選択させたいのですが、これもデフォルトでコピーされます。このユーザーへのこのコピー アクセス権を取り消したいです。この文脈での助けは本当にかなりのものです。
どうもありがとう!!!
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
を与えると、何らかの方法でコピーする能力が与えられます。