2017-03-28 4 views
0

権限のないデータベースの新しいユーザーを作成すると、この新しいユーザーはすべてのスキーマ/テーブルなどを参照できますが、アクセスできません。私はこれらの特権を取り消したいが、どうすればいいのか分からない。Postgresユーザーはすべてのスキーマ/テーブルを表示します

これは私がユーザーを作成する方法である:この記事をもとに

CREATE USER wouter_test WITH PASSWORD 'wouter_test' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE NOCREATEUSER INHERIT; 

私はそれが公共のスキーマが含まれているパブリックスキーマ情報へのユーザーが持っている権限で行う必要があり考えた:https://dba.stackexchange.com/questions/98892/minimal-grants-for-readonly-single-table-access-on-postgresql

wikisiteに基づいて:https://wiki.postgresql.org/wiki/Shared_Database_Hosting は、私はそれはwoはなかった

REVOKE ALL ON SCHEMA public FROM wouter_test; 

このコマンドを使用rk。以下は

REVOKE connect ON DATABASE klm FROM wouter_test; 

klmと呼ばれるデータベースを見て、アクセスしてからユーザーを防ぐために)のいずれかに動作していないようでした。しかし、まだ利用者は、pgAdminでで、(klmを含む)すべてのデータベース、スキーマとテーブルを見ることができます。

私は間違っていますか?

+0

あなたは** 'PUBLIC' **役割について協議をリンクさDBAの答えではなく、' public'について**スキーマ**。 (それは代わりにそれに権利を与える/取り消すと、完全にドロップすることができるので、技術的には、それは、あまりにもスキーマに言及したが、それだけは通常使用されていないだと言う。) – pozs

+0

公共的な役割ができますので、あなたが、私は公共の役割を取り消す必要があります示唆くださいユーザーは、データベース構造を確認するには? –

+0

まだ作成されていないユーザー/ロールの権限を管理する場合は、通常、 'PUBLIC'を許可/取り消したいとします(ただし、' PUBLIC'はすでに作成済みのユーザーも対象としています)。 – pozs

答えて

1

あなたはREVOKE ... FROM PUBLIC使用オブジェクトにすべてのユーザーを禁止することができますが、そのようオブジェクトを見てからユーザーを維持することはできません。

あなたは、このようなシステム・カタログ表に対する権限を取り消すを試すことができます:

REVOKE SELECT ON pg_catalog.pg_class FROM PUBLIC; 

データベース内のテーブルを見てから人々を守るであろう。

データベースを機能させておく必要がありますが、これらのテーブルから読み取ることができると期待しているクライアントプログラムpsqlなどのエラーが発生します。

関連する問題