Postgres: Restricting users ability to view schemas - postgresql

I am currently working within Postgres, and am in the process of creating some users. Whilst creating these user and testing them I've noticed that they're able to view more Schemas than they have access to. In addition to this they can view restricted Schemas tables, views, and functions. This isn't ideal.
When creating users and their permissions is there a way to have a user setup in such a way that they're only able to view certain Schemas and not all Schemas at large within our database?
I should also mention that these users would be viewing our postgres database utilizing either PgAdmin, or Tableau.

Yes. Use the command GRANT USAGE ON [schemaname] TO [username] or REVOKE USAGE ON [schemaname] FROM [username] to control access to the Schema itself.
You might need to do REVOKE USAGE ON [schemaname] FROM public to remove the default access permissions as well.
I suggest reviewing https://www.postgresql.org/docs/current/static/sql-grant.html for the full set of GRANT commands available as you may need to grant/revoke read/write access on some tables as well.

Related

How to grant or revoke LIBRARYADMAUTH authority in DB2

I know that LIBRARYADMAUTH is for future use but since it's a requirement so, is there any way to grant or revoke this to users?
No.
If you see in the documentation for a catalog view "for future use", then it means that there was some planning but no use yet. Catalog structures can only change on major versions, so sometimes new fields are put in "just in case". If you would be able to grant a privilege, then it would be documented as part of the GRANT statements.
See this blog entry about a guided tour of the Db2 catalog.

Postgres Template Access Privileges

I am currently making a website using node.js/PostgreSQL, and it needs to create copies of a template database that has many specific access privileges, or otherwise it won't work properly. I am currently using this query to do it:
CREATE DATABASE test WITH TEMPLATE db_template OWNER user1
This works really well, except for the fact that the access privileges for the database object do not copy over. I was hoping someone knew of a way to make it so the template also copies over the privileges, or a query to copy privileges from one database to another.

Postgres Restrict Users from taking db dump

I have an application where security and data theft are primary concerns. I am using Postgres 9.4 on RDS by AWS.
I have several users who need read permission on the db. I know that these users can essentially write a script to scrape all the data from the db but is there a way to deny them from using the pg_dump utility.
I am not sure what code examples I can provide for the same.
Is there any alternate strategy to use here? To share db data with developers without allowing them to take dumps of the same?

How do I handle webapp users in PostgreSQL?

Previously I was using databases from BaaS (Backend as a Service) - Parse, Backendless, Firebase - this services has everything I need to manage users of my webapps: tokens handling, owner policies etc.
How do I manage webapp users in own database? (PostgreSQL 9.4)
Is it suppose to be just a regular table, which will contain columns "login", "password" etc. or there are specific tools to implement that?
How should I handle tokens? Should I store it somehow in database, or tokens suppose to be stored in my server and are not bind to database at all?
How do I implement owner policies? Are there some specific tools in Postgres for this, or I should simply create the column "ownerId" in each table and use it as Foreign Key?
If you know good articles on this topic - please, post a links - it will be very helpful!
I would search for it in google, but I've found nothing but articles about database users handling. I assume, this is not what I'm looking for.
Regular table or postgrsql ROLE system
Usually tokens are on application side
Postgres 9.5 have row security policies but you can implement owner policy by yourself. Hard to say what database features you have to use without
assumptions of the project.

LDAP for PostgreSQL

Requires upload user information from Active Directory.
I found on the Internet a few additions that provide this opportunity: multicorn and ldap_fdw.
The problem is that I can not figure out how to filter the result
For example multicorn allows you to specify the directory where to search (path) and the object of the search (objectClass). But this is not enough. It is necessary to restrict the people who are in a particular group.
How to do it?
Postgres uses LDAP only to check password. You must still create roles with proper Postgres options, heritage and grants.
To create roles dynamically from LDAP rather than creating them manually without password, you can use a tool like ldap2pg.
Using ldap_fdw or multicorn should not be useful for this. These extensions are meant to expose foreign data to APP, not to extend Postgres internals.
Cheers,