Hello !
I'm trying to use postgresql in an application that by design will give access to users to a subset of the database.
For example for customers access to products_view (wich will only show public offers), orders (only their own orders).
I'll provide an application as user interface for the data.
For that I'll give for each of then a role in the database that will belong to a group role customers_group.
The customers_group only has access to the views/functions that I'll specify.
Till here no problem postgresql do that pretty well.
My
concern is once I give login access to any user, even without grant
him/her any access to any database, he/she can using an application
like pgadmin3 view all databases/roles/functions/table-definitions on
my server. And that was not my intention.
Removing all from public doesn't work : revoke all on schema public from public;
What
I think would be the server behavior when I create a role with login
access an say that I only grant access to one view like this:
create role oneuser login;
grant select on somedatabase.someview to oneuser;
In
that case when the user login the only thing he/she sees is the view
database.someview, even when they use pgadmin3 to connect.
Actually he/she can see with pgadmin3 : all databases, all roles
and it's right access, all tables on every database (no access to
data), all functions, all triggers, all table definitions.
The above isn't the intention to a user with a restrict view of the database.
Can I achieve it actually, if not how hard could be to implement that in the official release ?
Thanks in advance for any feedback/ideas !