1

非スーパーユーザーがpostgresqlサーバーで他のユーザーを見るのを禁止するにはどうすればよいですか?

元。現在ログインしているユーザーがスーパーユーザーでない場合、

SELECT * from pg_roles;

また

\ du

彼の役割を持つ行のみである必要があります

4

2 に答える 2

3

システムカタログの認証IDテーブルへのアクセスを取り消すことができます。

REVOKE SELECT ON pg_catalog.pg_authid FROM public;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;

アクセスを取り消すだけpg_rolesでは不十分であることに注意してくださいpg_roles。ビューオーバーだけでありpg_authid、ビュークエリを手動で実行するか、同じクエリで新しいビューを定義するのは簡単です。information_schemaビューも直接使用され、へのpg_authidアクセスを取り消しても影響を受けませんpg_rolespg_rolesへのアクセスを取り消した場合は、へのアクセスを取り消す必要はありませんpg_authid

グローバルテーブルへのアクセスを取り消すことは、データベースごとの操作であることに注意してください。

システムカタログへのアクセスを取り消すと、次のような副作用が発生する可能性があります。

  • 一部のシステム機能が期待どおりに機能しない
  • JDBCドライバーなどのツールの一部のメタデータ操作が失敗する
  • ...など

通常、サポートされているとは見なされません。

于 2012-10-21T23:51:35.097 に答える
0
revoke select on pg_roles from public;
于 2012-10-21T17:14:00.183 に答える