PostgreSQLは、プロシージャのソースコード、ユーザーまたはデータベースリストなどの可視性の制限を実際にはサポートしていません。最善の方法は、それを受け入れるか、かなりの犠牲を払って調べるのがやや難しいCまたはPL/Javaでプロシージャを実装することです。実装がより複雑になります。
一般に、データベース/テーブルの所有者をDBの日常の運用ユーザーにすることはできません。新しいユーザーを作成し、GRANT
必要な権限のみを作成します。
ほとんどのシステムカタログにはデフォルトのSELECT
権限が付与されているため、アクセスを明示的に制限してから、データベースの所有者とそれを持っている必要のある他のユーザーにアクセスpublic
を明示的に制限する必要があります。たとえば、プロシージャソースへのアクセスを制限する場合は、へのアクセスを制限することをお勧めします。このようなアプローチは制限されており、脆弱です(rootは常にPostgreSQLスーパーユーザーアクセスを取得でき、そこから何でも実行できます)が、おそらくそれはあなたの目的には問題ないとおっしゃっています。REVOKE
GRANT
pg_proc
システムカタログの操作は実際にはサポートされておらず、JDBC、psqlなどのメタデータアクセスで問題が発生する可能性があります。この関連する回答を参照してください。カタログをいじって何かが壊れた場合、あなたはその断片を保持することができます。
ところで、カタログを変更する場合は、ここで手動で変更されたカタログを使用してデータベースについて質問しないようにしてください。少なくとも、システムカタログを台無しにしたことと、正確に何をしたかを非常に明確に指定してください。可能であれば、最初に変更されていないデータベースで問題を再現してください。